refactor(module): 重构格式化,并添加菜单一键复制功能

This commit is contained in:
2025-07-30 21:12:14 +08:00
parent 9d49d8a7e9
commit 46f3642aed
172 changed files with 1991 additions and 1042 deletions
+1
View File
@@ -36,6 +36,7 @@ https://github.com/odboy-tianjun/cutejava
- 对一些常用地前端组件封装:表格数据请求、数据字典等 - 对一些常用地前端组件封装:表格数据请求、数据字典等
- 前后端统一异常拦截处理,统一输出异常,避免繁琐的判断 - 前后端统一异常拦截处理,统一输出异常,避免繁琐的判断
- 支持在线用户管理与服务器性能监控,支持限制单用户登录 - 支持在线用户管理与服务器性能监控,支持限制单用户登录
- 支持一键复制菜单项,避免菜单繁琐配置
#### 系统功能 #### 系统功能
View File
@@ -68,14 +68,14 @@
<script> <script>
import CutePipelineNode from '@/views/components/dev/CutePipelineNode' import CutePipelineNode from '@/views/components/dev/CutePipelineNode'
import { getPipelineTemplate } from '@/api/devops/pipelineTemplate' import { getPipelineTemplate } from '@/api/pipeline/pipelineTemplate'
import { import {
queryLastPipelineDetailWs, queryLastPipelineDetailWs,
restartPipeline, restartPipeline,
retryPipeline, retryPipeline,
startPipeline, startPipeline,
stopPipeline stopPipeline
} from '@/api/devops/pipelineInstance' } from '@/api/pipeline/pipelineInstance'
import { CountArraysObjectByPropKey } from '@/utils/CsUtil' import { CountArraysObjectByPropKey } from '@/utils/CsUtil'
import CsMessage from '@/utils/elementui/CsMessage' import CsMessage from '@/utils/elementui/CsMessage'
import CsWsClient from '@/utils/CsWsClient' import CsWsClient from '@/utils/CsWsClient'
@@ -22,9 +22,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import java.lang.annotation.*; import java.lang.annotation.*;
/** /**
* Annotation for mapping HTTP {@code DELETE} requests onto specific handler * Annotation for mapping HTTP {@code DELETE} requests onto specific handler methods. 支持匿名访问 DeleteMapping
* methods.
* 支持匿名访问 DeleteMapping
* *
* @see AnonymousGetMapping * @see AnonymousGetMapping
* @see AnonymousPostMapping * @see AnonymousPostMapping
@@ -42,43 +40,36 @@ public @interface AnonymousDeleteMapping {
/** /**
* Alias for {@link RequestMapping#name}. * Alias for {@link RequestMapping#name}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String name() default "";
String name() default "";
/** /**
* Alias for {@link RequestMapping#value}. * Alias for {@link RequestMapping#value}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] value() default {};
String[] value() default {};
/** /**
* Alias for {@link RequestMapping#path}. * Alias for {@link RequestMapping#path}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] path() default {};
String[] path() default {};
/** /**
* Alias for {@link RequestMapping#params}. * Alias for {@link RequestMapping#params}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] params() default {};
String[] params() default {};
/** /**
* Alias for {@link RequestMapping#headers}. * Alias for {@link RequestMapping#headers}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] headers() default {};
String[] headers() default {};
/** /**
* Alias for {@link RequestMapping#consumes}. * Alias for {@link RequestMapping#consumes}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] consumes() default {};
String[] consumes() default {};
/** /**
* Alias for {@link RequestMapping#produces}. * Alias for {@link RequestMapping#produces}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] produces() default {};
String[] produces() default {};
} }
@@ -22,8 +22,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import java.lang.annotation.*; import java.lang.annotation.*;
/** /**
* Annotation for mapping HTTP {@code GET} requests onto specific handler * Annotation for mapping HTTP {@code GET} requests onto specific handler methods.
* methods.
* <p> * <p>
* 支持匿名访问 GetMapping * 支持匿名访问 GetMapping
* *
@@ -39,45 +38,38 @@ public @interface AnonymousGetMapping {
/** /**
* Alias for {@link RequestMapping#name}. * Alias for {@link RequestMapping#name}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String name() default "";
String name() default "";
/** /**
* Alias for {@link RequestMapping#value}. * Alias for {@link RequestMapping#value}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] value() default {};
String[] value() default {};
/** /**
* Alias for {@link RequestMapping#path}. * Alias for {@link RequestMapping#path}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] path() default {};
String[] path() default {};
/** /**
* Alias for {@link RequestMapping#params}. * Alias for {@link RequestMapping#params}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] params() default {};
String[] params() default {};
/** /**
* Alias for {@link RequestMapping#headers}. * Alias for {@link RequestMapping#headers}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] headers() default {};
String[] headers() default {};
/** /**
* Alias for {@link RequestMapping#consumes}. * Alias for {@link RequestMapping#consumes}.
* *
* @since 4.3.5 * @since 4.3.5
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] consumes() default {};
String[] consumes() default {};
/** /**
* Alias for {@link RequestMapping#produces}. * Alias for {@link RequestMapping#produces}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] produces() default {};
String[] produces() default {};
} }
@@ -22,9 +22,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import java.lang.annotation.*; import java.lang.annotation.*;
/** /**
* Annotation for mapping HTTP {@code PATCH} requests onto specific handler * Annotation for mapping HTTP {@code PATCH} requests onto specific handler methods. 支持匿名访问 PatchMapping
* methods.
* 支持匿名访问 PatchMapping
* *
* @see AnonymousGetMapping * @see AnonymousGetMapping
* @see AnonymousPostMapping * @see AnonymousPostMapping
@@ -42,43 +40,36 @@ public @interface AnonymousPatchMapping {
/** /**
* Alias for {@link RequestMapping#name}. * Alias for {@link RequestMapping#name}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String name() default "";
String name() default "";
/** /**
* Alias for {@link RequestMapping#value}. * Alias for {@link RequestMapping#value}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] value() default {};
String[] value() default {};
/** /**
* Alias for {@link RequestMapping#path}. * Alias for {@link RequestMapping#path}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] path() default {};
String[] path() default {};
/** /**
* Alias for {@link RequestMapping#params}. * Alias for {@link RequestMapping#params}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] params() default {};
String[] params() default {};
/** /**
* Alias for {@link RequestMapping#headers}. * Alias for {@link RequestMapping#headers}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] headers() default {};
String[] headers() default {};
/** /**
* Alias for {@link RequestMapping#consumes}. * Alias for {@link RequestMapping#consumes}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] consumes() default {};
String[] consumes() default {};
/** /**
* Alias for {@link RequestMapping#produces}. * Alias for {@link RequestMapping#produces}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] produces() default {};
String[] produces() default {};
} }
@@ -22,9 +22,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import java.lang.annotation.*; import java.lang.annotation.*;
/** /**
* Annotation for mapping HTTP {@code POST} requests onto specific handler * Annotation for mapping HTTP {@code POST} requests onto specific handler methods. 支持匿名访问 PostMapping
* methods.
* 支持匿名访问 PostMapping
* *
* @see AnonymousGetMapping * @see AnonymousGetMapping
* @see AnonymousPostMapping * @see AnonymousPostMapping
@@ -42,43 +40,36 @@ public @interface AnonymousPostMapping {
/** /**
* Alias for {@link RequestMapping#name}. * Alias for {@link RequestMapping#name}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String name() default "";
String name() default "";
/** /**
* Alias for {@link RequestMapping#value}. * Alias for {@link RequestMapping#value}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] value() default {};
String[] value() default {};
/** /**
* Alias for {@link RequestMapping#path}. * Alias for {@link RequestMapping#path}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] path() default {};
String[] path() default {};
/** /**
* Alias for {@link RequestMapping#params}. * Alias for {@link RequestMapping#params}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] params() default {};
String[] params() default {};
/** /**
* Alias for {@link RequestMapping#headers}. * Alias for {@link RequestMapping#headers}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] headers() default {};
String[] headers() default {};
/** /**
* Alias for {@link RequestMapping#consumes}. * Alias for {@link RequestMapping#consumes}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] consumes() default {};
String[] consumes() default {};
/** /**
* Alias for {@link RequestMapping#produces}. * Alias for {@link RequestMapping#produces}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] produces() default {};
String[] produces() default {};
} }
@@ -22,9 +22,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import java.lang.annotation.*; import java.lang.annotation.*;
/** /**
* Annotation for mapping HTTP {@code PUT} requests onto specific handler * Annotation for mapping HTTP {@code PUT} requests onto specific handler methods. 支持匿名访问 PutMapping
* methods.
* 支持匿名访问 PutMapping
* *
* @see AnonymousGetMapping * @see AnonymousGetMapping
* @see AnonymousPostMapping * @see AnonymousPostMapping
@@ -42,43 +40,36 @@ public @interface AnonymousPutMapping {
/** /**
* Alias for {@link RequestMapping#name}. * Alias for {@link RequestMapping#name}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String name() default "";
String name() default "";
/** /**
* Alias for {@link RequestMapping#value}. * Alias for {@link RequestMapping#value}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] value() default {};
String[] value() default {};
/** /**
* Alias for {@link RequestMapping#path}. * Alias for {@link RequestMapping#path}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] path() default {};
String[] path() default {};
/** /**
* Alias for {@link RequestMapping#params}. * Alias for {@link RequestMapping#params}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] params() default {};
String[] params() default {};
/** /**
* Alias for {@link RequestMapping#headers}. * Alias for {@link RequestMapping#headers}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] headers() default {};
String[] headers() default {};
/** /**
* Alias for {@link RequestMapping#consumes}. * Alias for {@link RequestMapping#consumes}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] consumes() default {};
String[] consumes() default {};
/** /**
* Alias for {@link RequestMapping#produces}. * Alias for {@link RequestMapping#produces}.
*/ */
@AliasFor(annotation = RequestMapping.class) @AliasFor(annotation = RequestMapping.class) String[] produces() default {};
String[] produces() default {};
} }
@@ -0,0 +1,34 @@
/*
* Copyright 2021-2025 Odboy
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.base;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public class CsBaseCreateTimeTb extends CsObject {
@TableField(fill = FieldFill.INSERT)
@ApiModelProperty(value = "创建时间: yyyy-MM-dd HH:mm:ss", hidden = true)
private Date createTime;
}
@@ -0,0 +1,38 @@
/*
* Copyright 2021-2025 Odboy
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.base;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public class CsBaseTimeTb extends CsObject {
@TableField(fill = FieldFill.INSERT)
@ApiModelProperty(value = "创建时间: yyyy-MM-dd HH:mm:ss", hidden = true)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
@ApiModelProperty(value = "更新时间: yyyy-MM-dd HH:mm:ss", hidden = true)
private Date updateTime;
}
@@ -0,0 +1,34 @@
/*
* Copyright 2021-2025 Odboy
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.base;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public class CsBaseUpdateTimeTb extends CsObject {
@TableField(fill = FieldFill.INSERT_UPDATE)
@ApiModelProperty(value = "更新时间: yyyy-MM-dd HH:mm:ss", hidden = true)
private Date updateTime;
}
@@ -21,11 +21,9 @@ import com.baomidou.mybatisplus.annotation.TableLogic;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.springframework.data.annotation.CreatedBy; import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.LastModifiedBy; import org.springframework.data.annotation.LastModifiedBy;
import java.lang.reflect.Field;
import java.util.Date; import java.util.Date;
/** /**
@@ -55,27 +53,4 @@ public class CsBaseUserTimeLogicTb extends CsObject {
@TableLogic @TableLogic
@TableField("available") @TableField("available")
private Integer available; private Integer available;
/* 分组校验 */
public @interface Create {
}
/* 分组校验 */
public @interface Update {
}
@Override
public String toString() {
ToStringBuilder builder = new ToStringBuilder(this);
Field[] fields = this.getClass().getDeclaredFields();
try {
for (Field f : fields) {
f.setAccessible(true);
builder.append(f.getName(), f.get(this)).append("\n");
}
} catch (Exception e) {
builder.append("toString builder encounter an error");
}
return builder.toString();
}
} }
@@ -28,7 +28,6 @@ import org.springframework.data.annotation.LastModifiedBy;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.Date; import java.util.Date;
@Getter @Getter
@Setter @Setter
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@@ -15,6 +15,7 @@
*/ */
package cn.odboy.base; package cn.odboy.base;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@@ -30,14 +31,21 @@ import java.util.List;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
public class CsResultVo<T> extends CsObject { public class CsPageResultVo<T> extends CsObject {
private T content; private T content;
private long totalElements; private long totalElements;
public static <T> CsResultVo<List<T>> emptyListData() { public static <T> CsPageResultVo<List<T>> emptyListData() {
CsResultVo<List<T>> result = new CsResultVo<>(); CsPageResultVo<List<T>> result = new CsPageResultVo<>();
result.setTotalElements(0); result.setTotalElements(0);
result.setContent(new ArrayList<>()); result.setContent(new ArrayList<>());
return result; return result;
} }
public static <T> CsPageResultVo<List<T>> listData(IPage<T> page) {
CsPageResultVo<List<T>> result = new CsPageResultVo<>();
result.setTotalElements(page.getTotal());
result.setContent(page.getRecords());
return result;
}
} }
@@ -22,11 +22,7 @@ import lombok.Getter;
@AllArgsConstructor @AllArgsConstructor
public enum FileTypeEnum { public enum FileTypeEnum {
/* 文件类型 */ /* 文件类型 */
IMAGE("image", "图片"), IMAGE("image", "图片"), DOC("doc", "文档"), VOICE("voice", "音频"), VIDEO("video", "视频"), OTHER("other", "其他");
DOC("doc", "文档"),
VOICE("voice", "音频"),
VIDEO("video", "视频"),
OTHER("other", "其他");
private final String code; private final String code;
private final String description; private final String description;
@@ -43,11 +43,6 @@ public class BootApplication {
String port = env.getProperty("server.port"); String port = env.getProperty("server.port");
String path = StrUtil.isEmpty(env.getProperty("config.servlet.context-path")) ? "" : env.getProperty("config.servlet.context-path"); String path = StrUtil.isEmpty(env.getProperty("config.servlet.context-path")) ? "" : env.getProperty("config.servlet.context-path");
log.info( log.info(
"\n----------------------------------------------------------\n\t" "\n----------------------------------------------------------\n\t" + "Application is running! Access URLs:\n\t" + "Local: \t\thttp://localhost:" + port + path + "/\n\t" + "External: \thttp://" + ip + ":" + port + path + "/\n\t" + "Swagger文档: \thttp://" + ip + ":" + port + path + "/doc.html\n" + "----------------------------------------------------------");
+ "Application is running! Access URLs:\n\t"
+ "Local: \t\thttp://localhost:" + port + path + "/\n\t"
+ "External: \thttp://" + ip + ":" + port + path + "/\n\t"
+ "Swagger文档: \thttp://" + ip + ":" + port + path + "/doc.html\n"
+ "----------------------------------------------------------");
} }
} }
@@ -12,6 +12,6 @@ import java.util.Objects;
public class CsRequestHolder { public class CsRequestHolder {
public static HttpServletRequest getHttpServletRequest() { public static HttpServletRequest getHttpServletRequest() {
return ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); return ((ServletRequestAttributes)Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
} }
} }
@@ -86,7 +86,7 @@ public class CsScriptHelper {
// 执行脚本 // 执行脚本
engine.eval(script); engine.eval(script);
// 由ScriptEngines实现的接口, 其方法允许调用以前已执行的脚本中的过程。 // 由ScriptEngines实现的接口, 其方法允许调用以前已执行的脚本中的过程。
Invocable inv = (Invocable) engine; Invocable inv = (Invocable)engine;
// 调用全局函数, 并传入参数 // 调用全局函数, 并传入参数
return inv.invokeFunction(functionName, args); return inv.invokeFunction(functionName, args);
} catch (ScriptException e) { } catch (ScriptException e) {
@@ -27,7 +27,6 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@Slf4j @Slf4j
@SuppressWarnings({"unchecked", "all"}) @SuppressWarnings({"unchecked", "all"})
public class CsSpringBeanHolder implements ApplicationContextAware, DisposableBean { public class CsSpringBeanHolder implements ApplicationContextAware, DisposableBean {
@@ -37,8 +36,7 @@ public class CsSpringBeanHolder implements ApplicationContextAware, DisposableBe
private static boolean addCallback = true; private static boolean addCallback = true;
/** /**
* 针对 某些初始化方法, 在SpringContextHolder 未初始化时 提交回调方法。 * 针对 某些初始化方法, 在SpringContextHolder 未初始化时 提交回调方法。 在SpringContextHolder 初始化后, 进行回调使用
* 在SpringContextHolder 初始化后, 进行回调使用
* *
* @param callBack 回调函数 * @param callBack 回调函数
*/ */
@@ -56,7 +54,7 @@ public class CsSpringBeanHolder implements ApplicationContextAware, DisposableBe
*/ */
public static <T> T getBean(String name) { public static <T> T getBean(String name) {
assertContextInjected(); assertContextInjected();
return (T) applicationContext.getBean(name); return (T)applicationContext.getBean(name);
} }
/** /**
@@ -110,7 +108,8 @@ public class CsSpringBeanHolder implements ApplicationContextAware, DisposableBe
*/ */
private static void assertContextInjected() { private static void assertContextInjected() {
if (applicationContext == null) { if (applicationContext == null) {
throw new IllegalStateException("applicaitonContext属性未注入, 请在applicationContext" + ".xml中定义SpringContextHolder或在SpringBoot启动类中注册SpringContextHolder."); throw new IllegalStateException(
"applicaitonContext属性未注入, 请在applicationContext" + ".xml中定义SpringContextHolder或在SpringBoot启动类中注册SpringContextHolder.");
} }
} }
@@ -58,25 +58,14 @@ public class SwaggerConfig {
@Bean @Bean
public Docket createRestApi() { public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2) return new Docket(DocumentationType.SWAGGER_2).enable(properties.getSwagger().getEnabled()).pathMapping("/").apiInfo(apiInfo()).select()
.enable(properties.getSwagger().getEnabled()) .paths(PathSelectors.regex("^(?!/error).*")).paths(PathSelectors.any()).build()
.pathMapping("/") //添加登陆认证
.apiInfo(apiInfo()) .securitySchemes(securitySchemes()).securityContexts(securityContexts());
.select()
.paths(PathSelectors.regex("^(?!/error).*"))
.paths(PathSelectors.any())
.build()
//添加登陆认证
.securitySchemes(securitySchemes())
.securityContexts(securityContexts());
} }
private ApiInfo apiInfo() { private ApiInfo apiInfo() {
return new ApiInfoBuilder() return new ApiInfoBuilder().description("一个简单且易上手的 Spring boot 后台管理框架").title("CuteJava 接口文档").version("1.4.1").build();
.description("一个简单且易上手的 Spring boot 后台管理框架")
.title("CuteJava 接口文档")
.version("1.4.1")
.build();
} }
private List<SecurityScheme> securitySchemes() { private List<SecurityScheme> securitySchemes() {
@@ -98,12 +87,9 @@ public class SwaggerConfig {
Set<String> urls = CsAnonTagUtil.getAllAnonymousUrl(applicationContext); Set<String> urls = CsAnonTagUtil.getAllAnonymousUrl(applicationContext);
urls = urls.stream().filter(url -> !"/".equals(url)).collect(Collectors.toSet()); urls = urls.stream().filter(url -> !"/".equals(url)).collect(Collectors.toSet());
String regExp = "^(?!" + apiPath + String.join("|" + apiPath, urls) + ").*$"; String regExp = "^(?!" + apiPath + String.join("|" + apiPath, urls) + ").*$";
return SecurityContext.builder() return SecurityContext.builder().securityReferences(defaultAuth()).operationSelector(o -> o.requestMappingPattern()
.securityReferences(defaultAuth()) // 排除不需要认证的接口
.operationSelector(o -> o.requestMappingPattern() .matches(regExp)).build();
// 排除不需要认证的接口
.matches(regExp))
.build();
} }
private List<SecurityReference> defaultAuth() { private List<SecurityReference> defaultAuth() {
@@ -134,9 +120,7 @@ public class SwaggerConfig {
} }
private <T extends RequestMappingInfoHandlerMapping> void customizeSpringfoxHandlerMappings(List<T> mappings) { private <T extends RequestMappingInfoHandlerMapping> void customizeSpringfoxHandlerMappings(List<T> mappings) {
List<T> filteredMappings = mappings.stream() List<T> filteredMappings = mappings.stream().filter(mapping -> mapping.getPatternParser() == null).collect(Collectors.toList());
.filter(mapping -> mapping.getPatternParser() == null)
.collect(Collectors.toList());
mappings.clear(); mappings.clear();
mappings.addAll(filteredMappings); mappings.addAll(filteredMappings);
} }
@@ -146,7 +130,7 @@ public class SwaggerConfig {
if (field != null) { if (field != null) {
field.setAccessible(true); field.setAccessible(true);
try { try {
return (List<RequestMappingInfoHandlerMapping>) field.get(bean); return (List<RequestMappingInfoHandlerMapping>)field.get(bean);
} catch (IllegalAccessException e) { } catch (IllegalAccessException e) {
throw new IllegalStateException("Failed to access handlerMappings field", e); throw new IllegalStateException("Failed to access handlerMappings field", e);
} }
@@ -17,7 +17,6 @@ package cn.odboy.framework.exception.handler;
import lombok.Data; import lombok.Data;
@Data @Data
public final class ApiError { public final class ApiError {
@@ -72,7 +72,7 @@ public class GlobalExceptionHandler {
ObjectError objectError = e.getBindingResult().getAllErrors().get(0); ObjectError objectError = e.getBindingResult().getAllErrors().get(0);
String message = objectError.getDefaultMessage(); String message = objectError.getDefaultMessage();
if (objectError instanceof FieldError) { if (objectError instanceof FieldError) {
message = ((FieldError) objectError).getField() + ": " + message; message = ((FieldError)objectError).getField() + ": " + message;
} }
return buildResponseEntity(ApiError.error(message)); return buildResponseEntity(ApiError.error(message));
} }
@@ -51,11 +51,11 @@ public class HealthCheckController {
return healthCheckPointService.doLiveness(); return healthCheckPointService.doLiveness();
} }
// /** // /**
// * 访问首页提示 // * 访问首页提示
// */ // */
// @AnonymousGetMapping("/") // @AnonymousGetMapping("/")
// public String index() { // public String index() {
// return "success"; // return "success";
// } // }
} }
@@ -60,13 +60,7 @@ public class MpCustomP6SpyLogger implements MessageFormattingStrategy {
sql = sql.replaceAll("\\s+", " ").trim(); sql = sql.replaceAll("\\s+", " ").trim();
} }
// 格式化并加上颜色 // 格式化并加上颜色
return String.format( return String.format("CuteJava - %s%s%s %s[%s] %sREVIEW_SQL [Interval: %dms]%s -> %s;", RED, now, RESET, GREEN, Thread.currentThread().getName(), BLUE,
"CuteJava - %s%s%s %s[%s] %sREVIEW_SQL [Interval: %dms]%s -> %s;", elapsed, RESET, sql);
RED, now, RESET,
GREEN, Thread.currentThread().getName(),
BLUE,
elapsed, RESET,
sql
);
} }
} }
@@ -34,13 +34,11 @@ import java.io.IOException;
@SuppressWarnings({"unchecked", "all"}) @SuppressWarnings({"unchecked", "all"})
@ConditionalOnWebApplication @ConditionalOnWebApplication
@AutoConfigureAfter(DruidDataSourceAutoConfigure.class) @AutoConfigureAfter(DruidDataSourceAutoConfigure.class)
@ConditionalOnProperty(name = "spring.datasource.druid.stat-view-servlet.enabled", @ConditionalOnProperty(name = "spring.datasource.druid.stat-view-servlet.enabled", havingValue = "true", matchIfMissing = true)
havingValue = "true", matchIfMissing = true)
public class RemoveDruidAdConfig { public class RemoveDruidAdConfig {
/** /**
* 方法名: removeDruidAdFilterRegistrationBean * 方法名: removeDruidAdFilterRegistrationBean 方法描述 除去页面底部的广告
* 方法描述 除去页面底部的广告
* *
* @param properties com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties * @param properties com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties
* @return org.springframework.boot.web.servlet.FilterRegistrationBean * @return org.springframework.boot.web.servlet.FilterRegistrationBean
@@ -64,8 +62,8 @@ public class RemoveDruidAdConfig {
@Override @Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request; HttpServletRequest httpRequest = (HttpServletRequest)request;
HttpServletResponse httpResponse = (HttpServletResponse) response; HttpServletResponse httpResponse = (HttpServletResponse)response;
if (httpRequest.getRequestURI().endsWith("js/common.js")) { if (httpRequest.getRequestURI().endsWith("js/common.js")) {
// 获取common.js // 获取common.js
String text = Utils.readFromResource(filePath); String text = Utils.readFromResource(filePath);
@@ -18,7 +18,6 @@ package cn.odboy.framework.mybatisplus.core;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.odboy.base.CsBaseUserTimeTb; import cn.odboy.base.CsBaseUserTimeTb;
import cn.odboy.framework.exception.BadRequestException; import cn.odboy.framework.exception.BadRequestException;
import cn.odboy.util.CsFileUtil;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator; import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.*; import com.baomidou.mybatisplus.generator.config.*;
@@ -74,9 +73,8 @@ public class CsMpCmdGenUtil {
public void gen(String moduleName, String tablePrefix, List<String> tableNames) { public void gen(String moduleName, String tablePrefix, List<String> tableNames) {
this.parentModuleName = moduleName; this.parentModuleName = moduleName;
// 1.数据库配置 // 1.数据库配置
DataSourceConfig.Builder dataSourceConfigBuilder = new DataSourceConfig DataSourceConfig.Builder dataSourceConfigBuilder =
.Builder(this.databaseUrl, this.databaseUsername, this.databasePassword) new DataSourceConfig.Builder(this.databaseUrl, this.databaseUsername, this.databasePassword).driverClassName(this.driverClassName);
.driverClassName(this.driverClassName);
dataSourceConfigBuilder.dbQuery(DB_QUERY); dataSourceConfigBuilder.dbQuery(DB_QUERY);
dataSourceConfigBuilder.keyWordsHandler(new MySqlKeyWordsHandler()); dataSourceConfigBuilder.keyWordsHandler(new MySqlKeyWordsHandler());
// 1.1.快速生成器 // 1.1.快速生成器
@@ -103,8 +101,7 @@ public class CsMpCmdGenUtil {
// 5.策略配置 // 5.策略配置
// 设置需要生成的表名 // 设置需要生成的表名
// 设置过滤表前缀 // 设置过滤表前缀
fastAutoGenerator.strategyConfig(getStrategyConfigConsumer(tableNames) fastAutoGenerator.strategyConfig(getStrategyConfigConsumer(tableNames));
);
if (tablePrefix != null) { if (tablePrefix != null) {
// 表前缀, 可多个 // 表前缀, 可多个
fastAutoGenerator.strategyConfig(strategyConfigBuilder -> strategyConfigBuilder.addTablePrefix(tablePrefix)); fastAutoGenerator.strategyConfig(strategyConfigBuilder -> strategyConfigBuilder.addTablePrefix(tablePrefix));
@@ -119,10 +116,8 @@ public class CsMpCmdGenUtil {
// 开启生成@RestController控制器 // 开启生成@RestController控制器
fastAutoGenerator.strategyConfig(strategyConfigBuilder -> strategyConfigBuilder.controllerBuilder().enableRestStyle()); fastAutoGenerator.strategyConfig(strategyConfigBuilder -> strategyConfigBuilder.controllerBuilder().enableRestStyle());
// 如果不需要生成Controller, fastAutoGenerator.templateConfig(templateConfig -> templateConfig.controller(""))。5.3.Service策略配置:格式化service接口和实现类的文件名称, 去掉默认的ServiceName前面的I // 如果不需要生成Controller, fastAutoGenerator.templateConfig(templateConfig -> templateConfig.controller(""))。5.3.Service策略配置:格式化service接口和实现类的文件名称, 去掉默认的ServiceName前面的I
fastAutoGenerator.strategyConfig(strategyConfigBuilder -> strategyConfigBuilder fastAutoGenerator.strategyConfig(
.serviceBuilder() strategyConfigBuilder -> strategyConfigBuilder.serviceBuilder().formatServiceFileName("%sService").formatServiceImplFileName("%sServiceImpl"));
.formatServiceFileName("%sService")
.formatServiceImplFileName("%sServiceImpl"));
// 5.4.Mapper策略配置 // 5.4.Mapper策略配置
// 格式化 mapper文件名,格式化xml实现类文件名称 // 格式化 mapper文件名,格式化xml实现类文件名称
fastAutoGenerator.strategyConfig(getStrategyConfigConsumer()); fastAutoGenerator.strategyConfig(getStrategyConfigConsumer());
@@ -131,49 +126,36 @@ public class CsMpCmdGenUtil {
} }
private static Consumer<StrategyConfig.Builder> getEntityConfigConsumer() { private static Consumer<StrategyConfig.Builder> getEntityConfigConsumer() {
return strategyConfigBuilder -> strategyConfigBuilder return strategyConfigBuilder -> strategyConfigBuilder.entityBuilder().enableLombok()
.entityBuilder() // 如果不需要生成注解, 去掉.enableTableFieldAnnotation()
.enableLombok() .enableTableFieldAnnotation().enableFileOverride().naming(NamingStrategy.underline_to_camel).columnNaming(NamingStrategy.underline_to_camel)
// 如果不需要生成注解, 去掉.enableTableFieldAnnotation() .idType(IdType.AUTO);
.enableTableFieldAnnotation()
.enableFileOverride()
.naming(NamingStrategy.underline_to_camel)
.columnNaming(NamingStrategy.underline_to_camel)
.idType(IdType.AUTO);
} }
private static Consumer<StrategyConfig.Builder> getStrategyConfigConsumer(List<String> tableNames) { private static Consumer<StrategyConfig.Builder> getStrategyConfigConsumer(List<String> tableNames) {
return strategyConfigBuilder -> strategyConfigBuilder return strategyConfigBuilder -> strategyConfigBuilder.enableCapitalMode().enableSkipView().disableSqlFilter().addInclude(tableNames)
.enableCapitalMode() // 实体类生成策略
.enableSkipView() .entityBuilder().superClass(CsBaseUserTimeTb.class).addIgnoreColumns("create_time", "update_time", "create_by", "update_by")
.disableSqlFilter() // 开启生成实体时生成字段注解。
.addInclude(tableNames) // 会在实体类的属性前,添加[@TableField("nickname")]
// 实体类生成策略 .enableTableFieldAnnotation().disableSerialVersionUID()
.entityBuilder() // 阶段2:Mapper策略配置
.superClass(CsBaseUserTimeTb.class) .mapperBuilder()
.addIgnoreColumns("create_time", "update_time", "create_by", "update_by") // 开启 @Mapper 注解。
// 开启生成实体时生成字段注解。 // 会在mapper接口上添加注解[@Mapper]
// 会在实体类的属性前,添加[@TableField("nickname")] // .enableMapperAnnotation()
.enableTableFieldAnnotation() // 启用 BaseResultMap 生成。
.disableSerialVersionUID() // 会在mapper.xml文件生成[通用查询映射结果]配置。
// 阶段2:Mapper策略配置 // .enableBaseResultMap()
.mapperBuilder() // 启用 BaseColumnList。
// 开启 @Mapper 注解。 // 会在mapper.xml文件生成[通用查询结果列 ]配置
// 会在mapper接口上添加注解[@Mapper] // .enableBaseColumnList()
// .enableMapperAnnotation() // 阶段4:Controller策略配置
// 启用 BaseResultMap 生成。 .controllerBuilder()
// 会在mapper.xml文件生成[通用查询映射结果]配置。 // 会在控制类中加[@RestController]注解。
// .enableBaseResultMap() .enableRestStyle()
// 启用 BaseColumnList。 // 开启驼峰转连字符
// 会在mapper.xml文件生成[通用查询结果列 ]配置 .enableHyphenStyle().build();
// .enableBaseColumnList()
// 阶段4:Controller策略配置
.controllerBuilder()
// 会在控制类中加[@RestController]注解。
.enableRestStyle()
// 开启驼峰转连字符
.enableHyphenStyle()
.build();
} }
private Consumer<PackageConfig.Builder> getPackageConfigConsumer() { private Consumer<PackageConfig.Builder> getPackageConfigConsumer() {
@@ -181,33 +163,20 @@ public class CsMpCmdGenUtil {
if (StrUtil.isBlank(this.parentModuleName)) { if (StrUtil.isBlank(this.parentModuleName)) {
throw new BadRequestException("模块名称必填"); throw new BadRequestException("模块名称必填");
} }
return packageConfigBuilder -> packageConfigBuilder return packageConfigBuilder -> packageConfigBuilder.parent(this.parentPackageName).moduleName(this.parentModuleName).entity("dal.dataobject")
.parent(this.parentPackageName) .mapper("dal.mysql").service("service").serviceImpl("service.impl").controller("controller")
.moduleName(this.parentModuleName) .pathInfo(Collections.singletonMap(OutputFile.xml, mapperPath));
.entity("dal.dataobject")
.mapper("dal.mysql")
.service("service")
.serviceImpl("service.impl")
.controller("rest")
.pathInfo(Collections.singletonMap(OutputFile.xml, mapperPath));
} }
private static Consumer<GlobalConfig.Builder> getGlobalConfigConsumer() { private static Consumer<GlobalConfig.Builder> getGlobalConfigConsumer() {
String outputDir = CsFileUtil.getTmpDirPath() + "CodeGen"; String outputDir = projectRootPath + "CodeGen";
return globalConfigBuilder -> globalConfigBuilder return globalConfigBuilder -> globalConfigBuilder.enableSwagger().outputDir(outputDir).author("codegen").commentDate("yyyy-MM-dd")
.enableSwagger() .dateType(DateType.TIME_PACK);
.outputDir(outputDir)
.author("codegen")
.commentDate("yyyy-MM-dd")
.dateType(DateType.TIME_PACK);
} }
private static Consumer<StrategyConfig.Builder> getStrategyConfigConsumer() { private static Consumer<StrategyConfig.Builder> getStrategyConfigConsumer() {
return strategyConfigBuilder -> strategyConfigBuilder return strategyConfigBuilder -> strategyConfigBuilder.mapperBuilder().mapperAnnotation(Mapper.class).formatMapperFileName("%sMapper")
.mapperBuilder() .formatXmlFileName("%sMapper").entityBuilder().formatFileName("%sTb");
.mapperAnnotation(Mapper.class)
.formatMapperFileName("%sMapper")
.formatXmlFileName("%sMapper");
} }
private static Consumer<DataSourceConfig.Builder> getDataSourceConfigConsumer() { private static Consumer<DataSourceConfig.Builder> getDataSourceConfigConsumer() {
@@ -124,7 +124,7 @@ public class CsMpQUtil {
} }
private static <R> void handleInOrNotQuery(boolean b, QueryWrapper<R> queryWrapper, String attributeName, Object fieldVal) { private static <R> void handleInOrNotQuery(boolean b, QueryWrapper<R> queryWrapper, String attributeName, Object fieldVal) {
Collection<?> wrapNotInVal = (Collection<?>) fieldVal; Collection<?> wrapNotInVal = (Collection<?>)fieldVal;
if (CollectionUtil.isNotEmpty(wrapNotInVal)) { if (CollectionUtil.isNotEmpty(wrapNotInVal)) {
Optional<?> anyValOptional = wrapNotInVal.stream().findAny(); Optional<?> anyValOptional = wrapNotInVal.stream().findAny();
if (anyValOptional.isPresent()) { if (anyValOptional.isPresent()) {
@@ -150,7 +150,7 @@ public class CsMpQUtil {
private static <R> void handleBetweenQuery(QueryWrapper<R> queryWrapper, Object fieldVal, String finalAttributeName) { private static <R> void handleBetweenQuery(QueryWrapper<R> queryWrapper, Object fieldVal, String finalAttributeName) {
if (fieldVal instanceof List) { if (fieldVal instanceof List) {
List<Object> between = new ArrayList<>((List<?>) fieldVal); List<Object> between = new ArrayList<>((List<?>)fieldVal);
int minLength = 2; int minLength = 2;
if (CollectionUtil.isNotEmpty(between) && between.size() >= minLength) { if (CollectionUtil.isNotEmpty(between) && between.size() >= minLength) {
queryWrapper.between(finalAttributeName, between.get(0), between.get(1)); queryWrapper.between(finalAttributeName, between.get(0), between.get(1));
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.framework.mybatisplus.core.interfaces; package cn.odboy.framework.mybatisplus.core.interfaces;
import cn.odboy.base.CsResultVo; import cn.odboy.base.CsPageResultVo;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
@@ -56,13 +56,13 @@ public interface CsMpEasyService<T> extends IService<T> {
<G> List<G> queryFeatureClazzListByArgs(LambdaQueryWrapper<T> wrapper, Class<G> targetClazz); <G> List<G> queryFeatureClazzListByArgs(LambdaQueryWrapper<T> wrapper, Class<G> targetClazz);
CsResultVo<List<T>> queryClazzPageByArgs(LambdaQueryWrapper<T> wrapper, IPage<T> pageable); CsPageResultVo<List<T>> queryClazzPageByArgs(LambdaQueryWrapper<T> wrapper, IPage<T> pageable);
<G> CsResultVo<List<G>> queryFeatureClazzPageByArgs(LambdaQueryWrapper<T> wrapper, IPage<T> pageable, Class<G> targetClazz); <G> CsPageResultVo<List<G>> queryFeatureClazzPageByArgs(LambdaQueryWrapper<T> wrapper, IPage<T> pageable, Class<G> targetClazz);
<G, Q> CsResultVo<List<G>> queryFeatureClazzPageByArgs(Q criteria, IPage<T> pageable, Class<G> targetClazz); <G, Q> CsPageResultVo<List<G>> queryFeatureClazzPageByArgs(Q criteria, IPage<T> pageable, Class<G> targetClazz);
<Q> CsResultVo<List<T>> queryClazzPageByArgs(Q criteria, IPage<T> pageable); <Q> CsPageResultVo<List<T>> queryClazzPageByArgs(Q criteria, IPage<T> pageable);
int modifyClazzByArgs(LambdaQueryWrapper<T> wrapper, T entity); int modifyClazzByArgs(LambdaQueryWrapper<T> wrapper, T entity);
@@ -18,7 +18,7 @@ package cn.odboy.framework.mybatisplus.core.interfaces;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.ReflectUtil;
import cn.odboy.base.CsResultVo; import cn.odboy.base.CsPageResultVo;
import cn.odboy.util.CsPageUtil; import cn.odboy.util.CsPageUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -136,16 +136,16 @@ public interface CsMpMapper<E> extends BaseMapper<E> {
* @param clazz 期望的对象类型 * @param clazz 期望的对象类型
* @return IPage<T> * @return IPage<T>
*/ */
default <T> CsResultVo<List<T>> queryFeatureClazzPage(Pageable pageable, LambdaQueryWrapper<E> wrapper, Class<T> clazz) { default <T> CsPageResultVo<List<T>> queryFeatureClazzPage(Pageable pageable, LambdaQueryWrapper<E> wrapper, Class<T> clazz) {
int pageNumber = pageable.getPageNumber(); int pageNumber = pageable.getPageNumber();
int pageSize = pageable.getPageSize(); int pageSize = pageable.getPageSize();
pageNumber = pageNumber <= 0 ? 1 : pageNumber; pageNumber = pageNumber <= 0 ? 1 : pageNumber;
pageSize = pageSize <= 0 ? 10 : pageSize; pageSize = pageSize <= 0 ? 10 : pageSize;
IPage<E> pageInfo = this.selectPage(new Page<>(pageNumber, pageSize), wrapper); IPage<E> pageInfo = this.selectPage(new Page<>(pageNumber, pageSize), wrapper);
if (CollUtil.isEmpty(pageInfo.getRecords())) { if (CollUtil.isEmpty(pageInfo.getRecords())) {
return new CsResultVo<>(new ArrayList<>(), pageInfo.getTotal()); return new CsPageResultVo<>(new ArrayList<>(), pageInfo.getTotal());
} }
return new CsResultVo<>(BeanUtil.copyToList(pageInfo.getRecords(), clazz), pageInfo.getTotal()); return new CsPageResultVo<>(BeanUtil.copyToList(pageInfo.getRecords(), clazz), pageInfo.getTotal());
} }
/** /**
@@ -156,7 +156,7 @@ public interface CsMpMapper<E> extends BaseMapper<E> {
* @param clazz 期望的对象类型 * @param clazz 期望的对象类型
* @return IPage<T> * @return IPage<T>
*/ */
default <T> CsResultVo<List<T>> queryFeatureClazzPage(Pageable pageable, LambdaQueryChainWrapper<E> wrapper, Class<T> clazz) { default <T> CsPageResultVo<List<T>> queryFeatureClazzPage(Pageable pageable, LambdaQueryChainWrapper<E> wrapper, Class<T> clazz) {
int pageNumber = pageable.getPageNumber(); int pageNumber = pageable.getPageNumber();
int pageSize = pageable.getPageSize(); int pageSize = pageable.getPageSize();
pageNumber = pageNumber <= 0 ? 1 : pageNumber; pageNumber = pageNumber <= 0 ? 1 : pageNumber;
@@ -165,7 +165,7 @@ public interface CsMpMapper<E> extends BaseMapper<E> {
if (CollUtil.isEmpty(pageInfo.getRecords())) { if (CollUtil.isEmpty(pageInfo.getRecords())) {
return CsPageUtil.emptyListData(); return CsPageUtil.emptyListData();
} }
return new CsResultVo<>(BeanUtil.copyToList(pageInfo.getRecords(), clazz), pageInfo.getTotal()); return new CsPageResultVo<>(BeanUtil.copyToList(pageInfo.getRecords(), clazz), pageInfo.getTotal());
} }
/** /**
@@ -17,7 +17,7 @@ package cn.odboy.framework.mybatisplus.core.interfaces;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.odboy.base.CsResultVo; import cn.odboy.base.CsPageResultVo;
import cn.odboy.framework.exception.BadRequestException; import cn.odboy.framework.exception.BadRequestException;
import cn.odboy.framework.mybatisplus.core.CsMpQUtil; import cn.odboy.framework.mybatisplus.core.CsMpQUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -193,12 +193,12 @@ public class CsMpServiceImpl<M extends CsMpMapper<T>, T> extends ServiceImpl<M,
* @param wrapper 制造条件 * @param wrapper 制造条件
* @param pageable 分页参数 * @param pageable 分页参数
*/ */
public CsResultVo<List<T>> queryClazzPageByArgs(LambdaQueryWrapper<T> wrapper, IPage<T> pageable) { public CsPageResultVo<List<T>> queryClazzPageByArgs(LambdaQueryWrapper<T> wrapper, IPage<T> pageable) {
if (wrapper == null) { if (wrapper == null) {
wrapper = new LambdaQueryWrapper<>(); wrapper = new LambdaQueryWrapper<>();
} }
IPage<T> originPageData = baseMapper.selectPage(pageable, wrapper); IPage<T> originPageData = baseMapper.selectPage(pageable, wrapper);
return new CsResultVo<>(originPageData.getRecords(), originPageData.getTotal()); return new CsPageResultVo<>(originPageData.getRecords(), originPageData.getTotal());
} }
/** /**
@@ -208,24 +208,24 @@ public class CsMpServiceImpl<M extends CsMpMapper<T>, T> extends ServiceImpl<M,
* @param pageable 分页参数 * @param pageable 分页参数
* @param targetClazz 目标类型 * @param targetClazz 目标类型
*/ */
public <G> CsResultVo<List<G>> queryFeatureClazzPageByArgs(LambdaQueryWrapper<T> wrapper, IPage<T> pageable, Class<G> targetClazz) { public <G> CsPageResultVo<List<G>> queryFeatureClazzPageByArgs(LambdaQueryWrapper<T> wrapper, IPage<T> pageable, Class<G> targetClazz) {
if (wrapper == null) { if (wrapper == null) {
wrapper = new LambdaQueryWrapper<>(); wrapper = new LambdaQueryWrapper<>();
} }
IPage<T> originPageData = baseMapper.selectPage(pageable, wrapper); IPage<T> originPageData = baseMapper.selectPage(pageable, wrapper);
return new CsResultVo<>(BeanUtil.copyToList(originPageData.getRecords(), targetClazz), originPageData.getTotal()); return new CsPageResultVo<>(BeanUtil.copyToList(originPageData.getRecords(), targetClazz), originPageData.getTotal());
} }
public <G, Q> CsResultVo<List<G>> queryFeatureClazzPageByArgs(Q criteria, IPage<T> pageable, Class<G> targetClazz) { public <G, Q> CsPageResultVo<List<G>> queryFeatureClazzPageByArgs(Q criteria, IPage<T> pageable, Class<G> targetClazz) {
QueryWrapper<T> wrapper = CsMpQUtil.build(criteria); QueryWrapper<T> wrapper = CsMpQUtil.build(criteria);
IPage<T> originPageData = baseMapper.selectPage(pageable, wrapper); IPage<T> originPageData = baseMapper.selectPage(pageable, wrapper);
return new CsResultVo<>(BeanUtil.copyToList(originPageData.getRecords(), targetClazz), originPageData.getTotal()); return new CsPageResultVo<>(BeanUtil.copyToList(originPageData.getRecords(), targetClazz), originPageData.getTotal());
} }
public <Q> CsResultVo<List<T>> queryClazzPageByArgs(Q criteria, IPage<T> pageable) { public <Q> CsPageResultVo<List<T>> queryClazzPageByArgs(Q criteria, IPage<T> pageable) {
QueryWrapper<T> wrapper = CsMpQUtil.build(criteria); QueryWrapper<T> wrapper = CsMpQUtil.build(criteria);
IPage<T> originPageData = baseMapper.selectPage(pageable, wrapper); IPage<T> originPageData = baseMapper.selectPage(pageable, wrapper);
return new CsResultVo<>(originPageData.getRecords(), originPageData.getTotal()); return new CsPageResultVo<>(originPageData.getRecords(), originPageData.getTotal());
} }
/** /**
@@ -117,7 +117,7 @@ public class UserLoginCaptchaSettingModel extends CsObject {
int opt = num(3); int opt = num(3);
// 计算结果 // 计算结果
int res = new int[]{n1 + n2, n1 - n2, n1 * n2}[opt]; int res = new int[] {n1 + n2, n1 - n2, n1 * n2}[opt];
// 转换为字符运算符 // 转换为字符运算符
char optChar = "+-x".charAt(opt); char optChar = "+-x".charAt(opt);
@@ -50,28 +50,21 @@ import java.util.Map;
@AutoConfigureBefore(RedisAutoConfiguration.class) @AutoConfigureBefore(RedisAutoConfiguration.class)
public class RedisConfiguration extends CachingConfigurerSupport { public class RedisConfiguration extends CachingConfigurerSupport {
/** /**
* 自动识别json对象白名单配置(仅允许解析的包名, 范围越小越安全)<br/> * 自动识别json对象白名单配置(仅允许解析的包名, 范围越小越安全)<br/> 未配置可能导致, 登录失败, 反复登录等问题
* 未配置可能导致, 登录失败, 反复登录等问题
*/ */
private static final String[] WHITELIST_STR = { private static final String[] WHITELIST_STR =
"org.springframework", {"org.springframework", "cn.odboy.system.dal.dataobject", "cn.odboy.system.dal.model", "cn.odboy.pipeline.dal.dataobject",
"cn.odboy.system.dal.dataobject", "cn.odboy.pipeline.dal.model", "cn.odboy.pipeline.framework.pipeline.model"};
"cn.odboy.system.dal.model",
"cn.odboy.pipeline.dal.dataobject",
"cn.odboy.pipeline.dal.model",
"cn.odboy.devops.framework.pipeline.model",
};
/** /**
* 设置 redis 数据默认过期时间,默认2小时 * 设置 redis 数据默认过期时间,默认2小时 设置@cacheable 序列化方式
* 设置@cacheable 序列化方式
*/ */
@Bean @Bean
public RedisCacheConfiguration redisCacheConfiguration() { public RedisCacheConfiguration redisCacheConfiguration() {
FastJsonRedisSerializer<Object> fastJsonRedisSerializer = new FastJsonRedisSerializer<>(Object.class); FastJsonRedisSerializer<Object> fastJsonRedisSerializer = new FastJsonRedisSerializer<>(Object.class);
RedisCacheConfiguration configuration = RedisCacheConfiguration.defaultCacheConfig(); RedisCacheConfiguration configuration = RedisCacheConfiguration.defaultCacheConfig();
configuration = configuration.serializeValuesWith(RedisSerializationContext. configuration = configuration.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(fastJsonRedisSerializer))
SerializationPair.fromSerializer(fastJsonRedisSerializer)).entryTtl(Duration.ofHours(2)); .entryTtl(Duration.ofHours(2));
return configuration; return configuration;
} }
@@ -103,9 +96,7 @@ public class RedisConfiguration extends CachingConfigurerSupport {
@Bean @Bean
public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) { public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
RedisCacheConfiguration config = redisCacheConfiguration(); RedisCacheConfiguration config = redisCacheConfiguration();
return RedisCacheManager.builder(redisConnectionFactory) return RedisCacheManager.builder(redisConnectionFactory).cacheDefaults(config).build();
.cacheDefaults(config)
.build();
} }
/** /**
@@ -202,8 +202,8 @@ public class RedisHelper {
public void scanDel(String pattern) { public void scanDel(String pattern) {
ScanOptions options = ScanOptions.scanOptions().match(pattern).build(); ScanOptions options = ScanOptions.scanOptions().match(pattern).build();
try (Cursor<byte[]> cursor = redisTemplate.executeWithStickyConnection( try (Cursor<byte[]> cursor = redisTemplate.executeWithStickyConnection(
(RedisCallback<Cursor<byte[]>>) connection -> (Cursor<byte[]>) new ConvertingCursor<>( (RedisCallback<Cursor<byte[]>>)connection -> (Cursor<byte[]>)new ConvertingCursor<>(connection.scan(options),
connection.scan(options), redisTemplate.getKeySerializer()::deserialize))) { redisTemplate.getKeySerializer()::deserialize))) {
while (cursor.hasNext()) { while (cursor.hasNext()) {
redisTemplate.delete(cursor.next()); redisTemplate.delete(cursor.next());
} }
@@ -256,7 +256,7 @@ public class RedisHelper {
return null; return null;
} }
if (value instanceof List<?>) { if (value instanceof List<?>) {
List<?> list = (List<?>) value; List<?> list = (List<?>)value;
// 检查每个元素是否为指定类型 // 检查每个元素是否为指定类型
if (list.stream().allMatch(clazz::isInstance)) { if (list.stream().allMatch(clazz::isInstance)) {
return list.stream().map(clazz::cast).collect(Collectors.toList()); return list.stream().map(clazz::cast).collect(Collectors.toList());
@@ -265,7 +265,6 @@ public class RedisHelper {
return null; return null;
} }
/** /**
* 普通缓存获取 * 普通缓存获取
* *
@@ -55,12 +55,8 @@ public class RedissonConfiguration {
@Bean @Bean
public RedissonClient redissonClient() { public RedissonClient redissonClient() {
Config config = new Config(); Config config = new Config();
config.useSingleServer() config.useSingleServer().setAddress("redis://" + redisHost + ":" + redisPort).setDatabase(redisDatabase).setTimeout(timeout)
.setAddress("redis://" + redisHost + ":" + redisPort) .setConnectionPoolSize(connectionPoolSize).setConnectionMinimumIdleSize(connectionMinimumIdleSize);
.setDatabase(redisDatabase)
.setTimeout(timeout)
.setConnectionPoolSize(connectionPoolSize)
.setConnectionMinimumIdleSize(connectionMinimumIdleSize);
if (StrUtil.isNotBlank(redisPassword)) { if (StrUtil.isNotBlank(redisPassword)) {
config.useSingleServer().setPassword(redisPassword); config.useSingleServer().setPassword(redisPassword);
} }
@@ -48,7 +48,8 @@ public class AsyncTheadPoolConfig implements AsyncConfigurer {
// 自定义工厂 // 自定义工厂
ThreadFactory factory = r -> new Thread(r, "default-async-" + new AtomicInteger(1).getAndIncrement()); ThreadFactory factory = r -> new Thread(r, "default-async-" + new AtomicInteger(1).getAndIncrement());
// 自定义线程池 // 自定义线程池
return new ThreadPoolExecutor(asyncTaskPool.getCorePoolSize(), asyncTaskPool.getMaxPoolSize(), asyncTaskPool.getKeepAliveSeconds(), TimeUnit.SECONDS, new ArrayBlockingQueue<>(asyncTaskPool.getQueueCapacity()), factory, new ThreadPoolExecutor.CallerRunsPolicy()); return new ThreadPoolExecutor(asyncTaskPool.getCorePoolSize(), asyncTaskPool.getMaxPoolSize(), asyncTaskPool.getKeepAliveSeconds(), TimeUnit.SECONDS,
new ArrayBlockingQueue<>(asyncTaskPool.getQueueCapacity()), factory, new ThreadPoolExecutor.CallerRunsPolicy());
} }
/** /**
@@ -35,14 +35,12 @@ public class DateStringArraysToListDateConverter implements Converter<String[],
if (source.length == 0) { if (source.length == 0) {
return Collections.emptyList(); return Collections.emptyList();
} }
return Arrays.stream(source) return Arrays.stream(source).map(s -> {
.map(s -> { try {
try { return sdf.parse(s);
return sdf.parse(s); } catch (ParseException e) {
} catch (ParseException e) { throw new IllegalArgumentException("Invalid date string: " + s);
throw new IllegalArgumentException("Invalid date string: " + s); }
} }).collect(Collectors.toList());
})
.collect(Collectors.toList());
} }
} }
@@ -88,19 +88,19 @@ public class ConfigurerAdapter implements WebMvcConfigurer {
config.setDateFormat("yyyy-MM-dd HH:mm:ss"); config.setDateFormat("yyyy-MM-dd HH:mm:ss");
// 开启引用检测, 枚举支持 // 开启引用检测, 枚举支持
config.setWriterFeatures( config.setWriterFeatures(
// 是否输出值为null的字段 // 是否输出值为null的字段
// SerializerFeature.WriteMapNullValue, // SerializerFeature.WriteMapNullValue,
// 字段如果为null,输出为false,而非null // 字段如果为null,输出为false,而非null
// JSONWriter.Feature.WriteNullBooleanAsFalse, // JSONWriter.Feature.WriteNullBooleanAsFalse,
// 字段如果为null,输出为[],而非null // 字段如果为null,输出为[],而非null
// JSONWriter.Feature.WriteNullListAsEmpty, // JSONWriter.Feature.WriteNullListAsEmpty,
// 字符类型字段如果为null,输出为"",而非null // 字符类型字段如果为null,输出为"",而非null
// JSONWriter.Feature.WriteNullStringAsEmpty, // JSONWriter.Feature.WriteNullStringAsEmpty,
// 太具体的数值会直接影响逻辑本身, 所以不要这个 // 太具体的数值会直接影响逻辑本身, 所以不要这个
// SerializerFeature.WriteNullNumberAsZero, // SerializerFeature.WriteNullNumberAsZero,
JSONWriter.Feature.WriteEnumUsingToString, JSONWriter.Feature.WriteEnumUsingToString,
// SerializerFeature.DisableCircularReferenceDetect, // SerializerFeature.DisableCircularReferenceDetect,
JSONWriter.Feature.ReferenceDetection); JSONWriter.Feature.ReferenceDetection);
fastJsonConverter.setFastJsonConfig(config); fastJsonConverter.setFastJsonConfig(config);
fastJsonConverter.setSupportedMediaTypes(supportMediaTypeList); fastJsonConverter.setSupportedMediaTypes(supportMediaTypeList);
fastJsonConverter.setDefaultCharset(StandardCharsets.UTF_8); fastJsonConverter.setDefaultCharset(StandardCharsets.UTF_8);
@@ -19,7 +19,6 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter; import org.springframework.web.socket.server.standard.ServerEndpointExporter;
@Configuration @Configuration
public class WsConfig { public class WsConfig {
@@ -22,8 +22,7 @@ import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
/** /**
* 解决启动io.undertow.websockets.jsr UT026010: Buffer pool was not * 解决启动io.undertow.websockets.jsr UT026010: Buffer pool was not set on WebSocketDeploymentInfo, the default pool will be used的警告
* set on WebSocketDeploymentInfo, the default pool will be used的警告
* *
* @date 2024-06-07 * @date 2024-06-07
*/ */
@@ -44,15 +44,15 @@ public class CsWsClientManager {
CsWsServer wsServer = clientMap.get(sid); CsWsServer wsServer = clientMap.get(sid);
if (wsServer != null) { if (wsServer != null) {
try { try {
// log.info("关闭session, sid={}", sid); // log.info("关闭session, sid={}", sid);
wsServer.getSession().close(); wsServer.getSession().close();
} catch (Exception e) { } catch (Exception e) {
// ignore // ignore
} }
// log.info("停止任务, sid={}", sid); // log.info("停止任务, sid={}", sid);
wsServer.stopTask(sid); wsServer.stopTask(sid);
// log.info("移除客户端, sid={}", sid); // log.info("移除客户端, sid={}", sid);
clientMap.remove(sid); clientMap.remove(sid);
} }
} }
@@ -28,7 +28,6 @@ import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
@Slf4j @Slf4j
@Component @Component
@ServerEndpoint("/websocket/{sid}") @ServerEndpoint("/websocket/{sid}")
@@ -82,7 +81,7 @@ public class CsWsServer {
@OnError @OnError
public void onError(Session session, Throwable error) { public void onError(Session session, Throwable error) {
// log.error("WebSocket sid={} 发生错误", this.sid, error); // log.error("WebSocket sid={} 发生错误", this.sid, error);
try { try {
CsWsClientManager.removeClient(this.sid); CsWsClientManager.removeClient(this.sid);
} catch (Exception e) { } catch (Exception e) {
@@ -102,7 +101,7 @@ public class CsWsServer {
*/ */
public void sendMessage(CsWsMessage message, @PathParam("sid") String sid) throws IOException { public void sendMessage(CsWsMessage message, @PathParam("sid") String sid) throws IOException {
String body = JSON.toJSONString(message); String body = JSON.toJSONString(message);
// log.info("推送消息到{}, 推送内容:{}", sid, message); // log.info("推送消息到{}, 推送内容:{}", sid, message);
try { try {
if (sid == null) { if (sid == null) {
sendToAll(body); sendToAll(body);
@@ -138,7 +137,7 @@ public class CsWsServer {
if (o == null || getClass() != o.getClass()) { if (o == null || getClass() != o.getClass()) {
return false; return false;
} }
CsWsServer that = (CsWsServer) o; CsWsServer that = (CsWsServer)o;
return Objects.equals(session, that.session) && Objects.equals(sid, that.sid); return Objects.equals(session, that.session) && Objects.equals(sid, that.sid);
} }
@@ -25,7 +25,7 @@ public class CsAnonTagUtil {
* @return / * @return /
*/ */
public static Map<String, Set<String>> getAnonymousUrl(final ApplicationContext applicationContext) { public static Map<String, Set<String>> getAnonymousUrl(final ApplicationContext applicationContext) {
RequestMappingHandlerMapping requestMappingHandlerMapping = (RequestMappingHandlerMapping) applicationContext.getBean("requestMappingHandlerMapping"); RequestMappingHandlerMapping requestMappingHandlerMapping = (RequestMappingHandlerMapping)applicationContext.getBean("requestMappingHandlerMapping");
Map<RequestMappingInfo, HandlerMethod> handlerMethodMap = requestMappingHandlerMapping.getHandlerMethods(); Map<RequestMappingInfo, HandlerMethod> handlerMethodMap = requestMappingHandlerMapping.getHandlerMethods();
Map<String, java.util.Set<String>> anonymousUrls = new HashMap<>(8); Map<String, java.util.Set<String>> anonymousUrls = new HashMap<>(8);
// 获取匿名标记 // 获取匿名标记
@@ -19,11 +19,11 @@ public final class CsBigDecimalUtil {
*/ */
private static BigDecimal toBigDecimal(Object obj) { private static BigDecimal toBigDecimal(Object obj) {
if (obj instanceof BigDecimal) { if (obj instanceof BigDecimal) {
return (BigDecimal) obj; return (BigDecimal)obj;
} else if (obj instanceof Long) { } else if (obj instanceof Long) {
return BigDecimal.valueOf((Long) obj); return BigDecimal.valueOf((Long)obj);
} else if (obj instanceof Integer) { } else if (obj instanceof Integer) {
return BigDecimal.valueOf((Integer) obj); return BigDecimal.valueOf((Integer)obj);
} else if (obj instanceof Double) { } else if (obj instanceof Double) {
return new BigDecimal(String.valueOf(obj)); return new BigDecimal(String.valueOf(obj));
} else { } else {
@@ -142,7 +142,7 @@ public final class CsCollUtil extends cn.hutool.core.collection.CollUtil {
try { try {
Field field = m.getClass().getDeclaredField(elementName); Field field = m.getClass().getDeclaredField(elementName);
field.setAccessible(true); field.setAccessible(true);
that = (BigDecimal) field.get(m); that = (BigDecimal)field.get(m);
} catch (Exception e) { } catch (Exception e) {
// 忽略异常 // 忽略异常
that = BigDecimal.ZERO; that = BigDecimal.ZERO;
@@ -160,10 +160,7 @@ public final class CsCollUtil extends cn.hutool.core.collection.CollUtil {
* @return / * @return /
*/ */
public static BigDecimal streamBigDecimalMax(List<BigDecimal> data) { public static BigDecimal streamBigDecimalMax(List<BigDecimal> data) {
return data.stream() return data.stream().filter(Objects::nonNull).reduce(BigDecimal::max).orElse(null);
.filter(Objects::nonNull)
.reduce(BigDecimal::max)
.orElse(null);
} }
/** /**
@@ -175,10 +172,7 @@ public final class CsCollUtil extends cn.hutool.core.collection.CollUtil {
* @return / * @return /
*/ */
public static BigDecimal streamBigDecimalMin(List<BigDecimal> data) { public static BigDecimal streamBigDecimalMin(List<BigDecimal> data) {
return data.stream() return data.stream().filter(Objects::nonNull).reduce(BigDecimal::min).orElse(null);
.filter(Objects::nonNull)
.reduce(BigDecimal::min)
.orElse(null);
} }
/** /**
@@ -190,10 +184,7 @@ public final class CsCollUtil extends cn.hutool.core.collection.CollUtil {
* @return / * @return /
*/ */
public static BigDecimal streamBigDecimalAvg(List<BigDecimal> data) { public static BigDecimal streamBigDecimalAvg(List<BigDecimal> data) {
return data.stream() return data.stream().filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add).divide(BigDecimal.valueOf(data.size()), 6, RoundingMode.FLOOR);
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add)
.divide(BigDecimal.valueOf(data.size()), 6, RoundingMode.FLOOR);
} }
public static void main(String[] args) { public static void main(String[] args) {
@@ -88,7 +88,7 @@ public final class CsDesEncryptUtil {
byte[] b2 = new byte[b.length / 2]; byte[] b2 = new byte[b.length / 2];
for (int n = 0; n < b.length; n += size) { for (int n = 0; n < b.length; n += size) {
String item = new String(b, n, 2); String item = new String(b, n, 2);
b2[n / 2] = (byte) Integer.parseInt(item, 16); b2[n / 2] = (byte)Integer.parseInt(item, 16);
} }
return b2; return b2;
} }
@@ -144,17 +144,12 @@ public final class CsDistributedIdUtil {
// 序列号溢出,等待下一毫秒 // 序列号溢出,等待下一毫秒
currentTimestamp = waitNextMillis(lastTimestampValue); currentTimestamp = waitNextMillis(lastTimestampValue);
} }
return ((currentTimestamp - START_TIMESTAMP) << timestampLeftShift) | return ((currentTimestamp - START_TIMESTAMP) << timestampLeftShift) | (dataCenterId << dataCenterIdShift) | (workerId << workerIdShift) | seq;
(dataCenterId << dataCenterIdShift) |
(workerId << workerIdShift) |
seq;
} else { } else {
// 时间戳改变,重置序列号 // 时间戳改变,重置序列号
sequence.set(0L); sequence.set(0L);
lastTimestamp.set(currentTimestamp); lastTimestamp.set(currentTimestamp);
return ((currentTimestamp - START_TIMESTAMP) << timestampLeftShift) | return ((currentTimestamp - START_TIMESTAMP) << timestampLeftShift) | (dataCenterId << dataCenterIdShift) | (workerId << workerIdShift);
(dataCenterId << dataCenterIdShift) |
(workerId << workerIdShift);
} }
} }
@@ -54,9 +54,7 @@ public final class CsFileUtil extends cn.hutool.core.io.FileUtil {
/** /**
* 系统临时目录 * 系统临时目录
* <br> * <br>
* windows 包含路径分割符, 但Linux 不包含, * windows 包含路径分割符, 但Linux 不包含, 在windows \\==\ 前提下, 为安全起见 同意拼装 路径分割符,
* 在windows \\==\ 前提下,
* 为安全起见 同意拼装 路径分割符,
* <pre> * <pre>
* java.io.tmpdir * java.io.tmpdir
* windows : C:\Users/xxx\AppData\Local\Temp\ * windows : C:\Users/xxx\AppData\Local\Temp\
@@ -109,13 +107,13 @@ public final class CsFileUtil extends cn.hutool.core.io.FileUtil {
String resultSize; String resultSize;
if (size / GB >= 1) { if (size / GB >= 1) {
//如果当前Byte的值大于等于1GB //如果当前Byte的值大于等于1GB
resultSize = DF.format(size / (float) GB) + " GB"; resultSize = DF.format(size / (float)GB) + " GB";
} else if (size / MB >= 1) { } else if (size / MB >= 1) {
//如果当前Byte的值大于等于1MB //如果当前Byte的值大于等于1MB
resultSize = DF.format(size / (float) MB) + " MB"; resultSize = DF.format(size / (float)MB) + " MB";
} else if (size / KB >= 1) { } else if (size / KB >= 1) {
//如果当前Byte的值大于等于1KB //如果当前Byte的值大于等于1KB
resultSize = DF.format(size / (float) KB) + " KB"; resultSize = DF.format(size / (float)KB) + " KB";
} else { } else {
resultSize = size + " B"; resultSize = size + " B";
} }
@@ -190,10 +188,10 @@ public final class CsFileUtil extends cn.hutool.core.io.FileUtil {
Map<String, Object> sanitizedMap = new LinkedHashMap<>(); Map<String, Object> sanitizedMap = new LinkedHashMap<>();
map.forEach((key, value) -> { map.forEach((key, value) -> {
if (value instanceof String) { if (value instanceof String) {
String strValue = (String) value; String strValue = (String)value;
// 检查并处理以特殊字符开头的值 // 检查并处理以特殊字符开头的值
if (strValue.startsWith(SYMBOL_EQUAL) || strValue.startsWith(SYMBOL_ADD) if (strValue.startsWith(SYMBOL_EQUAL) || strValue.startsWith(SYMBOL_ADD) || strValue.startsWith(SYMBOL_SUBTRACT) || strValue.startsWith(
|| strValue.startsWith(SYMBOL_SUBTRACT) || strValue.startsWith(SYMBOL_AT)) { SYMBOL_AT)) {
// 添加单引号前缀 // 添加单引号前缀
strValue = "'" + strValue; strValue = "'" + strValue;
} }
@@ -206,7 +204,7 @@ public final class CsFileUtil extends cn.hutool.core.io.FileUtil {
}).collect(Collectors.toList()); }).collect(Collectors.toList());
// 一次性写出内容, 使用默认样式,强制输出标题 // 一次性写出内容, 使用默认样式,强制输出标题
writer.write(sanitizedList, true); writer.write(sanitizedList, true);
SXSSFSheet sheet = (SXSSFSheet) writer.getSheet(); SXSSFSheet sheet = (SXSSFSheet)writer.getSheet();
//上面需要强转SXSSFSheet 不然没有trackAllColumnsForAutoSizing方法 //上面需要强转SXSSFSheet 不然没有trackAllColumnsForAutoSizing方法
sheet.trackAllColumnsForAutoSizing(); sheet.trackAllColumnsForAutoSizing();
//列宽自适应 //列宽自适应
@@ -278,7 +276,7 @@ public final class CsFileUtil extends cn.hutool.core.io.FileUtil {
* 获取文件字节数组 -> ok * 获取文件字节数组 -> ok
*/ */
private static byte[] getByte(File file) { private static byte[] getByte(File file) {
byte[] b = new byte[(int) file.length()]; byte[] b = new byte[(int)file.length()];
InputStream in = null; InputStream in = null;
try { try {
in = Files.newInputStream(file.toPath()); in = Files.newInputStream(file.toPath());
@@ -382,8 +380,7 @@ public final class CsFileUtil extends cn.hutool.core.io.FileUtil {
fileName = fileName.replaceAll("^\\.+/", ""); fileName = fileName.replaceAll("^\\.+/", "");
// 保留文件名中最后一个 "." 字符,过滤掉其他 "." // 保留文件名中最后一个 "." 字符,过滤掉其他 "."
fileName = fileName.replaceAll("^(.*)(\\.[^.]*)$", "$1").replaceAll("\\.", "") + fileName = fileName.replaceAll("^(.*)(\\.[^.]*)$", "$1").replaceAll("\\.", "") + fileName.replaceAll("^(.*)(\\.[^.]*)$", "$2");
fileName.replaceAll("^(.*)(\\.[^.]*)$", "$2");
return fileName; return fileName;
} }
@@ -45,7 +45,6 @@ public final class CsIPUtil {
return null; return null;
} }
/** /**
* 获取当前机器的IP * 获取当前机器的IP
* *
@@ -39,16 +39,13 @@ public final class CsListUtil {
* @param classifier 对象T属性表达式, 比如: User::getName * @param classifier 对象T属性表达式, 比如: User::getName
*/ */
public static <T, K> List<T> distinctByArgs(List<T> items, Function<? super T, ? extends K> classifier) { public static <T, K> List<T> distinctByArgs(List<T> items, Function<? super T, ? extends K> classifier) {
return items.stream() return items.stream().collect(Collectors.groupingBy(classifier)).values().stream().map(monitorItem -> monitorItem.iterator().next())
.collect(Collectors.groupingBy(classifier)) .collect(Collectors.toList());
.values().stream()
.map(monitorItem -> monitorItem.iterator().next())
.collect(Collectors.toList());
} }
/** /**
* list转map, 保留新值 -> Map<String, User> userMap = items.stream().collect(Collectors.toMap(User::getName, user -> user)) <br> * list转map, 保留新值 -> Map<String, User> userMap = items.stream().collect(Collectors.toMap(User::getName, user -> user)) <br> list转map, 保留旧值 -> Map<String,
* list转map, 保留旧值 -> Map<String, User> userMap = users.stream().collect(Collectors.toMap(User::getName, user -> user, (existing, replacement) -> existing)); * User> userMap = users.stream().collect(Collectors.toMap(User::getName, user -> user, (existing, replacement) -> existing));
*/ */
public static void main(String[] args) { public static void main(String[] args) {
List<CsBaseUserTimeTb> entities = new ArrayList<>(); List<CsBaseUserTimeTb> entities = new ArrayList<>();
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.util; package cn.odboy.util;
import cn.odboy.base.CsResultVo; import cn.odboy.base.CsPageResultVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -52,36 +52,36 @@ public final class CsPageUtil extends cn.hutool.core.util.PageUtil {
/** /**
* Page 数据处理 * Page 数据处理
*/ */
public static <T> CsResultVo<List<T>> toPage(IPage<T> page) { public static <T> CsPageResultVo<List<T>> toPage(IPage<T> page) {
return new CsResultVo<>(page.getRecords(), page.getTotal()); return new CsPageResultVo<>(page.getRecords(), page.getTotal());
} }
/** /**
* 自定义分页 * 自定义分页
*/ */
public static <T> CsResultVo<List<T>> toPage(List<T> list) { public static <T> CsPageResultVo<List<T>> toPage(List<T> list) {
return new CsResultVo<>(list, list.size()); return new CsPageResultVo<>(list, list.size());
} }
/** /**
* 返回空数据 * 返回空数据
*/ */
public static <T> CsResultVo<List<T>> emptyListData() { public static <T> CsPageResultVo<List<T>> emptyListData() {
return new CsResultVo<>(new ArrayList<>(), 0); return new CsPageResultVo<>(new ArrayList<>(), 0);
} }
/** /**
* 返回空数据 * 返回空数据
*/ */
public static <T> CsResultVo<T> emptyData() { public static <T> CsPageResultVo<T> emptyData() {
return new CsResultVo<>(null, 0); return new CsPageResultVo<>(null, 0);
} }
/** /**
* 自定义分页 * 自定义分页
*/ */
public static <T> CsResultVo<List<T>> toPage(List<T> list, long totalElements) { public static <T> CsPageResultVo<List<T>> toPage(List<T> list, long totalElements) {
return new CsResultVo<>(list, totalElements); return new CsPageResultVo<>(list, totalElements);
} }
public static <T> Page<T> getCount(BaseMapper<T> baseMapper) { public static <T> Page<T> getCount(BaseMapper<T> baseMapper) {
@@ -182,14 +182,13 @@ public final class CsRsaEncryptUtil {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(1024); keyPairGenerator.initialize(1024);
KeyPair keyPair = keyPairGenerator.generateKeyPair(); KeyPair keyPair = keyPairGenerator.generateKeyPair();
RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic(); RSAPublicKey rsaPublicKey = (RSAPublicKey)keyPair.getPublic();
RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) keyPair.getPrivate(); RSAPrivateKey rsaPrivateKey = (RSAPrivateKey)keyPair.getPrivate();
String publicKeyString = Base64.encodeBase64String(rsaPublicKey.getEncoded()); String publicKeyString = Base64.encodeBase64String(rsaPublicKey.getEncoded());
String privateKeyString = Base64.encodeBase64String(rsaPrivateKey.getEncoded()); String privateKeyString = Base64.encodeBase64String(rsaPrivateKey.getEncoded());
return new RsaKeyPair(publicKeyString, privateKeyString); return new RsaKeyPair(publicKeyString, privateKeyString);
} }
/** /**
* RSA密钥对对象 * RSA密钥对对象
*/ */
@@ -18,9 +18,7 @@ public final class CsStringUtil extends org.apache.commons.lang3.StringUtils {
/** /**
* 驼峰命名法工具 * 驼峰命名法工具
* *
* @return toCamelCase(" hello_world ") == "helloWorld" * @return toCamelCase(" hello_world ") == "helloWorld" toCapitalizeCamelCase("hello_world") == "HelloWorld" toUnderScoreCase("helloWorld") = "hello_world"
* toCapitalizeCamelCase("hello_world") == "HelloWorld"
* toUnderScoreCase("helloWorld") = "hello_world"
*/ */
public static String toCamelCase(String s) { public static String toCamelCase(String s) {
if (s == null) { if (s == null) {
@@ -50,9 +48,7 @@ public final class CsStringUtil extends org.apache.commons.lang3.StringUtils {
/** /**
* 驼峰命名法工具 * 驼峰命名法工具
* *
* @return toCamelCase(" hello_world ") == "helloWorld" * @return toCamelCase(" hello_world ") == "helloWorld" toCapitalizeCamelCase("hello_world") == "HelloWorld" toUnderScoreCase("helloWorld") = "hello_world"
* toCapitalizeCamelCase("hello_world") == "HelloWorld"
* toUnderScoreCase("helloWorld") = "hello_world"
*/ */
public static String toCapitalizeCamelCase(String s) { public static String toCapitalizeCamelCase(String s) {
if (s == null) { if (s == null) {
@@ -65,9 +61,7 @@ public final class CsStringUtil extends org.apache.commons.lang3.StringUtils {
/** /**
* 驼峰命名法工具 * 驼峰命名法工具
* *
* @return toCamelCase(" hello_world ") == "helloWorld" * @return toCamelCase(" hello_world ") == "helloWorld" toCapitalizeCamelCase("hello_world") == "HelloWorld" toUnderScoreCase("helloWorld") = "hello_world"
* toCapitalizeCamelCase("hello_world") == "HelloWorld"
* toUnderScoreCase("helloWorld") = "hello_world"
*/ */
public static String toUnderScoreCase(String s) { public static String toUnderScoreCase(String s) {
if (s == null) { if (s == null) {
@@ -100,12 +94,11 @@ public final class CsStringUtil extends org.apache.commons.lang3.StringUtils {
return sb.toString(); return sb.toString();
} }
/** /**
* 获得当天是周几 * 获得当天是周几
*/ */
public static String getWeekDay() { public static String getWeekDay() {
// String[] weekDays = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; // String[] weekDays = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
String[] weekDays = {"星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"}; String[] weekDays = {"星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"};
Calendar cal = Calendar.getInstance(); Calendar cal = Calendar.getInstance();
cal.setTime(new Date()); cal.setTime(new Date());
@@ -44,11 +44,7 @@ public final class CsValidUtil {
public static <T> void validate(T object) { public static <T> void validate(T object) {
Set<ConstraintViolation<T>> violations = VALIDATOR.validate(object, Default.class); Set<ConstraintViolation<T>> violations = VALIDATOR.validate(object, Default.class);
if (!violations.isEmpty()) { if (!violations.isEmpty()) {
throw new IllegalArgumentException(violations throw new IllegalArgumentException(violations.stream().map(ConstraintViolation::getMessage).collect(Collectors.joining(",")));
.stream()
.map(ConstraintViolation::getMessage)
.collect(Collectors.joining(","))
);
} }
} }
} }
+1 -1
View File
@@ -8,7 +8,7 @@
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>cutejava-module-pipeline</artifactId> <artifactId>cutejava-module-pipeline</artifactId>
<name>devops应用模块</name> <name>pipeline模块</name>
<dependencies> <dependencies>
<dependency> <dependency>
@@ -16,7 +16,7 @@
package cn.odboy.devops.dal.dataobject; package cn.odboy.devops.dal.dataobject;
import cn.odboy.base.CsObject; import cn.odboy.base.CsObject;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum; import cn.odboy.devops.framework.pipeline.constant.PipelineStatusEnum;
import cn.odboy.devops.framework.pipeline.model.PipelineNodeOperateButtonVo; import cn.odboy.devops.framework.pipeline.model.PipelineNodeOperateButtonVo;
import com.alibaba.fastjson2.annotation.JSONField; import com.alibaba.fastjson2.annotation.JSONField;
import com.anwen.mongo.annotation.ID; import com.anwen.mongo.annotation.ID;
@@ -21,7 +21,6 @@ import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@Getter @Getter
@Setter @Setter
public class StartPipelineResultVo extends CsObject { public class StartPipelineResultVo extends CsObject {
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.dal.redis; package cn.odboy.devops.dal.redis;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceTb;
import cn.odboy.framework.redis.RedisHelper; import cn.odboy.framework.redis.RedisHelper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -23,23 +23,23 @@ import java.util.Date;
@Component @Component
public class MongoPlusMetaObjectHandler implements MetaObjectHandler { public class MongoPlusMetaObjectHandler implements MetaObjectHandler {
// @Override // @Override
// public void insertFill(Map<String, Object> insertFillMap, Document document) { // public void insertFill(Map<String, Object> insertFillMap, Document document) {
// insertFillMap.keySet().forEach(key -> { // insertFillMap.keySet().forEach(key -> {
// if (key.equals("createTime")){ // if (key.equals("createTime")){
// document.put(key, LocalDateTime.now()); // document.put(key, LocalDateTime.now());
// } // }
// }); // });
// } // }
// //
// @Override // @Override
// public void updateFill(Map<String, Object> insertFillMap, Document document) { // public void updateFill(Map<String, Object> insertFillMap, Document document) {
// insertFillMap.keySet().forEach(key -> { // insertFillMap.keySet().forEach(key -> {
// if (key.equals("createTime")){ // if (key.equals("createTime")){
// document.put(key, LocalDateTime.now()); // document.put(key, LocalDateTime.now());
// } // }
// }); // });
// } // }
@Override @Override
public void insertFill(AutoFillMetaObject insertAutoFillMetaObject) { public void insertFill(AutoFillMetaObject insertAutoFillMetaObject) {
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.framework.pipeline; package cn.odboy.devops.framework.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum; import cn.odboy.devops.framework.pipeline.constant.PipelineStatusEnum;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.service.core.PipelineInstanceNodeDetailService; import cn.odboy.devops.service.core.PipelineInstanceNodeDetailService;
import cn.odboy.devops.service.core.PipelineInstanceNodeService; import cn.odboy.devops.service.core.PipelineInstanceNodeService;
@@ -33,7 +33,8 @@ public abstract class AbstractPipelineNodeJobService {
return pipelineInstanceNodeService.getPipelineInstanceNodeByArgs(instanceId, code); return pipelineInstanceNodeService.getPipelineInstanceNodeByArgs(instanceId, code);
} }
public void addPipelineInstanceNodeDetailLog(PipelineInstanceNodeTb pipelineInstanceNode, String stepName, PipelineStatusEnum stepStatus, String stepMsg, Date finishTime) { public void addPipelineInstanceNodeDetailLog(PipelineInstanceNodeTb pipelineInstanceNode, String stepName, PipelineStatusEnum stepStatus, String stepMsg,
Date finishTime) {
if (pipelineInstanceNode != null) { if (pipelineInstanceNode != null) {
pipelineInstanceNodeDetailService.addLog(pipelineInstanceNode.getId(), pipelineInstanceNode.getCode(), stepName, stepStatus, stepMsg, finishTime); pipelineInstanceNodeDetailService.addLog(pipelineInstanceNode.getId(), pipelineInstanceNode.getCode(), stepName, stepStatus, stepMsg, finishTime);
} }
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package cn.odboy.devops.constant.pipeline; package cn.odboy.devops.framework.pipeline.constant;
/** /**
* 流水线 常量 * 流水线 常量
@@ -25,17 +25,17 @@ public interface PipelineConst {
String INSTANCE_PREFIX = "pipeline_instance_"; String INSTANCE_PREFIX = "pipeline_instance_";
String EXECUTOR_PREFIX = "pipeline_executor_"; String EXECUTOR_PREFIX = "pipeline_executor_";
// /** // /**
// * 流水线实例Key // * 流水线实例Key
// */ // */
// String INSTANCE_KEY = "pipelineInstance"; // String INSTANCE_KEY = "pipelineInstance";
// /** // /**
// * 流水线实例节点相关Key // * 流水线实例节点相关Key
// */ // */
// String INSTANCE_NODE_INDEX_KEY = "pipelineInstanceNodeIndex"; // String INSTANCE_NODE_INDEX_KEY = "pipelineInstanceNodeIndex";
// String INSTANCE_NODE_CODE_KEY = "pipelineInstanceNodeCode"; // String INSTANCE_NODE_CODE_KEY = "pipelineInstanceNodeCode";
// String INSTANCE_NODE_NAME_KEY = "pipelineInstanceNodeName"; // String INSTANCE_NODE_NAME_KEY = "pipelineInstanceNodeName";
// String INSTANCE_NODE_TEMPLATE_ARGS_KEY = "pipelineInstanceNodeTemplateArgs"; // String INSTANCE_NODE_TEMPLATE_ARGS_KEY = "pipelineInstanceNodeTemplateArgs";
// String INSTANCE_RETRY_NODE_INDEX_KEY = "pipelineInstanceRetryNodeIndex"; // String INSTANCE_RETRY_NODE_INDEX_KEY = "pipelineInstanceRetryNodeIndex";
// 以下为标准常量 // 以下为标准常量
String INSTANCE = "Instance"; String INSTANCE = "Instance";
String INSTANCE_ID = "InstanceId"; String INSTANCE_ID = "InstanceId";
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package cn.odboy.devops.constant.pipeline; package cn.odboy.devops.framework.pipeline.constant;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
@@ -24,9 +24,7 @@ import lombok.Getter;
@Getter @Getter
@AllArgsConstructor @AllArgsConstructor
public enum PipelineStatusEnum { public enum PipelineStatusEnum {
PENDING("pending", "#C0C4CC", "未开始"), PENDING("pending", "#C0C4CC", "未开始"), RUNNING("running", "#409EFF", "运行中"), SUCCESS("success", "#67C23A", "执行成功"),
RUNNING("running", "#409EFF", "运行中"),
SUCCESS("success", "#67C23A", "执行成功"),
FAIL("fail", "#F56C6C", "执行失败"); FAIL("fail", "#F56C6C", "执行失败");
/** /**
* 状态码 * 状态码
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package cn.odboy.devops.constant.pipeline; package cn.odboy.devops.framework.pipeline.constant;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
@@ -24,11 +24,7 @@ import lombok.Getter;
@Getter @Getter
@AllArgsConstructor @AllArgsConstructor
public enum PipelineTypeEnum { public enum PipelineTypeEnum {
BACKEND("backend", "后端"), BACKEND("backend", "后端"), FRONT("front", "前端"), MOBILE("mobile", "移动端"), ANDROID("pc", "PC端"), UN_SUPPORT("un_support", "不支持的类型");
FRONT("front", "前端"),
MOBILE("mobile", "移动端"),
ANDROID("pc", "PC端"),
UN_SUPPORT("un_support", "不支持的类型");
/** /**
* 类型编码 * 类型编码
*/ */
@@ -17,8 +17,8 @@ package cn.odboy.devops.framework.pipeline.core;
import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum; import cn.odboy.devops.framework.pipeline.constant.PipelineStatusEnum;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.dal.dataobject.PipelineInstanceTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceTb;
import cn.odboy.devops.dal.mysql.PipelineInstanceMapper; import cn.odboy.devops.dal.mysql.PipelineInstanceMapper;
@@ -54,7 +54,7 @@ public class PipelineJobBean implements InterruptableJob {
// 参数解析 // 参数解析
JobDataMap jobDataMap = jobExecutionContext.getMergedJobDataMap(); JobDataMap jobDataMap = jobExecutionContext.getMergedJobDataMap();
PipelineInstanceTb pipelineInstanceTb = (PipelineInstanceTb) jobDataMap.get(PipelineConst.INSTANCE); PipelineInstanceTb pipelineInstanceTb = (PipelineInstanceTb)jobDataMap.get(PipelineConst.INSTANCE);
pipelineInstanceTb.setStatus(PipelineStatusEnum.PENDING.getCode()); pipelineInstanceTb.setStatus(PipelineStatusEnum.PENDING.getCode());
// 获取服务 // 获取服务
PipelineJobManage pipelineJobManage = CsSpringBeanHolder.getBean(PipelineJobManage.class); PipelineJobManage pipelineJobManage = CsSpringBeanHolder.getBean(PipelineJobManage.class);
@@ -156,7 +156,8 @@ public class PipelineJobBean implements InterruptableJob {
} }
// 检查实例节点状态 // 检查实例节点状态
ThreadUtil.safeSleep(3000); ThreadUtil.safeSleep(3000);
PipelineInstanceNodeTb runningInstanceNode = pipelineInstanceNodeService.getPipelineInstanceNodeByArgs(instanceId, pipelineNodeTemplateVo.getCode()); PipelineInstanceNodeTb runningInstanceNode =
pipelineInstanceNodeService.getPipelineInstanceNodeByArgs(instanceId, pipelineNodeTemplateVo.getCode());
if (PipelineStatusEnum.SUCCESS.getCode().equals(runningInstanceNode.getCurrentNodeStatus())) { if (PipelineStatusEnum.SUCCESS.getCode().equals(runningInstanceNode.getCurrentNodeStatus())) {
pipelineStatusEnum = PipelineStatusEnum.SUCCESS; pipelineStatusEnum = PipelineStatusEnum.SUCCESS;
pipelineInstanceTb.setCurrentNodeStatus(pipelineStatusEnum.getCode()); pipelineInstanceTb.setCurrentNodeStatus(pipelineStatusEnum.getCode());
@@ -236,13 +237,8 @@ public class PipelineJobBean implements InterruptableJob {
pipelineInstanceTb.setCurrentNodeStatus(PipelineStatusEnum.FAIL.getCode()); pipelineInstanceTb.setCurrentNodeStatus(PipelineStatusEnum.FAIL.getCode());
// 更新节点状态 // 更新节点状态
PipelineInstanceNodeService pipelineInstanceNodeService = CsSpringBeanHolder.getBean(PipelineInstanceNodeService.class); PipelineInstanceNodeService pipelineInstanceNodeService = CsSpringBeanHolder.getBean(PipelineInstanceNodeService.class);
pipelineInstanceNodeService.finishPipelineInstanceNodeByArgs( pipelineInstanceNodeService.finishPipelineInstanceNodeByArgs(this.currentInstanceId, this.currentNodeCode, PipelineStatusEnum.FAIL,
this.currentInstanceId, "用户主动停止", new Date());
this.currentNodeCode,
PipelineStatusEnum.FAIL,
"用户主动停止",
new Date()
);
} }
pipelineInstanceTb.setStatus(PipelineStatusEnum.FAIL.getCode()); pipelineInstanceTb.setStatus(PipelineStatusEnum.FAIL.getCode());
// 更新实例状态 // 更新实例状态
@@ -16,7 +16,7 @@
package cn.odboy.devops.framework.pipeline.core; package cn.odboy.devops.framework.pipeline.core;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceTb;
import cn.odboy.framework.exception.BadRequestException; import cn.odboy.framework.exception.BadRequestException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -85,8 +85,7 @@ public class PipelineJobManage {
} }
/** /**
* 中断正在执行的任务<br/> * 中断正在执行的任务<br/> 任务终止需要配合响应中断或停止信号
* 任务终止需要配合响应中断或停止信号
*/ */
public void interruptJob(Long instanceId) throws SchedulerException { public void interruptJob(Long instanceId) throws SchedulerException {
JobKey jobKey = JobKey.jobKey(String.format(JOB_KEY, instanceId)); JobKey jobKey = JobKey.jobKey(String.format(JOB_KEY, instanceId));
@@ -15,8 +15,8 @@
*/ */
package cn.odboy.devops.framework.pipeline.core; package cn.odboy.devops.framework.pipeline.core;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum; import cn.odboy.devops.framework.pipeline.constant.PipelineStatusEnum;
import cn.odboy.devops.framework.pipeline.model.PipelineNodeJobExecuteResult; import cn.odboy.devops.framework.pipeline.model.PipelineNodeJobExecuteResult;
import cn.odboy.devops.framework.pipeline.model.PipelineNodeTemplateVo; import cn.odboy.devops.framework.pipeline.model.PipelineNodeTemplateVo;
import cn.odboy.devops.service.core.PipelineInstanceNodeService; import cn.odboy.devops.service.core.PipelineInstanceNodeService;
@@ -44,22 +44,25 @@ public class PipelineNodeJobBean implements Job {
JobDataMap jobDataMap = jobExecutionContext.getMergedJobDataMap(); JobDataMap jobDataMap = jobExecutionContext.getMergedJobDataMap();
long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID); long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID);
PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo) jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE); PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo)jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE);
String nodeCode = currentNodeTemplate.getCode(); String nodeCode = currentNodeTemplate.getCode();
try { try {
String serviceName = PipelineConst.EXECUTOR_PREFIX + nodeCode; String serviceName = PipelineConst.EXECUTOR_PREFIX + nodeCode;
PipelineNodeJobExecutor pipelineNodeJobExecutor = CsSpringBeanHolder.getBean(serviceName); PipelineNodeJobExecutor pipelineNodeJobExecutor = CsSpringBeanHolder.getBean(serviceName);
pipelineInstanceNodeService.updatePipelineInstanceNodeByArgs(instanceId, nodeCode, PipelineStatusEnum.RUNNING, PipelineStatusEnum.RUNNING.getDesc()); pipelineInstanceNodeService.updatePipelineInstanceNodeByArgs(instanceId, nodeCode, PipelineStatusEnum.RUNNING,
PipelineStatusEnum.RUNNING.getDesc());
PipelineNodeJobExecuteResult executeResult = pipelineNodeJobExecutor.execute(jobDataMap); PipelineNodeJobExecuteResult executeResult = pipelineNodeJobExecutor.execute(jobDataMap);
jobExecutionContext.getMergedJobDataMap().put(PipelineConst.LAST_NODE_RESULT, executeResult); jobExecutionContext.getMergedJobDataMap().put(PipelineConst.LAST_NODE_RESULT, executeResult);
pipelineInstanceNodeService.finishPipelineInstanceNodeByArgs(instanceId, nodeCode, PipelineStatusEnum.SUCCESS, PipelineStatusEnum.SUCCESS.getDesc(), new Date()); pipelineInstanceNodeService.finishPipelineInstanceNodeByArgs(instanceId, nodeCode, PipelineStatusEnum.SUCCESS, PipelineStatusEnum.SUCCESS.getDesc(),
new Date());
} catch (BadRequestException e) { } catch (BadRequestException e) {
log.error("流水线节点执行异常", e); log.error("流水线节点执行异常", e);
pipelineInstanceNodeService.finishPipelineInstanceNodeByArgs(instanceId, nodeCode, PipelineStatusEnum.FAIL, e.getMessage(), new Date()); pipelineInstanceNodeService.finishPipelineInstanceNodeByArgs(instanceId, nodeCode, PipelineStatusEnum.FAIL, e.getMessage(), new Date());
} catch (Exception e) { } catch (Exception e) {
log.error("流水线节点执行异常", e); log.error("流水线节点执行异常", e);
pipelineInstanceNodeService.finishPipelineInstanceNodeByArgs(instanceId, nodeCode, PipelineStatusEnum.FAIL, PipelineStatusEnum.FAIL.getDesc(), new Date()); pipelineInstanceNodeService.finishPipelineInstanceNodeByArgs(instanceId, nodeCode, PipelineStatusEnum.FAIL, PipelineStatusEnum.FAIL.getDesc(),
new Date());
} }
} }
} }
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.framework.pipeline.core; package cn.odboy.devops.framework.pipeline.core;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceTb;
import cn.odboy.devops.framework.pipeline.model.PipelineNodeTemplateVo; import cn.odboy.devops.framework.pipeline.model.PipelineNodeTemplateVo;
import cn.odboy.framework.exception.BadRequestException; import cn.odboy.framework.exception.BadRequestException;
@@ -49,16 +49,10 @@ public class PipelineNodeJobManage {
String keyName = String.format(JOB_KEY, instanceId, pipelineNodeTemplate.getCode()); String keyName = String.format(JOB_KEY, instanceId, pipelineNodeTemplate.getCode());
// 构建 JobDetail // 构建 JobDetail
JobKey jobKey = JobKey.jobKey(keyName); JobKey jobKey = JobKey.jobKey(keyName);
JobDetail jobDetail = JobBuilder JobDetail jobDetail = JobBuilder.newJob(PipelineNodeJobBean.class).withIdentity(jobKey).build();
.newJob(PipelineNodeJobBean.class)
.withIdentity(jobKey)
.build();
// 构建Trigger // 构建Trigger
TriggerKey triggerKey = TriggerKey.triggerKey(keyName); TriggerKey triggerKey = TriggerKey.triggerKey(keyName);
Trigger cronTrigger = TriggerBuilder.newTrigger() Trigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).startNow().build();
.withIdentity(triggerKey)
.startNow()
.build();
// 任务参数 // 任务参数
JobDataMap jobDataMap = cronTrigger.getJobDataMap(); JobDataMap jobDataMap = cronTrigger.getJobDataMap();
jobDataMap.put(PipelineConst.INSTANCE_ID, pipelineInstance.getInstanceId()); jobDataMap.put(PipelineConst.INSTANCE_ID, pipelineInstance.getInstanceId());
@@ -94,8 +88,7 @@ public class PipelineNodeJobManage {
} }
/** /**
* 中断正在执行的任务<br/> * 中断正在执行的任务<br/> 任务终止需要配合响应中断或停止信号
* 任务终止需要配合响应中断或停止信号
*/ */
public void interruptJob(@NotNull String instanceId, @NotNull String nodeCode) throws SchedulerException { public void interruptJob(@NotNull String instanceId, @NotNull String nodeCode) throws SchedulerException {
JobKey jobKey = JobKey.jobKey(String.format(JOB_KEY, instanceId, nodeCode)); JobKey jobKey = JobKey.jobKey(String.format(JOB_KEY, instanceId, nodeCode));
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.framework.pipeline.log; package cn.odboy.devops.framework.pipeline.log;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum; import cn.odboy.devops.framework.pipeline.constant.PipelineStatusEnum;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService; import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService;
import cn.odboy.framework.exception.BadRequestException; import cn.odboy.framework.exception.BadRequestException;
@@ -55,20 +55,22 @@ public class PipelineNodeStepLogAspect extends AbstractPipelineNodeJobService {
*/ */
@Around("logPointcut()") @Around("logPointcut()")
public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable { public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable {
MethodSignature signature = (MethodSignature) joinPoint.getSignature(); MethodSignature signature = (MethodSignature)joinPoint.getSignature();
Method method = signature.getMethod(); Method method = signature.getMethod();
PipelineInstanceNodeTb currentNodeInfo = null; PipelineInstanceNodeTb currentNodeInfo = null;
for (Object arg : joinPoint.getArgs()) { for (Object arg : joinPoint.getArgs()) {
if (arg instanceof PipelineInstanceNodeTb) { if (arg instanceof PipelineInstanceNodeTb) {
currentNodeInfo = (PipelineInstanceNodeTb) arg; currentNodeInfo = (PipelineInstanceNodeTb)arg;
break; break;
} }
} }
PipelineNodeStepLog pipelineNodeStepLog = method.getAnnotation(PipelineNodeStepLog.class); PipelineNodeStepLog pipelineNodeStepLog = method.getAnnotation(PipelineNodeStepLog.class);
try { try {
addPipelineInstanceNodeDetailLog(currentNodeInfo, pipelineNodeStepLog.value(), PipelineStatusEnum.RUNNING, PipelineStatusEnum.RUNNING.getDesc(), null); addPipelineInstanceNodeDetailLog(currentNodeInfo, pipelineNodeStepLog.value(), PipelineStatusEnum.RUNNING, PipelineStatusEnum.RUNNING.getDesc(),
null);
Object result = joinPoint.proceed(); Object result = joinPoint.proceed();
addPipelineInstanceNodeDetailLog(currentNodeInfo, pipelineNodeStepLog.value(), PipelineStatusEnum.SUCCESS, PipelineStatusEnum.SUCCESS.getDesc(), new Date()); addPipelineInstanceNodeDetailLog(currentNodeInfo, pipelineNodeStepLog.value(), PipelineStatusEnum.SUCCESS, PipelineStatusEnum.SUCCESS.getDesc(),
new Date());
return result; return result;
} catch (BadRequestException e) { } catch (BadRequestException e) {
log.error("执行失败", e); log.error("执行失败", e);
@@ -76,7 +78,8 @@ public class PipelineNodeStepLogAspect extends AbstractPipelineNodeJobService {
throw e; throw e;
} catch (Throwable e) { } catch (Throwable e) {
log.error("执行失败", e); log.error("执行失败", e);
addPipelineInstanceNodeDetailLog(currentNodeInfo, pipelineNodeStepLog.value(), PipelineStatusEnum.FAIL, PipelineStatusEnum.FAIL.getDesc(), new Date()); addPipelineInstanceNodeDetailLog(currentNodeInfo, pipelineNodeStepLog.value(), PipelineStatusEnum.FAIL, PipelineStatusEnum.FAIL.getDesc(),
new Date());
throw e; throw e;
} }
} }
@@ -16,7 +16,7 @@
package cn.odboy.devops.framework.pipeline.model; package cn.odboy.devops.framework.pipeline.model;
import cn.odboy.base.CsObject; import cn.odboy.base.CsObject;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum; import cn.odboy.devops.framework.pipeline.constant.PipelineStatusEnum;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -57,9 +57,7 @@ public class PipelineNodeTemplateVo extends CsObject {
*/ */
protected String detailType = ""; protected String detailType = "";
/** /**
* 默认参数<br/> * 默认参数<br/> execute: 执行调用 describe: 明细调用
* execute: 执行调用
* describe: 明细调用
*/ */
protected Map<String, Object> parameters = new HashMap<>(); protected Map<String, Object> parameters = new HashMap<>();
/** /**
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.core; package cn.odboy.devops.service.core;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum; import cn.odboy.devops.framework.pipeline.constant.PipelineStatusEnum;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeDetailTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeDetailTb;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import com.anwen.mongo.service.IService; import com.anwen.mongo.service.IService;
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.core; package cn.odboy.devops.service.core;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum; import cn.odboy.devops.framework.pipeline.constant.PipelineStatusEnum;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.dal.dataobject.PipelineInstanceTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceTb;
import com.anwen.mongo.service.IService; import com.anwen.mongo.service.IService;
@@ -16,7 +16,7 @@
package cn.odboy.devops.service.core.impl; package cn.odboy.devops.service.core.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum; import cn.odboy.devops.framework.pipeline.constant.PipelineStatusEnum;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeDetailTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeDetailTb;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.service.core.PipelineInstanceNodeDetailService; import cn.odboy.devops.service.core.PipelineInstanceNodeDetailService;
@@ -55,28 +55,22 @@ public class PipelineInstanceNodeDetailServiceImpl extends ServiceImpl<PipelineI
@Override @Override
public PipelineInstanceNodeDetailTb getPipelineInstanceNodeDetailByArgs(Long nodeId, String nodeCode, String stepName) { public PipelineInstanceNodeDetailTb getPipelineInstanceNodeDetailByArgs(Long nodeId, String nodeCode, String stepName) {
return one(new LambdaQueryChainWrapper<>(getBaseMapper(), PipelineInstanceNodeDetailTb.class) return one(new LambdaQueryChainWrapper<>(getBaseMapper(), PipelineInstanceNodeDetailTb.class).eq(PipelineInstanceNodeDetailTb::getNodeId, nodeId)
.eq(PipelineInstanceNodeDetailTb::getNodeId, nodeId).eq(PipelineInstanceNodeDetailTb::getNodeCode, nodeCode) .eq(PipelineInstanceNodeDetailTb::getNodeCode, nodeCode).eq(PipelineInstanceNodeDetailTb::getStepName, stepName));
.eq(PipelineInstanceNodeDetailTb::getStepName, stepName)
);
} }
@Override @Override
public void removeByNodeIds(List<Long> nodeIds) { public void removeByNodeIds(List<Long> nodeIds) {
if (CollUtil.isNotEmpty(nodeIds)) { if (CollUtil.isNotEmpty(nodeIds)) {
remove(new LambdaUpdateChainWrapper<>(getBaseMapper(), PipelineInstanceNodeDetailTb.class) remove(new LambdaUpdateChainWrapper<>(getBaseMapper(), PipelineInstanceNodeDetailTb.class).in(PipelineInstanceNodeDetailTb::getNodeId, nodeIds));
.in(PipelineInstanceNodeDetailTb::getNodeId, nodeIds)
);
} }
} }
@Override @Override
public PipelineInstanceNodeDetailTb getLastPipelineInstanceNodeDetailByArgs(PipelineInstanceNodeTb instanceNode) { public PipelineInstanceNodeDetailTb getLastPipelineInstanceNodeDetailByArgs(PipelineInstanceNodeTb instanceNode) {
List<PipelineInstanceNodeDetailTb> pipelineInstanceNodeDetailList = list(new LambdaQueryChainWrapper<>(getBaseMapper(), PipelineInstanceNodeDetailTb.class) List<PipelineInstanceNodeDetailTb> pipelineInstanceNodeDetailList = list(
.eq(PipelineInstanceNodeDetailTb::getNodeId, instanceNode.getId()) new LambdaQueryChainWrapper<>(getBaseMapper(), PipelineInstanceNodeDetailTb.class).eq(PipelineInstanceNodeDetailTb::getNodeId, instanceNode.getId())
.eq(PipelineInstanceNodeDetailTb::getNodeCode, instanceNode.getCode()) .eq(PipelineInstanceNodeDetailTb::getNodeCode, instanceNode.getCode()).orderByDesc(PipelineInstanceNodeDetailTb::getStartTime));
.orderByDesc(PipelineInstanceNodeDetailTb::getStartTime)
);
// 明细为空,返回节点状态 // 明细为空,返回节点状态
if (pipelineInstanceNodeDetailList.isEmpty()) { if (pipelineInstanceNodeDetailList.isEmpty()) {
PipelineInstanceNodeDetailTb pipelineInstanceNodeDetailTb = new PipelineInstanceNodeDetailTb(); PipelineInstanceNodeDetailTb pipelineInstanceNodeDetailTb = new PipelineInstanceNodeDetailTb();
@@ -110,10 +104,8 @@ public class PipelineInstanceNodeDetailServiceImpl extends ServiceImpl<PipelineI
@Override @Override
public List<PipelineInstanceNodeDetailTb> queryPipelineInstanceNodeDetailByArgs(PipelineInstanceNodeTb instanceNode) { public List<PipelineInstanceNodeDetailTb> queryPipelineInstanceNodeDetailByArgs(PipelineInstanceNodeTb instanceNode) {
return list(new LambdaQueryChainWrapper<>(getBaseMapper(), PipelineInstanceNodeDetailTb.class) return list(
.eq(PipelineInstanceNodeDetailTb::getNodeId, instanceNode.getId()) new LambdaQueryChainWrapper<>(getBaseMapper(), PipelineInstanceNodeDetailTb.class).eq(PipelineInstanceNodeDetailTb::getNodeId, instanceNode.getId())
.eq(PipelineInstanceNodeDetailTb::getNodeCode, instanceNode.getCode()) .eq(PipelineInstanceNodeDetailTb::getNodeCode, instanceNode.getCode()).orderByAsc(PipelineInstanceNodeDetailTb::getStartTime));
.orderByAsc(PipelineInstanceNodeDetailTb::getStartTime)
);
} }
} }
@@ -16,7 +16,7 @@
package cn.odboy.devops.service.core.impl; package cn.odboy.devops.service.core.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum; import cn.odboy.devops.framework.pipeline.constant.PipelineStatusEnum;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.dal.dataobject.PipelineInstanceTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceTb;
import cn.odboy.devops.framework.pipeline.model.PipelineNodeTemplateVo; import cn.odboy.devops.framework.pipeline.model.PipelineNodeTemplateVo;
@@ -75,10 +75,8 @@ public class PipelineInstanceNodeServiceImpl extends ServiceImpl<PipelineInstanc
} }
public PipelineInstanceNodeTb getPipelineInstanceNodeByArgs(Long instanceId, String code) { public PipelineInstanceNodeTb getPipelineInstanceNodeByArgs(Long instanceId, String code) {
return one(new LambdaQueryChainWrapper<>(getBaseMapper(), PipelineInstanceNodeTb.class) return one(new LambdaQueryChainWrapper<>(getBaseMapper(), PipelineInstanceNodeTb.class).eq(PipelineInstanceNodeTb::getInstanceId, instanceId)
.eq(PipelineInstanceNodeTb::getInstanceId, instanceId) .eq(PipelineInstanceNodeTb::getCode, code));
.eq(PipelineInstanceNodeTb::getCode, code)
);
} }
@Override @Override
@@ -93,10 +91,9 @@ public class PipelineInstanceNodeServiceImpl extends ServiceImpl<PipelineInstanc
} }
} }
// 更新节点状态 // 更新节点状态
List<PipelineInstanceNodeTb> instanceNodeList = list(new LambdaQueryChainWrapper<>(getBaseMapper(), PipelineInstanceNodeTb.class) List<PipelineInstanceNodeTb> instanceNodeList = list(
.eq(PipelineInstanceNodeTb::getInstanceId, pipelineInstanceTb.getInstanceId()) new LambdaQueryChainWrapper<>(getBaseMapper(), PipelineInstanceNodeTb.class).eq(PipelineInstanceNodeTb::getInstanceId,
.eq(PipelineInstanceNodeTb::getCode, penddingNodeList) pipelineInstanceTb.getInstanceId()).eq(PipelineInstanceNodeTb::getCode, penddingNodeList));
);
if (CollUtil.isNotEmpty(instanceNodeList)) { if (CollUtil.isNotEmpty(instanceNodeList)) {
Date nowTime = new Date(); Date nowTime = new Date();
for (PipelineInstanceNodeTb pipelineInstanceNodeTb : instanceNodeList) { for (PipelineInstanceNodeTb pipelineInstanceNodeTb : instanceNodeList) {
@@ -107,20 +104,15 @@ public class PipelineInstanceNodeServiceImpl extends ServiceImpl<PipelineInstanc
} }
updateBatchByIds(instanceNodeList); updateBatchByIds(instanceNodeList);
// 删除节点明细数据 // 删除节点明细数据
List<Long> nodeIds = instanceNodeList.stream() List<Long> nodeIds = instanceNodeList.stream().map(PipelineInstanceNodeTb::getId).distinct().collect(Collectors.toList());
.map(PipelineInstanceNodeTb::getId)
.distinct()
.collect(Collectors.toList());
pipelineInstanceNodeDetailService.removeByNodeIds(nodeIds); pipelineInstanceNodeDetailService.removeByNodeIds(nodeIds);
} }
} }
@Override @Override
public List<PipelineInstanceNodeTb> queryPipelineInstanceNodeListByInstanceId(Long instanceId) { public List<PipelineInstanceNodeTb> queryPipelineInstanceNodeListByInstanceId(Long instanceId) {
return list(new LambdaQueryChainWrapper<>(getBaseMapper(), PipelineInstanceNodeTb.class) return list(new LambdaQueryChainWrapper<>(getBaseMapper(), PipelineInstanceNodeTb.class).eq(PipelineInstanceNodeTb::getInstanceId, instanceId)
.eq(PipelineInstanceNodeTb::getInstanceId, instanceId) .orderByAsc(PipelineInstanceNodeTb::getId));
.orderByAsc(PipelineInstanceNodeTb::getId)
);
} }
@Override @Override
@@ -18,8 +18,8 @@ package cn.odboy.devops.service.core.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.constant.pipeline.PipelineStatusEnum; import cn.odboy.devops.framework.pipeline.constant.PipelineStatusEnum;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeDetailTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeDetailTb;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.dal.dataobject.PipelineInstanceTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceTb;
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.pipeline; package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService; import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor; import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
@@ -45,12 +45,12 @@ public class PipelineNodeApkSignAndroidService extends AbstractPipelineNodeJobSe
public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException { public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException {
// 参数列表 // 参数列表
long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID); long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID);
PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo) jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE); PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo)jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE);
PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode()); PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode());
String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME); String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME);
String env = jobDataMap.getString(PipelineConst.ENV); String env = jobDataMap.getString(PipelineConst.ENV);
List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class); List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class);
PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult) jobDataMap.get(PipelineConst.LAST_NODE_RESULT); PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult)jobDataMap.get(PipelineConst.LAST_NODE_RESULT);
// 步骤执行 // 步骤执行
pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.pipeline; package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService; import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor; import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
@@ -45,12 +45,12 @@ public class PipelineNodeApproveCPlusService extends AbstractPipelineNodeJobServ
public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException { public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException {
// 参数列表 // 参数列表
long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID); long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID);
PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo) jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE); PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo)jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE);
PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode()); PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode());
String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME); String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME);
String env = jobDataMap.getString(PipelineConst.ENV); String env = jobDataMap.getString(PipelineConst.ENV);
List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class); List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class);
PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult) jobDataMap.get(PipelineConst.LAST_NODE_RESULT); PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult)jobDataMap.get(PipelineConst.LAST_NODE_RESULT);
// 步骤执行 // 步骤执行
pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.pipeline; package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService; import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor; import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
@@ -45,12 +45,12 @@ public class PipelineNodeApproveDeployService extends AbstractPipelineNodeJobSer
public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException { public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException {
// 参数列表 // 参数列表
long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID); long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID);
PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo) jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE); PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo)jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE);
PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode()); PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode());
String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME); String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME);
String env = jobDataMap.getString(PipelineConst.ENV); String env = jobDataMap.getString(PipelineConst.ENV);
List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class); List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class);
PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult) jobDataMap.get(PipelineConst.LAST_NODE_RESULT); PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult)jobDataMap.get(PipelineConst.LAST_NODE_RESULT);
// 步骤执行 // 步骤执行
pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.pipeline; package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService; import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor; import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
@@ -45,12 +45,12 @@ public class PipelineNodeApproveTestAndroidService extends AbstractPipelineNodeJ
public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException { public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException {
// 参数列表 // 参数列表
long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID); long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID);
PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo) jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE); PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo)jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE);
PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode()); PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode());
String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME); String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME);
String env = jobDataMap.getString(PipelineConst.ENV); String env = jobDataMap.getString(PipelineConst.ENV);
List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class); List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class);
PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult) jobDataMap.get(PipelineConst.LAST_NODE_RESULT); PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult)jobDataMap.get(PipelineConst.LAST_NODE_RESULT);
// 步骤执行 // 步骤执行
pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.pipeline; package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService; import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor; import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
@@ -45,12 +45,12 @@ public class PipelineNodeBuildAndroidService extends AbstractPipelineNodeJobServ
public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException { public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException {
// 参数列表 // 参数列表
long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID); long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID);
PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo) jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE); PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo)jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE);
PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode()); PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode());
String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME); String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME);
String env = jobDataMap.getString(PipelineConst.ENV); String env = jobDataMap.getString(PipelineConst.ENV);
List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class); List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class);
PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult) jobDataMap.get(PipelineConst.LAST_NODE_RESULT); PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult)jobDataMap.get(PipelineConst.LAST_NODE_RESULT);
// 步骤执行 // 步骤执行
pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.pipeline; package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService; import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor; import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
@@ -45,12 +45,12 @@ public class PipelineNodeBuildCPlusService extends AbstractPipelineNodeJobServic
public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException { public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException {
// 参数列表 // 参数列表
long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID); long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID);
PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo) jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE); PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo)jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE);
PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode()); PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode());
String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME); String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME);
String env = jobDataMap.getString(PipelineConst.ENV); String env = jobDataMap.getString(PipelineConst.ENV);
List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class); List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class);
PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult) jobDataMap.get(PipelineConst.LAST_NODE_RESULT); PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult)jobDataMap.get(PipelineConst.LAST_NODE_RESULT);
// 步骤执行 // 步骤执行
pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.pipeline; package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService; import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor; import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
@@ -45,12 +45,12 @@ public class PipelineNodeBuildIOSService extends AbstractPipelineNodeJobService
public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException { public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException {
// 参数列表 // 参数列表
long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID); long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID);
PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo) jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE); PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo)jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE);
PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode()); PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode());
String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME); String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME);
String env = jobDataMap.getString(PipelineConst.ENV); String env = jobDataMap.getString(PipelineConst.ENV);
List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class); List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class);
PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult) jobDataMap.get(PipelineConst.LAST_NODE_RESULT); PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult)jobDataMap.get(PipelineConst.LAST_NODE_RESULT);
// 步骤执行 // 步骤执行
pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.pipeline; package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService; import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor; import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
@@ -45,12 +45,12 @@ public class PipelineNodeBuildJavaService extends AbstractPipelineNodeJobService
public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException { public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException {
// 参数列表 // 参数列表
long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID); long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID);
PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo) jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE); PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo)jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE);
PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode()); PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode());
String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME); String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME);
String env = jobDataMap.getString(PipelineConst.ENV); String env = jobDataMap.getString(PipelineConst.ENV);
List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class); List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class);
PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult) jobDataMap.get(PipelineConst.LAST_NODE_RESULT); PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult)jobDataMap.get(PipelineConst.LAST_NODE_RESULT);
// 步骤执行 // 步骤执行
pipelineNodeBuildJavaBiz.buildJavaStart(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeBuildJavaBiz.buildJavaStart(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
pipelineNodeBuildJavaBiz.startGitlabPipeline(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeBuildJavaBiz.startGitlabPipeline(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.pipeline; package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService; import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor; import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
@@ -45,12 +45,12 @@ public class PipelineNodeBuildNodeService extends AbstractPipelineNodeJobService
public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException { public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException {
// 参数列表 // 参数列表
long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID); long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID);
PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo) jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE); PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo)jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE);
PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode()); PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode());
String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME); String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME);
String env = jobDataMap.getString(PipelineConst.ENV); String env = jobDataMap.getString(PipelineConst.ENV);
List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class); List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class);
PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult) jobDataMap.get(PipelineConst.LAST_NODE_RESULT); PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult)jobDataMap.get(PipelineConst.LAST_NODE_RESULT);
// 步骤执行 // 步骤执行
pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.pipeline; package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService; import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor; import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
@@ -45,12 +45,12 @@ public class PipelineNodeBuildNpmService extends AbstractPipelineNodeJobService
public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException { public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException {
// 参数列表 // 参数列表
long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID); long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID);
PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo) jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE); PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo)jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE);
PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode()); PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode());
String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME); String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME);
String env = jobDataMap.getString(PipelineConst.ENV); String env = jobDataMap.getString(PipelineConst.ENV);
List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class); List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class);
PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult) jobDataMap.get(PipelineConst.LAST_NODE_RESULT); PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult)jobDataMap.get(PipelineConst.LAST_NODE_RESULT);
// 步骤执行 // 步骤执行
pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.pipeline; package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService; import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor; import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
@@ -45,12 +45,12 @@ public class PipelineNodeBuildPythonService extends AbstractPipelineNodeJobServi
public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException { public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException {
// 参数列表 // 参数列表
long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID); long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID);
PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo) jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE); PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo)jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE);
PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode()); PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode());
String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME); String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME);
String env = jobDataMap.getString(PipelineConst.ENV); String env = jobDataMap.getString(PipelineConst.ENV);
List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class); List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class);
PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult) jobDataMap.get(PipelineConst.LAST_NODE_RESULT); PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult)jobDataMap.get(PipelineConst.LAST_NODE_RESULT);
// 步骤执行 // 步骤执行
pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.pipeline; package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService; import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor; import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
@@ -45,12 +45,12 @@ public class PipelineNodeBuildService extends AbstractPipelineNodeJobService imp
public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException { public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException {
// 参数列表 // 参数列表
long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID); long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID);
PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo) jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE); PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo)jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE);
PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode()); PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode());
String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME); String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME);
String env = jobDataMap.getString(PipelineConst.ENV); String env = jobDataMap.getString(PipelineConst.ENV);
List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class); List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class);
PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult) jobDataMap.get(PipelineConst.LAST_NODE_RESULT); PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult)jobDataMap.get(PipelineConst.LAST_NODE_RESULT);
// 步骤执行 // 步骤执行
pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.pipeline; package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService; import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor; import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
@@ -45,12 +45,12 @@ public class PipelineNodeCheckFlutterVersionService extends AbstractPipelineNode
public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException { public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException {
// 参数列表 // 参数列表
long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID); long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID);
PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo) jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE); PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo)jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE);
PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode()); PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode());
String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME); String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME);
String env = jobDataMap.getString(PipelineConst.ENV); String env = jobDataMap.getString(PipelineConst.ENV);
List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class); List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class);
PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult) jobDataMap.get(PipelineConst.LAST_NODE_RESULT); PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult)jobDataMap.get(PipelineConst.LAST_NODE_RESULT);
// 步骤执行 // 步骤执行
pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.pipeline; package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService; import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor; import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
@@ -47,12 +47,12 @@ public class PipelineNodeDeployApiService extends AbstractPipelineNodeJobService
public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException { public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException {
// 参数列表 // 参数列表
long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID); long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID);
PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo) jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE); PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo)jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE);
PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode()); PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode());
String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME); String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME);
String env = jobDataMap.getString(PipelineConst.ENV); String env = jobDataMap.getString(PipelineConst.ENV);
List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class); List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class);
PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult) jobDataMap.get(PipelineConst.LAST_NODE_RESULT); PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult)jobDataMap.get(PipelineConst.LAST_NODE_RESULT);
// 步骤执行 // 步骤执行
pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.pipeline; package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.dal.dataobject.PipelineTemplateTb; import cn.odboy.devops.dal.dataobject.PipelineTemplateTb;
import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService; import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService;
@@ -50,12 +50,12 @@ public class PipelineNodeDeployJavaService extends AbstractPipelineNodeJobServic
long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID); long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID);
long templateId = jobDataMap.getLong(PipelineConst.TEMPLATE_ID); long templateId = jobDataMap.getLong(PipelineConst.TEMPLATE_ID);
PipelineTemplateTb pipelineTemplate = pipelineTemplateService.getPipelineTemplateById(templateId); PipelineTemplateTb pipelineTemplate = pipelineTemplateService.getPipelineTemplateById(templateId);
PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo) jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE); PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo)jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE);
PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode()); PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode());
String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME); String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME);
String env = jobDataMap.getString(PipelineConst.ENV); String env = jobDataMap.getString(PipelineConst.ENV);
List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class); List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class);
PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult) jobDataMap.get(PipelineConst.LAST_NODE_RESULT); PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult)jobDataMap.get(PipelineConst.LAST_NODE_RESULT);
// 步骤执行 // 步骤执行
pipelineNodeDeployJavaBiz.deployStart(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDeployJavaBiz.deployStart(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
pipelineNodeDeployJavaBiz.deployJavaByWithContextName(pipelineInstanceNode, contextName, env, templateList, lastNodeResult, pipelineTemplate); pipelineNodeDeployJavaBiz.deployJavaByWithContextName(pipelineInstanceNode, contextName, env, templateList, lastNodeResult, pipelineTemplate);
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.pipeline; package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService; import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor; import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
@@ -45,12 +45,12 @@ public class PipelineNodeDeployNodeService extends AbstractPipelineNodeJobServic
public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException { public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException {
// 参数列表 // 参数列表
long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID); long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID);
PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo) jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE); PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo)jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE);
PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode()); PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode());
String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME); String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME);
String env = jobDataMap.getString(PipelineConst.ENV); String env = jobDataMap.getString(PipelineConst.ENV);
List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class); List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class);
PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult) jobDataMap.get(PipelineConst.LAST_NODE_RESULT); PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult)jobDataMap.get(PipelineConst.LAST_NODE_RESULT);
// 步骤执行 // 步骤执行
pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.pipeline; package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.dal.dataobject.PipelineTemplateTb; import cn.odboy.devops.dal.dataobject.PipelineTemplateTb;
import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService; import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService;
@@ -50,12 +50,12 @@ public class PipelineNodeDeployPythonService extends AbstractPipelineNodeJobServ
long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID); long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID);
long templateId = jobDataMap.getLong(PipelineConst.TEMPLATE_ID); long templateId = jobDataMap.getLong(PipelineConst.TEMPLATE_ID);
PipelineTemplateTb pipelineTemplate = pipelineTemplateService.getPipelineTemplateById(templateId); PipelineTemplateTb pipelineTemplate = pipelineTemplateService.getPipelineTemplateById(templateId);
PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo) jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE); PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo)jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE);
PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode()); PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode());
String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME); String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME);
String env = jobDataMap.getString(PipelineConst.ENV); String env = jobDataMap.getString(PipelineConst.ENV);
List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class); List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class);
PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult) jobDataMap.get(PipelineConst.LAST_NODE_RESULT); PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult)jobDataMap.get(PipelineConst.LAST_NODE_RESULT);
// 步骤执行 // 步骤执行
pipelineNodeDeployJavaBiz.deployStart(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDeployJavaBiz.deployStart(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
pipelineNodeDeployJavaBiz.deployJavaByWithContextName(pipelineInstanceNode, contextName, env, templateList, lastNodeResult, pipelineTemplate); pipelineNodeDeployJavaBiz.deployJavaByWithContextName(pipelineInstanceNode, contextName, env, templateList, lastNodeResult, pipelineTemplate);
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.pipeline; package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService; import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor; import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
@@ -45,12 +45,12 @@ public class PipelineNodeHttpGetPluginService extends AbstractPipelineNodeJobSer
public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException { public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException {
// 参数列表 // 参数列表
long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID); long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID);
PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo) jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE); PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo)jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE);
PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode()); PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode());
String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME); String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME);
String env = jobDataMap.getString(PipelineConst.ENV); String env = jobDataMap.getString(PipelineConst.ENV);
List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class); List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class);
PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult) jobDataMap.get(PipelineConst.LAST_NODE_RESULT); PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult)jobDataMap.get(PipelineConst.LAST_NODE_RESULT);
// 步骤执行 // 步骤执行
pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.pipeline; package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService; import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor; import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
@@ -45,12 +45,12 @@ public class PipelineNodeHttpPostPluginService extends AbstractPipelineNodeJobSe
public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException { public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException {
// 参数列表 // 参数列表
long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID); long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID);
PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo) jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE); PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo)jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE);
PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode()); PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode());
String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME); String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME);
String env = jobDataMap.getString(PipelineConst.ENV); String env = jobDataMap.getString(PipelineConst.ENV);
List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class); List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class);
PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult) jobDataMap.get(PipelineConst.LAST_NODE_RESULT); PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult)jobDataMap.get(PipelineConst.LAST_NODE_RESULT);
// 步骤执行 // 步骤执行
pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.pipeline; package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService; import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor; import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
@@ -45,12 +45,12 @@ public class PipelineNodeImageScanService extends AbstractPipelineNodeJobService
public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException { public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException {
// 参数列表 // 参数列表
long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID); long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID);
PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo) jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE); PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo)jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE);
PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode()); PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode());
String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME); String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME);
String env = jobDataMap.getString(PipelineConst.ENV); String env = jobDataMap.getString(PipelineConst.ENV);
List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class); List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class);
PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult) jobDataMap.get(PipelineConst.LAST_NODE_RESULT); PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult)jobDataMap.get(PipelineConst.LAST_NODE_RESULT);
// 步骤执行 // 步骤执行
pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.pipeline; package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService; import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor; import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
@@ -47,12 +47,12 @@ public class PipelineNodeInitService extends AbstractPipelineNodeJobService impl
public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException { public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException {
// 参数列表 // 参数列表
long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID); long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID);
PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo) jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE); PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo)jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE);
PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode()); PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode());
String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME); String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME);
String env = jobDataMap.getString(PipelineConst.ENV); String env = jobDataMap.getString(PipelineConst.ENV);
List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class); List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class);
PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult) jobDataMap.get(PipelineConst.LAST_NODE_RESULT); PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult)jobDataMap.get(PipelineConst.LAST_NODE_RESULT);
// 步骤执行 // 步骤执行
pipelineNodeInitBiz.initStart(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeInitBiz.initStart(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
pipelineNodeInitBiz.createReleaseBranch(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeInitBiz.createReleaseBranch(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.pipeline; package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService; import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor; import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
@@ -44,12 +44,12 @@ public class PipelineNodeMergeBranchService extends AbstractPipelineNodeJobServi
public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws Exception { public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws Exception {
// 参数列表 // 参数列表
long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID); long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID);
PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo) jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE); PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo)jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE);
PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode()); PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode());
String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME); String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME);
String env = jobDataMap.getString(PipelineConst.ENV); String env = jobDataMap.getString(PipelineConst.ENV);
List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class); List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class);
PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult) jobDataMap.get(PipelineConst.LAST_NODE_RESULT); PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult)jobDataMap.get(PipelineConst.LAST_NODE_RESULT);
// 步骤执行 // 步骤执行
pipelineNodeMergeBranchBiz.mergeBranchStart(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeMergeBranchBiz.mergeBranchStart(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
pipelineNodeMergeBranchBiz.integrationAreaBranchMergeRelease(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeMergeBranchBiz.integrationAreaBranchMergeRelease(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.pipeline; package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService; import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor; import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
@@ -45,12 +45,12 @@ public class PipelineNodeMergeConfirmService extends AbstractPipelineNodeJobServ
public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException { public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException {
// 参数列表 // 参数列表
long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID); long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID);
PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo) jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE); PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo)jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE);
PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode()); PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode());
String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME); String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME);
String env = jobDataMap.getString(PipelineConst.ENV); String env = jobDataMap.getString(PipelineConst.ENV);
List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class); List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class);
PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult) jobDataMap.get(PipelineConst.LAST_NODE_RESULT); PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult)jobDataMap.get(PipelineConst.LAST_NODE_RESULT);
// 步骤执行 // 步骤执行
pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
@@ -15,7 +15,7 @@
*/ */
package cn.odboy.devops.service.pipeline; package cn.odboy.devops.service.pipeline;
import cn.odboy.devops.constant.pipeline.PipelineConst; import cn.odboy.devops.framework.pipeline.constant.PipelineConst;
import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb; import cn.odboy.devops.dal.dataobject.PipelineInstanceNodeTb;
import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService; import cn.odboy.devops.framework.pipeline.AbstractPipelineNodeJobService;
import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor; import cn.odboy.devops.framework.pipeline.core.PipelineNodeJobExecutor;
@@ -45,12 +45,12 @@ public class PipelineNodeMergeMasterService extends AbstractPipelineNodeJobServi
public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException { public PipelineNodeJobExecuteResult execute(JobDataMap jobDataMap) throws BadRequestException {
// 参数列表 // 参数列表
long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID); long instanceId = jobDataMap.getLong(PipelineConst.INSTANCE_ID);
PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo) jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE); PipelineNodeTemplateVo currentNodeTemplate = (PipelineNodeTemplateVo)jobDataMap.get(PipelineConst.CURRENT_NODE_TEMPLATE);
PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode()); PipelineInstanceNodeTb pipelineInstanceNode = getCurrentNodeInfo(instanceId, currentNodeTemplate.getCode());
String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME); String contextName = jobDataMap.getString(PipelineConst.CONTEXT_NAME);
String env = jobDataMap.getString(PipelineConst.ENV); String env = jobDataMap.getString(PipelineConst.ENV);
List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class); List<PipelineNodeTemplateVo> templateList = JSON.parseArray(jobDataMap.getString(PipelineConst.TEMPLATE), PipelineNodeTemplateVo.class);
PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult) jobDataMap.get(PipelineConst.LAST_NODE_RESULT); PipelineNodeJobExecuteResult lastNodeResult = (PipelineNodeJobExecuteResult)jobDataMap.get(PipelineConst.LAST_NODE_RESULT);
// 步骤执行 // 步骤执行
pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.start(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);
pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult); pipelineNodeDemoBiz.finish(pipelineInstanceNode, contextName, env, templateList, lastNodeResult);

Some files were not shown because too many files have changed in this diff Show More