diff --git a/cutejava/cutejava-common/pom.xml b/cutejava/cutejava-common/pom.xml
index e05dfe46..6ea3d642 100644
--- a/cutejava/cutejava-common/pom.xml
+++ b/cutejava/cutejava-common/pom.xml
@@ -4,18 +4,14 @@
cutejava
cn.odboy
- 1.3.0
+ 1.3.1
4.0.0
-
- 5.8.36
-
-
cutejava-common
公共模块
-
+
cn.hutool
hutool-all
diff --git a/cutejava/cutejava-domain/pom.xml b/cutejava/cutejava-domain/pom.xml
index 2790b210..bead4cae 100644
--- a/cutejava/cutejava-domain/pom.xml
+++ b/cutejava/cutejava-domain/pom.xml
@@ -4,7 +4,7 @@
cutejava
cn.odboy
- 1.3.0
+ 1.3.1
4.0.0
@@ -18,7 +18,7 @@
cn.odboy
cutejava-common
- 1.3.0
+ 1.3.1
\ No newline at end of file
diff --git a/cutejava/cutejava-domain/src/main/java/cn/odboy/model/pipeline/model/PipelineNodeVo.java b/cutejava/cutejava-domain/src/main/java/cn/odboy/model/pipeline/model/PipelineNodeVo.java
new file mode 100644
index 00000000..fb9e4d32
--- /dev/null
+++ b/cutejava/cutejava-domain/src/main/java/cn/odboy/model/pipeline/model/PipelineNodeVo.java
@@ -0,0 +1,67 @@
+package cn.odboy.model.pipeline.model;
+
+import cn.odboy.base.MyObject;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.util.List;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class PipelineNodeVo extends MyObject {
+ /**
+ * 业务节点名称
+ */
+ private String name;
+ /**
+ * 是否可以点击
+ */
+ private Boolean click = false;
+ /**
+ * 功能按钮列表,与click互斥
+ */
+ private List buttonList;
+ /**
+ * 业务编码(createReleaseBranch、mergeCode)
+ */
+ private String bizCode;
+ /**
+ * 业务节点开始时间
+ */
+ private Long startTimeMillis;
+ /**
+ * 业务节点耗时
+ */
+ private Long durationMillis;
+ /**
+ * 业务节点执行状态(success 成功, error 失败, running 运行中)
+ */
+ private String executeStatus;
+ /**
+ * 业务节点结果描述(执行成功)
+ */
+ private String resultDesc;
+
+ /**
+ * 流水线节点功能按钮
+ */
+ @Data
+ @EqualsAndHashCode(callSuper = false)
+ public static class PipelineNodeOperationButton extends MyObject {
+ /**
+ * 请求方式(get、post)
+ */
+ private String method;
+ /**
+ * 请求路径(/api/doCheck?id=1&bizCode=)
+ */
+ private String requestUrl;
+ /**
+ * 按钮名称(通过、打回)
+ */
+ private String text;
+ /**
+ * 按钮类型(execute 请求url、link 跳转三方)
+ */
+ private String type;
+ }
+}
diff --git a/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/MenuMetaModel.java b/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/MenuMetaVo.java
similarity index 91%
rename from cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/MenuMetaModel.java
rename to cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/MenuMetaVo.java
index b266e170..2d9fd0bc 100644
--- a/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/MenuMetaModel.java
+++ b/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/MenuMetaVo.java
@@ -9,7 +9,7 @@ import lombok.EqualsAndHashCode;
@Data
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
-public class MenuMetaModel extends MyObject {
+public class MenuMetaVo extends MyObject {
@ApiModelProperty(value = "菜单标题")
private String title;
diff --git a/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/RoleCodeModel.java b/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/RoleCodeVo.java
similarity index 87%
rename from cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/RoleCodeModel.java
rename to cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/RoleCodeVo.java
index 60aac95f..05bb4edc 100644
--- a/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/RoleCodeModel.java
+++ b/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/RoleCodeVo.java
@@ -12,7 +12,7 @@ import org.springframework.security.core.GrantedAuthority;
@Data
@NoArgsConstructor
@AllArgsConstructor
-public class RoleCodeModel implements GrantedAuthority {
+public class RoleCodeVo implements GrantedAuthority {
@ApiModelProperty(value = "角色名")
private String authority;
diff --git a/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/SimpleUserModel.java b/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/SimpleUserVo.java
similarity index 96%
rename from cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/SimpleUserModel.java
rename to cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/SimpleUserVo.java
index 234c3c20..18913dad 100644
--- a/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/SimpleUserModel.java
+++ b/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/SimpleUserVo.java
@@ -12,7 +12,7 @@ import java.util.Set;
@Data
@EqualsAndHashCode(callSuper = false)
-public class SimpleUserModel extends MyObject {
+public class SimpleUserVo extends MyObject {
@ApiModelProperty(value = "ID", hidden = true)
private Long id;
@ApiModelProperty(value = "用户角色")
diff --git a/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/UserJwtModel.java b/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/UserJwtVo.java
similarity index 87%
rename from cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/UserJwtModel.java
rename to cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/UserJwtVo.java
index 2d60e69b..5947a05d 100644
--- a/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/UserJwtModel.java
+++ b/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/UserJwtVo.java
@@ -12,7 +12,7 @@ import java.util.stream.Collectors;
@Getter
@AllArgsConstructor
-public class UserJwtModel implements UserDetails {
+public class UserJwtVo implements UserDetails {
@ApiModelProperty(value = "用户")
private final User user;
@@ -21,10 +21,10 @@ public class UserJwtModel implements UserDetails {
private final List dataScopes;
@ApiModelProperty(value = "角色")
- private final List authorities;
+ private final List authorities;
public Set getRoles() {
- return authorities.stream().map(RoleCodeModel::getAuthority).collect(Collectors.toSet());
+ return authorities.stream().map(RoleCodeVo::getAuthority).collect(Collectors.toSet());
}
@Override
diff --git a/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/UserOnlineModel.java b/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/UserOnlineVo.java
similarity index 96%
rename from cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/UserOnlineModel.java
rename to cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/UserOnlineVo.java
index c52aa008..98d6b8f1 100644
--- a/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/UserOnlineModel.java
+++ b/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/model/UserOnlineVo.java
@@ -8,7 +8,7 @@ import java.util.Date;
* 在线用户
*/
@Data
-public class UserOnlineModel {
+public class UserOnlineVo {
@ApiModelProperty(value = "Token编号")
private String uid;
diff --git a/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/response/MenuResponse.java b/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/response/MenuResponse.java
index 35233a2d..8f6747c9 100644
--- a/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/response/MenuResponse.java
+++ b/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/response/MenuResponse.java
@@ -1,7 +1,7 @@
package cn.odboy.model.system.response;
import cn.odboy.base.MyObject;
-import cn.odboy.model.system.model.MenuMetaModel;
+import cn.odboy.model.system.model.MenuMetaVo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -33,7 +33,7 @@ public class MenuResponse extends MyObject {
private Boolean alwaysShow;
@ApiModelProperty(value = "元数据")
- private MenuMetaModel meta;
+ private MenuMetaVo meta;
@ApiModelProperty(value = "子路由")
private List children;
diff --git a/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/response/UserInfoResponse.java b/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/response/UserInfoResponse.java
index 92999a30..9281aa84 100644
--- a/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/response/UserInfoResponse.java
+++ b/cutejava/cutejava-domain/src/main/java/cn/odboy/model/system/response/UserInfoResponse.java
@@ -1,8 +1,8 @@
package cn.odboy.model.system.response;
import cn.odboy.base.MyObject;
-import cn.odboy.model.system.model.RoleCodeModel;
-import cn.odboy.model.system.model.SimpleUserModel;
+import cn.odboy.model.system.model.RoleCodeVo;
+import cn.odboy.model.system.model.SimpleUserVo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
@@ -12,11 +12,11 @@ import java.util.stream.Collectors;
@Data
@EqualsAndHashCode(callSuper = false)
public class UserInfoResponse extends MyObject {
- private SimpleUserModel user;
+ private SimpleUserVo user;
private List dataScopes;
- private List authorities;
+ private List authorities;
public Set getRoles() {
- return authorities.stream().map(RoleCodeModel::getAuthority).collect(Collectors.toSet());
+ return authorities.stream().map(RoleCodeVo::getAuthority).collect(Collectors.toSet());
}
}
diff --git a/cutejava/cutejava-job/pom.xml b/cutejava/cutejava-job/pom.xml
index 981bb409..dd56510e 100644
--- a/cutejava/cutejava-job/pom.xml
+++ b/cutejava/cutejava-job/pom.xml
@@ -4,7 +4,7 @@
cutejava
cn.odboy
- 1.3.0
+ 1.3.1
4.0.0
@@ -15,7 +15,7 @@
cn.odboy
cutejava-tools
- 1.3.0
+ 1.3.1
diff --git a/cutejava/cutejava-pipline/pom.xml b/cutejava/cutejava-pipline/pom.xml
new file mode 100644
index 00000000..1532defa
--- /dev/null
+++ b/cutejava/cutejava-pipline/pom.xml
@@ -0,0 +1,28 @@
+
+
+
+ cutejava
+ cn.odboy
+ 1.3.1
+
+ 4.0.0
+
+ cutejava-pipline
+ 流水线模块
+
+
+
+
+ cn.hutool
+ hutool-all
+ ${hutool.version}
+
+
+
+ cn.odboy
+ cutejava-domain
+ 1.3.1
+
+
+
\ No newline at end of file
diff --git a/cutejava/cutejava-pipline/src/main/java/cn/odboy/context/PipelineManage.java b/cutejava/cutejava-pipline/src/main/java/cn/odboy/context/PipelineManage.java
new file mode 100644
index 00000000..e411a526
--- /dev/null
+++ b/cutejava/cutejava-pipline/src/main/java/cn/odboy/context/PipelineManage.java
@@ -0,0 +1,89 @@
+package cn.odboy.context;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.thread.ThreadUtil;
+import cn.hutool.core.util.IdUtil;
+import cn.odboy.exception.BadRequestException;
+import cn.odboy.handler.SerialPipelineNodeHandler;
+import cn.odboy.model.pipeline.model.PipelineNodeVo;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 流水线管理工具
+ *
+ * @author odboy
+ */
+@Slf4j
+@Component
+public class PipelineManage {
+ private static final PipelineTaskPool pipelineTaskPool = new PipelineTaskPool("DefaultPipelineTaskPool");
+
+ public void execute() {
+ String pipelineId = IdUtil.objectId();
+ pipelineTaskPool.submitTask(pipelineId, () -> {
+ List pipelineNodeVos = initialize();
+ for (PipelineNodeVo pipelineNodeVo : pipelineNodeVos) {
+ if (Thread.currentThread().isInterrupted()) {
+ log.info("流水线被强行终止...");
+ break;
+ }
+ executePipeline(pipelineId, pipelineNodeVo);
+ while (!Thread.currentThread().isInterrupted() && "running".equals(pipelineNodeVo.getExecuteStatus())) {
+ log.info("流水线执行中...");
+ ThreadUtil.safeSleep(2000);
+ }
+ }
+ });
+ ThreadUtil.safeSleep(1000000);
+ }
+
+ private void executePipeline(String pipelineId, PipelineNodeVo pipelineNodeVo) {
+ String pipelineServiceName = String.format("pipeline:%s", pipelineNodeVo.getBizCode());
+ SerialPipelineNodeHandler