biz-process 部分类的逻辑转写成java
This commit is contained in:
parent
a4c12a7f78
commit
0d6ba0ff33
@ -0,0 +1,17 @@
|
||||
package cd.casic.ci.common.pipeline.enums;
|
||||
|
||||
public enum AuthSystemType {
|
||||
// v0权限中心
|
||||
V0_AUTH_TYPE("v0"),
|
||||
|
||||
// v3权限中心
|
||||
V3_AUTH_TYPE("v3"),
|
||||
|
||||
// rbac权限中心
|
||||
RBAC_AUTH_TYPE("rbac");
|
||||
private String value;
|
||||
|
||||
AuthSystemType(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package cd.casic.ci.common.pipeline.pojo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Schema(title = "分页数据包装模型")
|
||||
public class Pagination<T> {
|
||||
|
||||
@Schema(title = "是否有下一页", required = true)
|
||||
private boolean hasNext;
|
||||
|
||||
@Schema(title = "数据", required = true)
|
||||
private List<T> records;
|
||||
|
||||
@Schema(title = "总记录行数", required = false)
|
||||
private Long count;
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
package cd.casic.ci.common.pipeline.pojo.auth;
|
||||
|
||||
|
||||
import cd.casic.ci.common.pipeline.enums.AuthSystemType;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Schema(title = "筛选项目条件实体")
|
||||
public class ProjectConditionDTO {
|
||||
|
||||
@Schema(title = "中心ID")
|
||||
private Long centerId;
|
||||
|
||||
@Schema(title = "部门ID")
|
||||
private Long deptId;
|
||||
|
||||
@Schema(title = "bgId")
|
||||
private Long bgId;
|
||||
|
||||
@Schema(title = "bg列表")
|
||||
private List<Long> bgIdList;
|
||||
|
||||
@Schema(title = "项目创建人")
|
||||
private String projectCreator;
|
||||
|
||||
@Schema(title = "排除项目code")
|
||||
private List<String> excludedProjectCodes;
|
||||
|
||||
@Schema(title = "项目ID列表")
|
||||
private List<String> projectCodes;
|
||||
|
||||
@Schema(title = "资源类型")
|
||||
private String resourceType;
|
||||
|
||||
@Schema(title = "路由tag")
|
||||
private AuthSystemType routerTag;
|
||||
|
||||
@Schema(title = "是否包含router_tag为null")
|
||||
private Boolean includeNullRouterTag = false;
|
||||
|
||||
@Schema(title = "是否关联产品")
|
||||
private Boolean relatedProduct;
|
||||
|
||||
@Schema(title = "排除创建时间大于该值的项目")
|
||||
private String excludedCreateTime;
|
||||
|
||||
@Schema(title = "是否启用")
|
||||
private Boolean enabled;
|
||||
|
||||
@Schema(title = "渠道代码")
|
||||
private String channelCode;
|
||||
|
||||
@Schema(title = "remoteDev相关")
|
||||
private Boolean queryRemoteDevFlag;
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package cd.casic.ci.process.process.event.engine.control;
|
||||
package cd.casic.ci.process.engine.control;
|
||||
|
||||
|
||||
import cd.casic.ci.common.pipeline.Model;
|
||||
@ -27,9 +27,6 @@ import cd.casic.ci.process.process.service.base.pojo.*;
|
||||
import cd.casic.ci.process.process.service.base.pojo.constant.CallbackConstants;
|
||||
import cd.casic.ci.project.service.ServiceAllocIdResource;
|
||||
import cd.casic.framework.commons.util.watcher.Watcher;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
|
||||
import io.github.resilience4j.circuitbreaker.CallNotPermittedException;
|
@ -0,0 +1,94 @@
|
||||
package cd.casic.ci.process.process.callback.listener;
|
||||
|
||||
|
||||
import cd.casic.ci.process.engine.control.CallBackControl;
|
||||
import cd.casic.ci.project.dal.pojo.ProjectCreateInfo;
|
||||
import cd.casic.ci.project.dal.pojo.ProjectVO;
|
||||
import cd.casic.ci.project.pojo.ProjectUpdateInfo;
|
||||
import cd.casic.ci.project.pojo.mq.ProjectBroadCastEvent;
|
||||
import cd.casic.ci.project.pojo.mq.ProjectCreateBroadCastEvent;
|
||||
import cd.casic.ci.project.pojo.mq.ProjectEnableStatusBroadCastEvent;
|
||||
import cd.casic.ci.project.pojo.mq.ProjectUpdateBroadCastEvent;
|
||||
import cd.casic.ci.project.service.ProjectService;
|
||||
import cd.casic.framework.mq.redis.core.stream.AbstractRedisStreamMessageListener;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class ProjectCallbackEventListener extends AbstractRedisStreamMessageListener<ProjectBroadCastEvent> {
|
||||
@Resource
|
||||
private CallBackControl callBackControl;
|
||||
private ProjectService projectService;
|
||||
@Override
|
||||
public void onMessage(ProjectBroadCastEvent event) {
|
||||
log.info("Receive ProjectEvent from MQ [$event]");
|
||||
try {
|
||||
if (event instanceof ProjectUpdateBroadCastEvent) {
|
||||
onReceiveProjectUpdate((ProjectUpdateBroadCastEvent)event);
|
||||
} else if (event instanceof ProjectEnableStatusBroadCastEvent) {
|
||||
onReceiveProjectEnable((ProjectEnableStatusBroadCastEvent)event);
|
||||
} else if (event instanceof ProjectCreateBroadCastEvent) {
|
||||
onReceiveProjectCreate((ProjectCreateBroadCastEvent)event);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("BKSystemMonitor| project callback listener execute error", e);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 处理创建项目事件
|
||||
* @param event ProjectCreateBroadCastEvent
|
||||
*/
|
||||
private void onReceiveProjectCreate(ProjectCreateBroadCastEvent event){
|
||||
ProjectCreateInfo projectInfo = event.getProjectInfo();
|
||||
callBackControl.projectCreate(
|
||||
projectInfo.getEnglishName(),
|
||||
projectInfo.getProjectName(),
|
||||
event.getUserId());
|
||||
}
|
||||
/**
|
||||
* 处理更新项目事件
|
||||
* @param event ProjectUpdateBroadCastEvent
|
||||
*/
|
||||
private void onReceiveProjectUpdate(ProjectUpdateBroadCastEvent event){
|
||||
ProjectUpdateInfo projectInfo = event.getProjectInfo();
|
||||
callBackControl.projectUpdate(
|
||||
projectInfo.getEnglishName(),
|
||||
projectInfo.getProjectName(),
|
||||
event.getUserId()
|
||||
);
|
||||
}
|
||||
/**
|
||||
* 处理项目禁用事件
|
||||
* @param event ProjectEnableStatusBroadCastEvent
|
||||
*/
|
||||
private void onReceiveProjectEnable(ProjectEnableStatusBroadCastEvent event){
|
||||
ProjectVO project = getProject(event.getProjectId());
|
||||
if (project!=null) {
|
||||
if (event.getEnable()) {
|
||||
callBackControl.projectEnable(event.getProjectId(),project.getProjectName(),event.getUserId());
|
||||
} else {
|
||||
callBackControl.projectDisable(event.getProjectId(),project.getProjectName(),event.getUserId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private ProjectVO getProject(String projectEnglishName){
|
||||
if (StringUtils.isEmpty(projectEnglishName)) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
return projectService.getByEnglishName(projectEnglishName);
|
||||
} catch (Exception e) {
|
||||
log.warn(
|
||||
"fail to get project info|projectEnglishName[$projectEnglishName]",
|
||||
e
|
||||
);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
package cd.casic.ci.process.process.event.callback.listener;
|
||||
|
||||
|
||||
import cd.casic.ci.project.pojo.mq.ProjectBroadCastEvent;
|
||||
import cd.casic.ci.project.pojo.mq.ProjectCreateBroadCastEvent;
|
||||
import cd.casic.ci.project.pojo.mq.ProjectEnableStatusBroadCastEvent;
|
||||
import cd.casic.ci.project.pojo.mq.ProjectUpdateBroadCastEvent;
|
||||
import cd.casic.framework.mq.redis.core.stream.AbstractRedisStreamMessageListener;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class ProjectCallbackEventListener extends AbstractRedisStreamMessageListener<ProjectBroadCastEvent> {
|
||||
@Override
|
||||
public void onMessage(ProjectBroadCastEvent message) {
|
||||
log.info("Receive ProjectEvent from MQ [$event]");
|
||||
try {
|
||||
if (message instanceof ProjectUpdateBroadCastEvent) {
|
||||
|
||||
} else if (message instanceof ProjectEnableStatusBroadCastEvent) {
|
||||
|
||||
} else if (message instanceof ProjectCreateBroadCastEvent) {
|
||||
|
||||
}
|
||||
// when (event) {
|
||||
// is ProjectUpdateBroadCastEvent -> {
|
||||
// onReceiveProjectUpdate(event)
|
||||
// }
|
||||
//
|
||||
// is ProjectEnableStatusBroadCastEvent -> {
|
||||
// onReceiveProjectEnable(event)
|
||||
// }
|
||||
//
|
||||
// is ProjectCreateBroadCastEvent -> {
|
||||
// onReceiveProjectCreate(event)
|
||||
// }
|
||||
// }
|
||||
} catch (Exception e) {
|
||||
log.error("BKSystemMonitor| project callback listener execute error", e);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package cd.casic.ci.process.process.dataObject;
|
||||
package cd.casic.ci.project.dal.dto;
|
||||
|
||||
|
||||
import java.util.Date;
|
@ -0,0 +1,7 @@
|
||||
package cd.casic.ci.project.enums;
|
||||
|
||||
public enum PluginDetailsDisplayOrder {
|
||||
LOG,
|
||||
ARTIFACT,
|
||||
CONFIG
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
package cd.casic.ci.project.enums;
|
||||
|
||||
public enum ProjectCollation {
|
||||
DEFAULT,
|
||||
|
||||
ASC,
|
||||
|
||||
DESC;
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
package cd.casic.ci.project.enums;
|
||||
|
||||
public enum ProjectSortType {
|
||||
PROJECT_NAME,
|
||||
ENGLISH_NAME
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
package cd.casic.ci.project.pojo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Schema(title = "运营产品")
|
||||
public class OperationalProductVO {
|
||||
|
||||
@Schema(title = "运营产品ID")
|
||||
@JsonProperty(value = "ProductId", required = false)
|
||||
private Integer productId;
|
||||
|
||||
@Schema(title = "运营产品ID")
|
||||
@JsonProperty(value = "ProductName", required = false)
|
||||
private String productName;
|
||||
|
||||
@Schema(title = "运营产品ID")
|
||||
@JsonProperty(value = "PlanProductId", required = false)
|
||||
private Integer planProductId;
|
||||
|
||||
@Schema(title = "规划产品名称")
|
||||
@JsonProperty(value = "PlanProductName", required = false)
|
||||
private String planProductName;
|
||||
|
||||
@Schema(title = "部门ID")
|
||||
@JsonProperty(value = "DeptId", required = false)
|
||||
private String deptId;
|
||||
|
||||
@Schema(title = "部门名称")
|
||||
@JsonProperty(value = "DeptName", required = false)
|
||||
private String deptName;
|
||||
|
||||
@Schema(title = "BgId")
|
||||
@JsonProperty(value = "BgId", required = false)
|
||||
private String bgId;
|
||||
|
||||
@Schema(title = "Bg名称")
|
||||
@JsonProperty(value = "BgName", required = false)
|
||||
private String bgName;
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
package cd.casic.ci.project.pojo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Schema(title = "项目基本信息")
|
||||
public class ProjectBaseInfo {
|
||||
|
||||
@Schema(title = "主键ID")
|
||||
private Long id;
|
||||
|
||||
@Schema(title = "英文缩写")
|
||||
private String englishName;
|
||||
|
||||
@Schema(title = "项目名称")
|
||||
private String projectName;
|
||||
|
||||
@Schema(title = "是否启用")
|
||||
private Boolean enabled;
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package cd.casic.ci.project.pojo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Schema(title = "项目--权限")
|
||||
public class ProjectByConditionDTO {
|
||||
|
||||
@Schema(title = "项目名称")
|
||||
private String projectName;
|
||||
|
||||
@Schema(title = "项目英文名称")
|
||||
private String englishName;
|
||||
|
||||
@Schema(title = "权限")
|
||||
private boolean permission;
|
||||
|
||||
@Schema(title = "环境路由")
|
||||
private String routerTag;
|
||||
|
||||
@Schema(title = "bgId")
|
||||
private Long bgId;
|
||||
|
||||
@Schema(title = "remotedev管理员")
|
||||
private String remotedevManager;
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
package cd.casic.ci.project.pojo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Schema
|
||||
public class ProjectCreateUserInfo {
|
||||
|
||||
@Schema(title = "操作人")
|
||||
private String createUserId;
|
||||
|
||||
@Schema(title = "待分配的角色名称")
|
||||
private String roleName;
|
||||
|
||||
@Schema(title = "角色Id")
|
||||
private Integer roleId;
|
||||
|
||||
@Schema(title = "组ID")
|
||||
private Integer groupId;
|
||||
|
||||
@Schema(title = "目标用户")
|
||||
private List<String> userIds = new ArrayList<>();
|
||||
|
||||
@Schema(title = "目标部门")
|
||||
private List<String> deptIds = new ArrayList<>();
|
||||
|
||||
@Schema(title = "资源类型")
|
||||
private String resourceType;
|
||||
|
||||
@Schema(title = "资源ID")
|
||||
private String resourceCode;
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package cd.casic.ci.project.pojo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ProjectLogo {
|
||||
private String logoAddr;
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
package cd.casic.ci.project.pojo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Schema(title = "项目组织")
|
||||
public class ProjectOrganizationInfo {
|
||||
|
||||
@Schema(title = "事业群ID")
|
||||
private Long bgId;
|
||||
|
||||
@Schema(title = "事业群名字")
|
||||
private String bgName;
|
||||
|
||||
@Schema(title = "业务线ID")
|
||||
private Long businessLineId;
|
||||
|
||||
@Schema(title = "业务线名称")
|
||||
private String businessLineName;
|
||||
|
||||
@Schema(title = "中心ID")
|
||||
private Long centerId;
|
||||
|
||||
@Schema(title = "中心名称")
|
||||
private String centerName;
|
||||
|
||||
@Schema(title = "部门ID")
|
||||
private Long deptId;
|
||||
|
||||
@Schema(title = "部门名称")
|
||||
private String deptName;
|
||||
|
||||
@Schema(title = "是否需要更正组织")
|
||||
private boolean needFix = true;
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package cd.casic.ci.project.pojo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
|
||||
@Schema(title = "修改项目创建人")
|
||||
public class ProjectUpdateCreatorDTO {
|
||||
@Schema(title = "项目code")
|
||||
private String projectCode;
|
||||
@Schema(title = "创建人")
|
||||
private String creator;
|
||||
}
|
||||
|
@ -0,0 +1,173 @@
|
||||
package cd.casic.ci.project.pojo.vo;
|
||||
|
||||
import cd.casic.ci.project.dal.pojo.SubjectScopeInfo;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Schema(title = "项目-显示模型")
|
||||
@SuppressWarnings("ALL")
|
||||
public class ProjectDiffVO {
|
||||
|
||||
@Schema(title = "主键ID")
|
||||
private Long id;
|
||||
|
||||
@Schema(title = "项目ID")
|
||||
private String projectId;
|
||||
|
||||
@Schema(title = "项目名称")
|
||||
private String projectName;
|
||||
|
||||
@Schema(title = "审批中项目名称")
|
||||
private String afterProjectName;
|
||||
|
||||
@Schema(title = "项目代码")
|
||||
private String projectCode;
|
||||
|
||||
@Schema(title = "审批状态")
|
||||
private Integer approvalStatus;
|
||||
|
||||
@Schema(title = "审批时间")
|
||||
private String approvalTime;
|
||||
|
||||
@Schema(title = "审批人")
|
||||
private String approver;
|
||||
|
||||
@Schema(title = "创建时间")
|
||||
private String createdAt;
|
||||
|
||||
@Schema(title = "创建人")
|
||||
private String creator;
|
||||
|
||||
@Schema(title = "事业群ID")
|
||||
private String bgId;
|
||||
|
||||
@Schema(title = "审批中事业群ID")
|
||||
private String afterBgId;
|
||||
|
||||
@Schema(title = "事业群名字")
|
||||
private String bgName;
|
||||
|
||||
@Schema(title = "审批中事业群名字")
|
||||
private String afterBgName;
|
||||
|
||||
@Schema(title = "事业线ID")
|
||||
private String businessLineId;
|
||||
|
||||
@Schema(title = "审批中事业线ID")
|
||||
private Long afterBusinessLineId;
|
||||
|
||||
@Schema(title = "事业线名称")
|
||||
private String businessLineName;
|
||||
|
||||
@Schema(title = "审批中事业线名称")
|
||||
private String afterBusinessLineName;
|
||||
|
||||
@Schema(title = "中心ID")
|
||||
private String centerId;
|
||||
|
||||
@Schema(title = "审批中中心ID")
|
||||
private String afterCenterId;
|
||||
|
||||
@Schema(title = "中心名称")
|
||||
private String centerName;
|
||||
|
||||
@Schema(title = "审批中中心名称")
|
||||
private String afterCenterName;
|
||||
|
||||
@Schema(title = "部门ID")
|
||||
private String deptId;
|
||||
|
||||
@Schema(title = "审批中部门ID")
|
||||
private String afterDeptId;
|
||||
|
||||
@Schema(title = "部门名称")
|
||||
private String deptName;
|
||||
|
||||
@Schema(title = "审批中部门名称")
|
||||
private String afterDeptName;
|
||||
|
||||
@Schema(title = "描述")
|
||||
private String description;
|
||||
|
||||
@Schema(title = "审批中描述")
|
||||
private String afterDescription;
|
||||
|
||||
@Schema(title = "英文缩写")
|
||||
private String englishName;
|
||||
|
||||
@Schema(title = "logo地址")
|
||||
private String logoAddr;
|
||||
|
||||
@Schema(title = "审批中logo地址")
|
||||
private String afterLogoAddr;
|
||||
|
||||
@Schema(title = "评论")
|
||||
private String remark;
|
||||
|
||||
@Schema(title = "修改时间")
|
||||
private String updatedAt;
|
||||
|
||||
@Schema(title = "修改人")
|
||||
private String updator;
|
||||
|
||||
@Schema(title = "项目最大可授权人员范围")
|
||||
private List<SubjectScopeInfo> subjectScopes;
|
||||
|
||||
@Schema(title = "审批中的项目最大可授权人员范围")
|
||||
private List<SubjectScopeInfo> afterSubjectScopes;
|
||||
|
||||
@Schema(title = "项目性质")
|
||||
private Integer authSecrecy;
|
||||
|
||||
@Schema(title = "审批中项目性质")
|
||||
private Integer afterAuthSecrecy;
|
||||
|
||||
@Schema(title = "项目类型")
|
||||
private Integer projectType;
|
||||
|
||||
@Schema(title = "审批中项目类型")
|
||||
private Integer afterProjectType;
|
||||
|
||||
@Schema(title = "运营产品ID")
|
||||
private Integer productId;
|
||||
|
||||
@Schema(title = "审批中运营产品ID")
|
||||
private Integer afterProductId;
|
||||
|
||||
@Schema(title = "运营产品名称")
|
||||
private String productName;
|
||||
|
||||
@Schema(title = "审批中运营产品名称")
|
||||
private String afterProductName;
|
||||
|
||||
@Schema(title = "流水线语言风格")
|
||||
private String pipelineDialect;
|
||||
|
||||
@Schema(title = "审批中流水线语言风格")
|
||||
private String afterPipelineDialect;
|
||||
|
||||
@Schema(title = "是否开启流水线命名提示")
|
||||
private Boolean enablePipelineNameTips = false;
|
||||
|
||||
@Schema(title = "审批中是否开启流水线命名提示")
|
||||
private Boolean afterEnablePipelineNameTips = false;
|
||||
|
||||
@Schema(title = "流水线命名格式")
|
||||
private String pipelineNameFormat;
|
||||
|
||||
@Schema(title = "审批中流水线命名格式")
|
||||
private String afterPipelineNameFormat;
|
||||
|
||||
@Schema(title = "构建日志归档阈值(单位:万)")
|
||||
private Integer loggingLineLimit;
|
||||
|
||||
@Schema(title = "审批中构建日志归档阈值(单位:万)")
|
||||
private Integer afterLoggingLineLimit;
|
||||
}
|
@ -0,0 +1,259 @@
|
||||
package cd.casic.ci.project.service;
|
||||
|
||||
|
||||
|
||||
|
||||
import cd.casic.ci.common.pipeline.pojo.Pagination;
|
||||
import cd.casic.ci.common.pipeline.pojo.auth.ProjectConditionDTO;
|
||||
import cd.casic.ci.project.dal.dto.TProjectRecord;
|
||||
import cd.casic.ci.project.dal.pojo.*;
|
||||
import cd.casic.ci.project.enums.*;
|
||||
import cd.casic.ci.project.pojo.*;
|
||||
import cd.casic.ci.project.pojo.vo.ProjectDiffVO;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import javax.security.auth.AuthPermission;
|
||||
import java.io.InputStream;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@SuppressWarnings("ALL")
|
||||
public interface ProjectService {
|
||||
|
||||
/**
|
||||
* 校验项目名称/英文名称是否合法
|
||||
*/
|
||||
void validate(ProjectValidateType validateType, String name, @Nullable String projectId);
|
||||
|
||||
/**
|
||||
* 创建项目信息
|
||||
*/
|
||||
String create(
|
||||
String userId,
|
||||
ProjectCreateInfo projectCreateInfo,
|
||||
@Nullable String accessToken,
|
||||
ProjectCreateExtInfo createExtInfo,
|
||||
@Nullable String defaultProjectId,
|
||||
ProjectChannelCode projectChannel
|
||||
);
|
||||
|
||||
ProjectVO createExtProject(
|
||||
String userId,
|
||||
String projectCode,
|
||||
ProjectCreateInfo projectCreateInfo,
|
||||
boolean needAuth,
|
||||
boolean needValidate,
|
||||
ProjectChannelCode channel
|
||||
);
|
||||
|
||||
/**
|
||||
* 根据项目ID/英文ID获取项目信息对象
|
||||
* @param englishName projectCode 英文ID
|
||||
* @return ProjectVO 如果没有则为null
|
||||
*/
|
||||
ProjectVO getByEnglishName(
|
||||
String userId,
|
||||
String englishName,
|
||||
@Nullable String accessToken
|
||||
);
|
||||
|
||||
/**
|
||||
* 根据项目ID/英文ID获取项目信息对象
|
||||
* @param englishName projectCode 英文ID
|
||||
* @return ProjectVO 如果没有则为null
|
||||
*/
|
||||
ProjectVO show(
|
||||
String userId,
|
||||
String englishName,
|
||||
@Nullable String accessToken
|
||||
);
|
||||
|
||||
/**
|
||||
* 根据项目ID/英文ID获取项目审批中对比信息
|
||||
* @param englishName projectCode 英文ID
|
||||
* @return ProjectDiffVO 如果没有则为null
|
||||
*/
|
||||
ProjectDiffVO diff(String userId, String englishName, @Nullable String accessToken);
|
||||
|
||||
/**
|
||||
* 根据项目ID/英文ID获取项目信息对象
|
||||
* @param englishName projectCode 英文ID
|
||||
* @return ProjectVO 如果没有则为null
|
||||
*/
|
||||
ProjectVO getByEnglishName(String englishName);
|
||||
|
||||
/**
|
||||
* 修改项目信息 englishName是项目英文名,目前平台在api接口上会把他命名成projectId,实际上与t_project表中的project_id字段不同
|
||||
* 后续会统一
|
||||
*/
|
||||
boolean update(
|
||||
String userId,
|
||||
String englishName,
|
||||
ProjectUpdateInfo projectUpdateInfo,
|
||||
@Nullable String accessToken,
|
||||
@Nullable Boolean needApproval
|
||||
);
|
||||
|
||||
// /**
|
||||
// * 更新Logo TODO FormDataContentDisposition类是 org.glassfish库的,
|
||||
// 涉及文件上传模块相关内容先空着后续在看具体解决方案
|
||||
// */
|
||||
// ProjectLogo updateLogo(
|
||||
// String userId,
|
||||
// String englishName,
|
||||
// InputStream inputStream,
|
||||
// FormDataContentDisposition disposition,
|
||||
// @Nullable String accessToken
|
||||
// );
|
||||
|
||||
/**
|
||||
* 上传Logo
|
||||
*/
|
||||
String uploadLogo(
|
||||
String userId,
|
||||
InputStream inputStream,
|
||||
@Nullable String accessToken
|
||||
);
|
||||
|
||||
boolean updateProjectName(String userId, String projectId, String projectName);
|
||||
|
||||
/**
|
||||
* 获取所有项目信息
|
||||
*/
|
||||
List<ProjectVO> list(
|
||||
String userId,
|
||||
@Nullable String accessToken,
|
||||
@Nullable Boolean enabled,
|
||||
boolean unApproved,
|
||||
@Nullable ProjectSortType sortType,
|
||||
@Nullable ProjectCollation collation
|
||||
);
|
||||
|
||||
Pagination<ProjectByConditionDTO> listProjectsForApply(
|
||||
String userId,
|
||||
@Nullable String accessToken,
|
||||
@Nullable String projectName,
|
||||
@Nullable String projectId,
|
||||
int page,
|
||||
int pageSize
|
||||
);
|
||||
|
||||
List<ProjectVO> list(String userId);
|
||||
|
||||
List<ProjectVO> list(Set<String> projectCodes, @Nullable Boolean enabled);
|
||||
|
||||
List<ProjectVO> listOnlyByProjectCode(Set<String> projectCodes);
|
||||
|
||||
List<ProjectVO> list(List<String> projectCodes);
|
||||
|
||||
Page<ProjectVO> list(int limit, int offset);
|
||||
|
||||
Page<ProjectVO> listByChannel(int limit, int offset, List<String> projectChannelCode);
|
||||
|
||||
List<ProjectVO> getAllProject();
|
||||
|
||||
List<ProjectByConditionDTO> listProjectsByCondition(
|
||||
ProjectConditionDTO projectConditionDTO,
|
||||
int limit,
|
||||
int offset
|
||||
);
|
||||
|
||||
/**
|
||||
* 获取用户已的可访问项目列表
|
||||
*/
|
||||
List<ProjectVO> getProjectByUser(String userName);
|
||||
|
||||
HashMap<String, String> getNameByCode(String projectCodes);
|
||||
|
||||
void updateUsableStatus(
|
||||
@Nullable String userId,
|
||||
String englishName,
|
||||
boolean enabled,
|
||||
boolean checkPermission
|
||||
);
|
||||
|
||||
Page<ProjectVO> searchProjectByProjectName(String projectName, int limit, int offset);
|
||||
|
||||
boolean hasCreatePermission(String userId);
|
||||
|
||||
long getMinId();
|
||||
|
||||
long getMaxId();
|
||||
|
||||
List<ProjectBaseInfo> getProjectListById(long minId, long maxId);
|
||||
|
||||
boolean verifyUserProjectPermission(
|
||||
String userId,
|
||||
String projectId,
|
||||
AuthPermission permission,
|
||||
@Nullable String accessToken
|
||||
);
|
||||
|
||||
Set<String> listSecrecyProject();
|
||||
|
||||
boolean createProjectUser(String projectId, ProjectCreateUserInfo createInfo);
|
||||
|
||||
boolean relationIamProject(String projectCode, String relationId);
|
||||
|
||||
ProjectVO getProjectByName(String projectName);
|
||||
|
||||
boolean updateProjectProperties(@Nullable String userId, String projectCode, ProjectProperties properties);
|
||||
|
||||
boolean setDisableWhenInactiveFlag(List<String> projectCodes);
|
||||
|
||||
boolean cancelCreateProject(String userId, String projectId);
|
||||
|
||||
boolean cancelUpdateProject(String userId, String projectId);
|
||||
|
||||
boolean isRbacPermission(String projectId);
|
||||
|
||||
boolean updateProjectSubjectScopes(
|
||||
String projectId,
|
||||
List<SubjectScopeInfo> subjectScopes
|
||||
);
|
||||
|
||||
boolean updateProjectCreator(List<ProjectUpdateCreatorDTO> projectUpdateCreatorDtoList);
|
||||
|
||||
List<OperationalProductVO> getOperationalProducts();
|
||||
|
||||
OperationalProductVO getProductByProductId(int productId);
|
||||
|
||||
List<OperationalProductVO> getOperationalProductsByBgName(String bgName);
|
||||
|
||||
void updateProjectProductId(
|
||||
String englishName,
|
||||
@Nullable String productName,
|
||||
@Nullable Integer productId
|
||||
);
|
||||
|
||||
void updateOrganizationByEnglishName(
|
||||
String englishName,
|
||||
ProjectOrganizationInfo projectOrganizationInfo
|
||||
);
|
||||
|
||||
ProjectOrganizationInfo fixProjectOrganization(
|
||||
TProjectRecord tProjectRecord
|
||||
);
|
||||
|
||||
List<ProjectBaseInfo> getProjectListByProductId(
|
||||
int productId
|
||||
);
|
||||
|
||||
List<String> getExistedEnglishName(
|
||||
List<String> englishNameList
|
||||
);
|
||||
|
||||
boolean remindUserOfRelatedProduct(
|
||||
String userId,
|
||||
String englishName
|
||||
);
|
||||
|
||||
boolean updatePluginDetailsDisplay(
|
||||
String englishName,
|
||||
List<PluginDetailsDisplayOrder> pluginDetailsDisplayOrder
|
||||
);
|
||||
|
||||
String getPipelineDialect(String projectId);
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package cd.casic.ci.project.service.impl;
|
||||
|
||||
|
||||
|
||||
import cd.casic.ci.project.service.ServiceAllocIdResource;
|
||||
import cd.casic.framework.redis.core.RedisTemplateUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@Service
|
||||
public class ServiceAllocIdResourceImpl implements ServiceAllocIdResource {
|
||||
RedisTemplateUtils redisTemplateUtils;
|
||||
|
||||
@Override
|
||||
public Long generateSegmentId(String bizTag) {
|
||||
return redisTemplateUtils.incr(bizTag,1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Long> batchGenerateSegmentId(String bizTag, Integer number) {
|
||||
List<Long> idList = new ArrayList<>(number);
|
||||
// 可以改成批处理
|
||||
for (int i = 0; i < number; i++) {
|
||||
long incr = redisTemplateUtils.incr(bizTag, 1);
|
||||
idList.add(incr);
|
||||
}
|
||||
return idList;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user