diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/resource/ResourceQueryReq.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/resource/ResourceQueryReq.java index f83832a..f50285a 100644 --- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/resource/ResourceQueryReq.java +++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/resource/ResourceQueryReq.java @@ -2,6 +2,8 @@ package cd.casic.ci.common.pipeline.req.resource; import lombok.Data; +import java.time.LocalDateTime; + @Data public class ResourceQueryReq { /** @@ -108,4 +110,18 @@ public class ResourceQueryReq { * 流水线id */ private String pipelineId; + + /** + * 创建人用户id + */ + private String createUserId; + + private String updateUserId; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + private LocalDateTime updateTime; } diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/resource/ResourceReq.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/resource/ResourceReq.java index 4c0a324..0889274 100644 --- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/resource/ResourceReq.java +++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/resource/ResourceReq.java @@ -2,6 +2,8 @@ package cd.casic.ci.common.pipeline.req.resource; import lombok.Data; +import java.time.LocalDateTime; + @Data public class ResourceReq { /** @@ -108,4 +110,18 @@ public class ResourceReq { * 流水线id */ private String pipelineId; + + /** + * 创建人用户id + */ + private String createUserId; + + private String updateUserId; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + private LocalDateTime updateTime; } diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/resp/resource/ResourceResp.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/resp/resource/ResourceResp.java index 57b9b6d..07abe14 100644 --- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/resp/resource/ResourceResp.java +++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/resp/resource/ResourceResp.java @@ -2,6 +2,8 @@ package cd.casic.ci.common.pipeline.resp.resource; import lombok.Data; +import java.time.LocalDateTime; + @Data public class ResourceResp { /** @@ -108,4 +110,18 @@ public class ResourceResp { * 流水线id */ private String pipelineId; + + /** + * 创建人用户id + */ + private String createUserId; + + private String updateUserId; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + private LocalDateTime updateTime; } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/resource/PipResource.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/resource/PipResource.java index 5dcadb1..cf580a9 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/resource/PipResource.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/resource/PipResource.java @@ -2,6 +2,8 @@ package cd.casic.ci.process.process.dataObject.resource; import lombok.Data; +import java.time.LocalDateTime; + @Data public class PipResource { /** @@ -108,4 +110,18 @@ public class PipResource { * 流水线id */ private String pipelineId; + + /** + * 创建人用户id + */ + private String createUserId; + + private String updateUserId; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + private LocalDateTime updateTime; } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/pipeline/PipelineService.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/pipeline/PipelineService.java index e6e500f..985d350 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/pipeline/PipelineService.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/pipeline/PipelineService.java @@ -20,4 +20,6 @@ public interface PipelineService extends IService { String createPipeline(@Valid PipelineCreateReq pipelineReq); List findPipelineList(@Valid PipelineQueryReq pipelineQueryReq); + + void deletePipeline(String pipelineId); } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/pipeline/impl/PipelineServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/pipeline/impl/PipelineServiceImpl.java index bcdf42e..b38fa64 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/pipeline/impl/PipelineServiceImpl.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/pipeline/impl/PipelineServiceImpl.java @@ -3,16 +3,22 @@ package cd.casic.ci.process.process.service.pipeline.impl; import cd.casic.ci.common.pipeline.req.pipeline.PipelineCreateReq; import cd.casic.ci.common.pipeline.req.pipeline.PipelineQueryReq; import cd.casic.ci.common.pipeline.resp.pipeline.PipelineFindResp; +import cd.casic.ci.common.pipeline.resp.stage.StageResp; +import cd.casic.ci.process.process.converter.PipelineConverter; +import cd.casic.ci.process.process.dal.pipeline.PipResourceDao; +import cd.casic.ci.process.process.dal.pipeline.PipStageDao; +import cd.casic.ci.process.process.dal.pipeline.PipTaskDao; import cd.casic.ci.process.process.dal.pipeline.PipelineDao; import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline; import cd.casic.ci.process.process.dataObject.resource.PipResource; import cd.casic.ci.process.process.dataObject.stage.PipStage; import cd.casic.ci.process.process.dataObject.task.PipTask; -import cd.casic.ci.process.process.converter.PipelineConverter; import cd.casic.ci.process.process.service.pipeline.PipelineService; import cd.casic.ci.process.process.service.resource.impl.ResourceServiceImpl; import cd.casic.ci.process.process.service.stage.impl.StageServiceImpl; import cd.casic.ci.process.process.service.task.impl.TaskServiceImpl; +import cd.casic.framework.commons.exception.ServiceException; +import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants; import cd.casic.framework.commons.util.object.BeanUtils; import cd.casic.framework.commons.util.util.WebFrameworkUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -21,6 +27,7 @@ import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import org.springframework.util.ObjectUtils; import java.time.LocalDateTime; @@ -50,6 +57,15 @@ public class PipelineServiceImpl extends ServiceImpl i @Resource private PipelineDao pipelineDao; + @Resource + private PipStageDao pipStageDao; + + @Resource + private PipTaskDao pipTaskDao; + + @Resource + private PipResourceDao pipResourceDao; + @Override @Transactional(rollbackFor = Exception.class) public String createPipeline(PipelineCreateReq pipelineReq) { @@ -85,6 +101,7 @@ public class PipelineServiceImpl extends ServiceImpl i stageService.save(stageReq1); PipStage childStage1 = new PipStage(); + childStage1.setPipelineId(pipeline.getId()); childStage1.setStageName("源码"); childStage1.setCreateTime(LocalDateTime.now()); childStage1.setStageSort(1); @@ -105,6 +122,7 @@ public class PipelineServiceImpl extends ServiceImpl i //新增并行阶段 PipStage childStage21 = new PipStage(); childStage21.setStageName("并行阶段-2-1"); + childStage21.setPipelineId(pipeline.getId()); childStage21.setCreateTime(LocalDateTime.now()); childStage21.setStageSort(1); childStage21.setCode(false); @@ -113,8 +131,9 @@ public class PipelineServiceImpl extends ServiceImpl i //新增串行阶段 PipTask childTask21 = new PipTask(); - childTask21.setCreateTime(LocalDateTime.now()); + childTask21.setPipelineId(pipeline.getId()); childTask21.setTaskName("串行任务-2-1"); + childTask21.setCreateTime(LocalDateTime.now()); childTask21.setTaskType("test"); childTask21.setTaskSort(1); childTask21.setStageId(childStage21.getStageId()); @@ -123,6 +142,7 @@ public class PipelineServiceImpl extends ServiceImpl i //------------------------------------------------------------------ PipStage childStage22 = new PipStage(); childStage22.setStageName("并行阶段-2-2"); + childStage22.setPipelineId(pipeline.getId()); childStage22.setCreateTime(LocalDateTime.now()); childStage22.setStageSort(2); childStage22.setCode(false); @@ -132,6 +152,7 @@ public class PipelineServiceImpl extends ServiceImpl i PipTask childTask22 = new PipTask(); childTask22.setCreateTime(LocalDateTime.now()); childTask22.setTaskName("串行任务-2-2"); + childTask22.setPipelineId(pipeline.getId()); childTask22.setTaskType("test"); childTask22.setTaskSort(2); childTask22.setStageId(childStage22.getStageId()); @@ -147,20 +168,22 @@ public class PipelineServiceImpl extends ServiceImpl i stageReq3.setCode(true); stageService.save(stageReq3); - PipStage childStage3 = new PipStage(); - childStage3.setStageName(""); - childStage3.setCreateTime(LocalDateTime.now()); - childStage3.setStageSort(1); - childStage3.setCode(false); - childStage3.setParentId(stageReq3.getStageId()); - stageService.save(childStage3); + PipStage childStage31 = new PipStage(); + childStage31.setStageName("并行任务-3-1"); + childStage31.setPipelineId(pipeline.getId()); + childStage31.setCreateTime(LocalDateTime.now()); + childStage31.setStageSort(1); + childStage31.setCode(false); + childStage31.setParentId(stageReq3.getStageId()); + stageService.save(childStage31); PipTask childTask31 = new PipTask(); childTask31.setCreateTime(LocalDateTime.now()); childTask31.setTaskName("串行任务-3-1"); + childTask31.setPipelineId(pipeline.getId()); childTask31.setTaskType("test"); childTask31.setTaskSort(1); - childTask31.setStageId(childStage3.getStageId()); + childTask31.setStageId(childStage31.getStageId()); taskService.save(childTask31); //创建第四个阶段 @@ -173,20 +196,22 @@ public class PipelineServiceImpl extends ServiceImpl i stageReq4.setCode(true); stageService.save(stageReq4); - PipStage childStage4 = new PipStage(); - childStage4.setStageName(""); - childStage4.setCreateTime(LocalDateTime.now()); - childStage4.setStageSort(1); - childStage4.setCode(false); - childStage4.setParentId(stageReq4.getStageId()); - stageService.save(childStage4); + PipStage childStage41 = new PipStage(); + childStage41.setStageName("并行任务-4-1"); + childStage41.setPipelineId(pipeline.getId()); + childStage41.setCreateTime(LocalDateTime.now()); + childStage41.setStageSort(1); + childStage41.setCode(false); + childStage41.setParentId(stageReq4.getStageId()); + stageService.save(childStage41); PipTask childTask41 = new PipTask(); childTask41.setCreateTime(LocalDateTime.now()); childTask41.setTaskName("串行任务-4-1"); + childTask41.setPipelineId(pipeline.getId()); childTask41.setTaskType("test"); childTask41.setTaskSort(1); - childTask41.setStageId(childStage4.getStageId()); + childTask41.setStageId(childStage41.getStageId()); taskService.save(childTask41); //TODO 创建对应的鉴权关系 @@ -230,6 +255,56 @@ public class PipelineServiceImpl extends ServiceImpl i if (ObjectUtils.isEmpty(pipPipelines)){ return new ArrayList<>(0); } - return PipelineConverter.INSTANCE.toRespList(pipPipelines); + + List respList = PipelineConverter.INSTANCE.toRespList(pipPipelines); + + //对流水线进行流水线信息赋值 + respList.forEach(this::setStageAndTask); + return respList; + } + + private void setStageAndTask(PipelineFindResp o) { + List allStagesTask = stageService.findAllStagesTask(o.getId()); + o.setStageList(allStagesTask); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deletePipeline(String pipelineId) { + if (ObjectUtils.isEmpty(pipelineId)){ + throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"请求参数不能为空"); + } + + PipPipeline pipeline = pipelineDao.selectById(pipelineId); + if (ObjectUtils.isEmpty(pipeline)){ + throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"流水线不存在"); + } + pipelineDao.deleteById(pipelineId); + + //根据流水线id查询节点和配置信息 + PipStage pipStage = new PipStage(); + pipStage.setPipelineId(pipelineId); + List pipStageList = stageService.getPipStageList(pipStage); + if (!CollectionUtils.isEmpty(pipStageList)){ + List list = pipStageList.stream().map(PipStage::getStageId).toList(); + pipStageDao.deleteByIds(list); + } + + PipTask pipTask = new PipTask(); + pipTask.setPipelineId(pipelineId); + List task = taskService.getTask(pipTask); + if (!CollectionUtils.isEmpty(task)){ + List list = task.stream().map(PipTask::getTaskId).toList(); + pipTaskDao.deleteByIds(list); + } + + //删除resource表数据 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("pipeline_id",pipelineId); + List pipResources = pipResourceDao.selectList(wrapper); + if (!CollectionUtils.isEmpty(pipResources)){ + List list = pipResources.stream().map(PipResource::getId).toList(); + pipResourceDao.deleteByIds(list); + } } } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/stage/impl/StageServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/stage/impl/StageServiceImpl.java index c7182c9..1f4e4e7 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/stage/impl/StageServiceImpl.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/stage/impl/StageServiceImpl.java @@ -3,7 +3,6 @@ package cd.casic.ci.process.process.service.stage.impl; import cd.casic.ci.common.pipeline.req.stage.StageCreateReq; import cd.casic.ci.common.pipeline.req.stage.StageReq; -import cd.casic.ci.common.pipeline.req.stage.StageUpdateReq; import cd.casic.ci.common.pipeline.req.task.TaskCreateReq; import cd.casic.ci.common.pipeline.resp.stage.StageResp; @@ -28,9 +27,14 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.time.LocalDateTime; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; import java.util.stream.Collectors; +import static cd.casic.ci.process.constant.PipelineFinalConstant.TASK_TYPE_CODE; + @Service public class StageServiceImpl extends ServiceImpl implements StageService { @Resource @@ -219,7 +223,7 @@ public class StageServiceImpl extends ServiceImpl impleme // TODO 删除流水线,不知道要不要 } - private List getPipStageList(PipStage pipStage){ + public List getPipStageList(PipStage pipStage){ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(StringUtils.isNotEmpty(pipStage.getStageId()),PipStage::getStageId,pipStage.getStageId()); wrapper.eq(StringUtils.isNotEmpty(pipStage.getPipelineId()),PipStage::getPipelineId,pipStage.getPipelineId()); diff --git a/ops-server/src/main/java/cd/casic/server/controller/PipelineController.java b/ops-server/src/main/java/cd/casic/server/controller/PipelineController.java index a90a682..450a850 100644 --- a/ops-server/src/main/java/cd/casic/server/controller/PipelineController.java +++ b/ops-server/src/main/java/cd/casic/server/controller/PipelineController.java @@ -57,7 +57,7 @@ public class PipelineController { @PostMapping(path="/deletePipeline") public CommonResult deletePipeline(@NotNull String pipelineId){ -// pipelineService.deletePipeline(pipelineId); + pipelineService.deletePipeline(pipelineId); return CommonResult.success(); }