diff --git a/modules/module-ci-process-biz/pom.xml b/modules/module-ci-process-biz/pom.xml index eece7187..b8102fab 100644 --- a/modules/module-ci-process-biz/pom.xml +++ b/modules/module-ci-process-biz/pom.xml @@ -90,6 +90,10 @@ httpclient5 5.2.1 + + cd.casic.boot + module-infra-biz + diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dal/req/resource/ResourceQueryReq.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dal/req/resource/ResourceQueryReq.java index e1ba38c7..ef1db4bf 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dal/req/resource/ResourceQueryReq.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dal/req/resource/ResourceQueryReq.java @@ -15,14 +15,24 @@ public class ResourceQueryReq extends PageParam { private List idList; /** - * 资源类型 docker, k8s, machine,cloud + * docker镜像服务器信息id */ - private String resourceType; + private String dockerId; /** - * 其他资源表 ID + * k8s服务器信息id */ - private String resourceId; + private String k8sId; + + /** + * 机器服务器信息id + */ + private String machineId; + + /** + * 弹性云服务器信息id + */ + private String cloudId; /** * 资源名称 diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dal/req/resource/ResourceReq.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dal/req/resource/ResourceReq.java index 56b738a9..115910e2 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dal/req/resource/ResourceReq.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dal/req/resource/ResourceReq.java @@ -10,14 +10,24 @@ import lombok.Data; public class ResourceReq { private String id; /** - * 资源类型 docker, k8s, machine,cloud + * docker镜像服务器信息id */ - private String resourceType; + private String dockerId; /** - * 其他资源表 ID + * k8s服务器信息id */ - private String resourceId; + private String k8sId; + + /** + * 机器服务器信息id + */ + private String machineId; + + /** + * 弹性云服务器信息id + */ + private String cloudId; /** * 资源名称 diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dal/req/target/TargetUploadReq.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dal/req/target/TargetUploadReq.java new file mode 100644 index 00000000..d74abaf4 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dal/req/target/TargetUploadReq.java @@ -0,0 +1,21 @@ +package cd.casic.ci.process.dal.req.target; + +import lombok.Data; + +import java.io.File; + +/** + * @ClassName PipelineQueryReq + * @Author hopeli + * @Date 2025/5/10 9:54 + * @Version 1.0 + */ +@Data +public class TargetUploadReq{ + + private File file; + + private String remoteFilePath; + + private String fileType; +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dal/resp/resource/ResourceFindResp.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dal/resp/resource/ResourceFindResp.java index 063af41d..f1614ef4 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dal/resp/resource/ResourceFindResp.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dal/resp/resource/ResourceFindResp.java @@ -14,14 +14,24 @@ public class ResourceFindResp { private String id; /** - * 资源类型 docker, k8s, machine + * docker镜像服务器信息id */ - private String resourceType; + private String dockerId; /** - * 其他资源表 ID + * k8s服务器信息id */ - private String resourceId; + private String k8sId; + + /** + * 机器服务器信息id + */ + private String machineId; + + /** + * 弹性云服务器信息id + */ + private String cloudId; /** * 资源名称 diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dal/resp/resource/ResourceResp.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dal/resp/resource/ResourceResp.java index 82ee04ac..3f0d016b 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dal/resp/resource/ResourceResp.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dal/resp/resource/ResourceResp.java @@ -13,14 +13,24 @@ public class ResourceResp { private String id; /** - * 资源类型 docker, k8s, machine + * docker镜像服务器信息id */ - private String resourceType; + private String dockerId; /** - * 其他资源表 ID + * k8s服务器信息id */ - private String resourceId; + private String k8sId; + + /** + * 机器服务器信息id + */ + private String machineId; + + /** + * 弹性云服务器信息id + */ + private String cloudId; /** * 资源名称 diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/ResourceConverter.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/ResourceConverter.java index 357935d8..b37b4bed 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/ResourceConverter.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/ResourceConverter.java @@ -1,7 +1,8 @@ package cd.casic.ci.process.process.converter; +import cd.casic.ci.process.dal.req.resource.ResourceReq; import cd.casic.ci.process.dal.resp.resource.ResourceFindResp; -import cd.casic.ci.process.process.dataObject.resource.PipResourceTemp; +import cd.casic.ci.process.process.dataObject.resource.PipResourceManager; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; @@ -18,7 +19,9 @@ import java.util.List; public interface ResourceConverter { ResourceConverter INSTANCE = Mappers.getMapper(ResourceConverter.class); - ResourceFindResp toBean(PipResourceTemp req); - List toRespList(List pipResourceTemps); + ResourceFindResp toResp(PipResourceManager req); + List toRespList(List pipResourceManagers); + + PipResourceManager toBean(ResourceReq req); } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dal/pipeline/PipResourceTempDao.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dal/pipeline/PipResourceManagerDao.java similarity index 76% rename from modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dal/pipeline/PipResourceTempDao.java rename to modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dal/pipeline/PipResourceManagerDao.java index 475c70e5..0793df7f 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dal/pipeline/PipResourceTempDao.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dal/pipeline/PipResourceManagerDao.java @@ -1,6 +1,6 @@ package cd.casic.ci.process.process.dal.pipeline; -import cd.casic.ci.process.process.dataObject.resource.PipResourceTemp; +import cd.casic.ci.process.process.dataObject.resource.PipResourceManager; import cd.casic.framework.mybatis.core.mapper.BaseMapperX; /** @@ -10,5 +10,5 @@ import cd.casic.framework.mybatis.core.mapper.BaseMapperX; * @Date: 2025/5/13 14:39 * @Description: */ -public interface PipResourceTempDao extends BaseMapperX { +public interface PipResourceManagerDao extends BaseMapperX { } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/resource/PipResourceTemp.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/resource/PipResourceManager.java similarity index 55% rename from modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/resource/PipResourceTemp.java rename to modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/resource/PipResourceManager.java index 5461f31f..0be43d3f 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/resource/PipResourceTemp.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/resource/PipResourceManager.java @@ -12,16 +12,26 @@ import lombok.EqualsAndHashCode; */ @EqualsAndHashCode(callSuper = true) @Data -public class PipResourceTemp extends PipBaseElement { +public class PipResourceManager extends PipBaseElement { /** - * 资源类型 docker, k8s, machine + * docker镜像服务器信息id */ - private String resourceType; + private String dockerId; /** - * 其他资源表 ID + * k8s服务器信息id */ - private String resourceId; + private String k8sId; + + /** + * 机器服务器信息id + */ + private String machineId; + + /** + * 弹性云服务器信息id + */ + private String cloudId; /** * 资源名称 diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/resource/ResourceService.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/resource/ResourceManagerService.java similarity index 91% rename from modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/resource/ResourceService.java rename to modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/resource/ResourceManagerService.java index 29265cd9..28f3e6ba 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/resource/ResourceService.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/resource/ResourceManagerService.java @@ -3,7 +3,7 @@ package cd.casic.ci.process.process.service.resource; import cd.casic.ci.process.dal.req.resource.ResourceQueryReq; import cd.casic.ci.process.dal.req.resource.ResourceReq; import cd.casic.ci.process.dal.resp.resource.ResourceFindResp; -import cd.casic.ci.process.process.dataObject.resource.PipResourceTemp; +import cd.casic.ci.process.process.dataObject.resource.PipResourceManager; import cd.casic.framework.commons.pojo.PageResult; import com.baomidou.mybatisplus.extension.service.IService; import jakarta.validation.Valid; @@ -17,7 +17,7 @@ import java.util.List; * @Date: 2025/5/13 10:27 * @Description: */ -public interface ResourceService extends IService { +public interface ResourceManagerService extends IService { String createResource(@Valid ResourceReq resourceReq); void deleteResource(String id); diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/resource/impl/ResourceManagerServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/resource/impl/ResourceManagerServiceImpl.java new file mode 100644 index 00000000..d08887cf --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/resource/impl/ResourceManagerServiceImpl.java @@ -0,0 +1,320 @@ +package cd.casic.ci.process.process.service.resource.impl; + +import cd.casic.ci.process.dal.req.resource.ResourceQueryReq; +import cd.casic.ci.process.dal.req.resource.ResourceReq; +import cd.casic.ci.process.dal.resp.resource.ResourceFindResp; +import cd.casic.ci.process.process.converter.ResourceConverter; +import cd.casic.ci.process.process.dal.pipeline.PipResourceCloudDao; +import cd.casic.ci.process.process.dal.pipeline.PipResourceDockerEndpointDao; +import cd.casic.ci.process.process.dal.pipeline.PipResourceK8SDao; +import cd.casic.ci.process.process.dal.pipeline.PipResourceMachineDao; +import cd.casic.ci.process.process.dal.pipeline.PipResourceManagerDao; +import cd.casic.ci.process.process.dataObject.resource.PipResourceCloud; +import cd.casic.ci.process.process.dataObject.resource.PipResourceK8S; +import cd.casic.ci.process.process.dataObject.resource.PipResourceMachine; +import cd.casic.ci.process.process.dataObject.resource.PipResourceManager; +import cd.casic.ci.process.process.dataObject.resource.PipelineDockerEndpoint; +import cd.casic.ci.process.process.service.resource.ResourceManagerService; +import cd.casic.framework.commons.exception.ServiceException; +import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants; +import cd.casic.framework.commons.pojo.PageResult; +import cd.casic.framework.security.dal.user.AdminUserDO; +import cd.casic.framework.tenant.core.service.AdminUserServiceImpl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author HopeLi + * @version v1.0 + * @ClassName ResourceServiceImpl + * @Date: 2025/5/13 10:31 + * @Description: + */ +@Service +@Slf4j +public class ResourceManagerServiceImpl extends ServiceImpl implements ResourceManagerService { + @Resource + private PipResourceManagerDao resourceManagerDao; + + @Resource + private PipResourceMachineDao machineDao; + + @Resource + private PipResourceDockerEndpointDao dockerEndpointDao; + + @Resource + private PipResourceK8SDao k8SDao; + + @Resource + private PipResourceCloudDao cloudDao; + + @Resource + private AdminUserServiceImpl adminUserService; + @Autowired + private PipResourceDockerEndpointDao pipResourceDockerEndpointDao; + + + @Override + @Transactional(rollbackFor = Exception.class) + public String createResource(ResourceReq resourceReq) { + + PipResourceManager pipResourceManager = ResourceConverter.INSTANCE.toBean(resourceReq); + + //如果资源类型不属于弹性云,则新增,如果属于弹性云,则走申请流程 + if (!ObjectUtils.isEmpty(resourceReq.getResourceMachine())){ + PipResourceMachine resourceMachine = resourceReq.getResourceMachine(); + machineDao.insert(resourceMachine); + + pipResourceManager.setMachineId(resourceMachine.getId()); + } + if (!ObjectUtils.isEmpty(resourceReq.getPipResourceK8S())) { + PipResourceK8S pipResourceK8S = resourceReq.getPipResourceK8S(); + k8SDao.insert(pipResourceK8S); + + pipResourceManager.setK8sId(pipResourceK8S.getId()); + } + if (!ObjectUtils.isEmpty(resourceReq.getDockerEndpoint())) { + PipelineDockerEndpoint dockerEndpoint = resourceReq.getDockerEndpoint(); + dockerEndpointDao.insert(dockerEndpoint); + + pipResourceManager.setDockerId(dockerEndpoint.getId()); + } + + if (!ObjectUtils.isEmpty(resourceReq.getPipResourceCloud())) { + PipResourceCloud pipResourceCloud = resourceReq.getPipResourceCloud(); + cloudDao.insert(pipResourceCloud); + + pipResourceManager.setCloudId(pipResourceCloud.getId()); + } + + resourceManagerDao.insert(pipResourceManager); + return pipResourceManager.getId(); + } + + @Override + public void deleteResource(String id) { + PipResourceManager pipResourceManager = resourceManagerDao.selectById(id); + if (!StringUtils.isEmpty(pipResourceManager.getMachineId())){ + machineDao.deleteById(pipResourceManager.getMachineId()); + } + if (!StringUtils.isEmpty(pipResourceManager.getK8sId())){ + k8SDao.deleteById(pipResourceManager.getK8sId()); + } + if (!StringUtils.isEmpty(pipResourceManager.getDockerId())){ + dockerEndpointDao.deleteById(pipResourceManager.getDockerId()); + } + if (!StringUtils.isEmpty(pipResourceManager.getCloudId())){ + cloudDao.deleteById(pipResourceManager.getCloudId()); + } + resourceManagerDao.deleteById(id); + } + + @Override + public void updateResource(ResourceReq resourceReq) { + PipResourceManager temp = resourceManagerDao.selectById(resourceReq.getId()); + temp.setResourceName(resourceReq.getResourceName()); + + //先删除旧的资源信息 + if (!StringUtils.isEmpty(temp.getMachineId())){ + machineDao.deleteById(temp.getMachineId()); + } + + + if (!StringUtils.isEmpty(temp.getK8sId())){ + k8SDao.deleteById(temp.getK8sId()); + + } + + if (!StringUtils.isEmpty(temp.getDockerId())){ + dockerEndpointDao.deleteById(temp.getDockerId()); + + } + + if (!StringUtils.isEmpty(temp.getCloudId())){ + cloudDao.deleteById(temp.getCloudId()); + + } + + + //根据新资源信息新增 + if (!ObjectUtils.isEmpty(resourceReq.getResourceMachine())){ + PipResourceMachine resourceMachine = resourceReq.getResourceMachine(); + machineDao.insert(resourceMachine); + + temp.setMachineId(resourceMachine.getId()); + } + if (!ObjectUtils.isEmpty(resourceReq.getPipResourceK8S())) { + PipResourceK8S pipResourceK8S = resourceReq.getPipResourceK8S(); + k8SDao.insert(pipResourceK8S); + + temp.setK8sId(pipResourceK8S.getId()); + } + if (!ObjectUtils.isEmpty(resourceReq.getDockerEndpoint())) { + PipelineDockerEndpoint dockerEndpoint = resourceReq.getDockerEndpoint(); + dockerEndpointDao.insert(dockerEndpoint); + + temp.setDockerId(dockerEndpoint.getId()); + } + + if (!ObjectUtils.isEmpty(resourceReq.getPipResourceCloud())) { + PipResourceCloud pipResourceCloud = resourceReq.getPipResourceCloud(); + cloudDao.insert(pipResourceCloud); + + temp.setCloudId(pipResourceCloud.getId()); + } + resourceManagerDao.updateById(temp); + } + + @Override + public ResourceFindResp findResourceById(String id) { + PipResourceManager pipResourceManager = resourceManagerDao.selectById(id); + if (ObjectUtils.isEmpty(pipResourceManager)){ + throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"资源不存在"); + } + ResourceFindResp resp = ResourceConverter.INSTANCE.toResp(pipResourceManager); + + setResource(resp); + setUserName(resp); + return resp; + } + + + + @Override + public List findResourceList(ResourceQueryReq query) { + QueryWrapper wrapper = new QueryWrapper<>(); + if (!ObjectUtils.isEmpty(query.getId())){ + wrapper.eq("id",query.getId()); + } + if (!ObjectUtils.isEmpty(query.getIdList())){ + wrapper.in("id",query.getId()); + } + if (!ObjectUtils.isEmpty(query.getResourceName())){ + wrapper.like("resource_name",query.getResourceName()); + } + if (!ObjectUtils.isEmpty(query.getMachineId())){ + wrapper.eq("machine_id",query.getMachineId()); + } + if (!ObjectUtils.isEmpty(query.getK8sId())){ + wrapper.eq("k8s_id",query.getK8sId()); + } + if (!ObjectUtils.isEmpty(query.getDockerId())){ + wrapper.eq("docker_id",query.getDockerId()); + } + if (!ObjectUtils.isEmpty(query.getCloudId())){ + wrapper.eq("cloud_id",query.getCloudId()); + } + if (!ObjectUtils.isEmpty(query.getCreator())){ + wrapper.eq("creator",query.getCreator()); + } + List pipResourceManagerList = resourceManagerDao.selectList(wrapper); + + if (ObjectUtils.isEmpty(pipResourceManagerList)){ + return new ArrayList<>(0); + } + + List respList = ResourceConverter.INSTANCE.toRespList(pipResourceManagerList); + + //对资源进行赋值 + respList.forEach(this::setResource); + respList.forEach(this::setUserName); + + return respList; + } + + @Override + public PageResult findResourcePage(ResourceQueryReq query) { + Page respPage = new Page<>(); + + QueryWrapper wrapper = new QueryWrapper<>(); + if (!ObjectUtils.isEmpty(query.getId())){ + wrapper.eq("id",query.getId()); + } + if (!ObjectUtils.isEmpty(query.getIdList())){ + wrapper.in("id",query.getId()); + } + if (!ObjectUtils.isEmpty(query.getResourceName())){ + wrapper.like("resource_name",query.getResourceName()); + } + if (!ObjectUtils.isEmpty(query.getMachineId())){ + wrapper.eq("machine_id",query.getMachineId()); + } + if (!ObjectUtils.isEmpty(query.getK8sId())){ + wrapper.eq("k8s_id",query.getK8sId()); + } + if (!ObjectUtils.isEmpty(query.getDockerId())){ + wrapper.eq("docker_id",query.getDockerId()); + } + if (!ObjectUtils.isEmpty(query.getCloudId())){ + wrapper.eq("cloud_id",query.getCloudId()); + } + if (!ObjectUtils.isEmpty(query.getCreator())){ + wrapper.eq("creator",query.getCreator()); + } + Page pipResourceTempPage = resourceManagerDao.selectPage(new Page<>(query.getPageNo(), query.getPageSize()), wrapper); + + if (ObjectUtils.isEmpty(pipResourceTempPage)){ + return new PageResult<>(); + } + + List respList = ResourceConverter.INSTANCE.toRespList(pipResourceTempPage.getRecords()); + + //对资源进行赋值 + respList.forEach(this::setResource); + respList.forEach(this::setUserName); + + respPage.setRecords(respList); + respPage.setTotal(pipResourceTempPage.getTotal()); + respPage.setCurrent(pipResourceTempPage.getCurrent()); + respPage.setSize(pipResourceTempPage.getSize()); + PageResult pageResult = new PageResult<>(respList,pipResourceTempPage.getTotal()); + return pageResult; + } + + private void setResource(ResourceFindResp resourceFindResp) { + if (!StringUtils.isEmpty(resourceFindResp.getMachineId())){ + PipResourceMachine resourceMachine = machineDao.selectById(resourceFindResp.getMachineId()); + resourceFindResp.setResourceMachine(resourceMachine); + } + if (!StringUtils.isEmpty(resourceFindResp.getK8sId())) { + PipResourceK8S pipResourceK8S = k8SDao.selectById(resourceFindResp.getK8sId()); + resourceFindResp.setPipResourceK8S(pipResourceK8S); + } + if (!StringUtils.isEmpty(resourceFindResp.getDockerId())) { + PipelineDockerEndpoint dockerEndpoint = dockerEndpointDao.selectById(resourceFindResp.getDockerId()); + resourceFindResp.setDockerEndpoint(dockerEndpoint); + } + if (!StringUtils.isEmpty(resourceFindResp.getCloudId())) { + PipResourceCloud resourceCloud = cloudDao.selectById(resourceFindResp.getCloudId()); + resourceFindResp.setPipResourceCloud(resourceCloud); + } + } + + + private void setUserName(ResourceFindResp resp) { + if (!StringUtils.isEmpty(resp.getCreator())){ + AdminUserDO user = adminUserService.getUser(Long.valueOf(resp.getCreator())); + if (!ObjectUtils.isEmpty(user)){ + resp.setCreatorName(user.getUsername()); + } + } + + if (!StringUtils.isEmpty(resp.getUpdater())){ + AdminUserDO user = adminUserService.getUser(Long.valueOf(resp.getUpdater())); + if (!ObjectUtils.isEmpty(user)){ + resp.setUpdaterName(user.getUsername()); + } + } + } +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/resource/impl/ResourceServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/resource/impl/ResourceServiceImpl.java deleted file mode 100644 index b5b9677d..00000000 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/resource/impl/ResourceServiceImpl.java +++ /dev/null @@ -1,342 +0,0 @@ -package cd.casic.ci.process.process.service.resource.impl; - -import cd.casic.ci.process.dal.req.resource.ResourceQueryReq; -import cd.casic.ci.process.dal.req.resource.ResourceReq; -import cd.casic.ci.process.dal.resp.resource.ResourceFindResp; -import cd.casic.ci.process.enums.ResourceTypeEnum; -import cd.casic.ci.process.process.converter.ResourceConverter; -import cd.casic.ci.process.process.dal.pipeline.PipResourceCloudDao; -import cd.casic.ci.process.process.dal.pipeline.PipResourceDockerEndpointDao; -import cd.casic.ci.process.process.dal.pipeline.PipResourceK8SDao; -import cd.casic.ci.process.process.dal.pipeline.PipResourceMachineDao; -import cd.casic.ci.process.process.dal.pipeline.PipResourceTempDao; -import cd.casic.ci.process.process.dataObject.resource.PipResourceCloud; -import cd.casic.ci.process.process.dataObject.resource.PipResourceK8S; -import cd.casic.ci.process.process.dataObject.resource.PipResourceMachine; -import cd.casic.ci.process.process.dataObject.resource.PipResourceTemp; -import cd.casic.ci.process.process.dataObject.resource.PipelineDockerEndpoint; -import cd.casic.ci.process.process.service.resource.ResourceService; -import cd.casic.framework.commons.exception.ServiceException; -import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants; -import cd.casic.framework.commons.pojo.PageResult; -import cd.casic.framework.security.dal.user.AdminUserDO; -import cd.casic.framework.tenant.core.service.AdminUserServiceImpl; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import jakarta.annotation.Resource; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.ObjectUtils; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author HopeLi - * @version v1.0 - * @ClassName ResourceServiceImpl - * @Date: 2025/5/13 10:31 - * @Description: - */ -@Service -@Slf4j -public class ResourceServiceImpl extends ServiceImpl implements ResourceService { - @Resource - private PipResourceTempDao tempDao; - - @Resource - private PipResourceMachineDao machineDao; - - @Resource - private PipResourceDockerEndpointDao dockerEndpointDao; - - @Resource - private PipResourceK8SDao k8SDao; - - @Resource - private PipResourceCloudDao cloudDao; - - @Resource - private AdminUserServiceImpl adminUserService; - @Autowired - private PipResourceDockerEndpointDao pipResourceDockerEndpointDao; - - - @Override - @Transactional(rollbackFor = Exception.class) - public String createResource(ResourceReq resourceReq) { - if (ObjectUtils.isEmpty(resourceReq.getResourceName())){ - throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"资源类型不可为空"); - } - - PipResourceTemp pipResourceTemp = new PipResourceTemp(); - pipResourceTemp.setResourceName(resourceReq.getResourceName()); - pipResourceTemp.setResourceType(resourceReq.getResourceType()); - - //如果资源类型不属于弹性云,则新增,如果属于弹性云,则走申请流程 - if (resourceReq.getResourceType().equals(ResourceTypeEnum.MACHINE.getCode())){ - - if (!ObjectUtils.isEmpty(resourceReq.getResourceMachine())){ - PipResourceMachine resourceMachine = resourceReq.getResourceMachine(); - machineDao.insert(resourceMachine); - - pipResourceTemp.setResourceId(resourceMachine.getId()); - } - tempDao.insert(pipResourceTemp); - - }else if (resourceReq.getResourceType().equals(ResourceTypeEnum.K8S.getCode())) { - - if (!ObjectUtils.isEmpty(resourceReq.getPipResourceK8S())) { - PipResourceK8S pipResourceK8S = resourceReq.getPipResourceK8S(); - k8SDao.insert(pipResourceK8S); - - pipResourceTemp.setResourceId(pipResourceK8S.getId()); - } - tempDao.insert(pipResourceTemp); - - }else if (resourceReq.getResourceType().equals(ResourceTypeEnum.DOCKER.getCode())) { - - if (!ObjectUtils.isEmpty(resourceReq.getDockerEndpoint())) { - PipelineDockerEndpoint dockerEndpoint = resourceReq.getDockerEndpoint(); - dockerEndpointDao.insert(dockerEndpoint); - - pipResourceTemp.setResourceId(dockerEndpoint.getId()); - } - tempDao.insert(pipResourceTemp); - - }else if (resourceReq.getResourceType().equals(ResourceTypeEnum.CLOUD.getCode())){ - PipResourceCloud pipResourceCloud = resourceReq.getPipResourceCloud(); - cloudDao.insert(pipResourceCloud); - - pipResourceTemp.setResourceId(pipResourceCloud.getId()); - - } - - return pipResourceTemp.getId(); - } - - @Override - public void deleteResource(String id) { - PipResourceTemp pipResourceTemp = tempDao.selectById(id); - if (pipResourceTemp.getResourceType().equals(ResourceTypeEnum.MACHINE.getCode())){ - machineDao.deleteById(pipResourceTemp.getResourceId()); - }else if (pipResourceTemp.getResourceType().equals(ResourceTypeEnum.K8S.getCode())) { - k8SDao.deleteById(pipResourceTemp.getResourceId()); - }else if (pipResourceTemp.getResourceType().equals(ResourceTypeEnum.DOCKER.getCode())) { - dockerEndpointDao.deleteById(pipResourceTemp.getResourceId()); - } else if (pipResourceTemp.getResourceType().equals(ResourceTypeEnum.CLOUD.getCode())) { - cloudDao.deleteById(pipResourceTemp.getResourceId()); - } - tempDao.deleteById(id); - } - - @Override - public void updateResource(ResourceReq resourceReq) { - if (ObjectUtils.isEmpty(resourceReq.getResourceType())){ - throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"资源类型不可为空"); - } - - PipResourceTemp temp = tempDao.selectById(resourceReq.getId()); - temp.setResourceName(resourceReq.getResourceName()); - - //先删除旧的资源信息 - if (temp.getResourceType().equals(ResourceTypeEnum.MACHINE.getCode())){ - machineDao.deleteById(temp.getResourceId()); - - }else if (temp.getResourceType().equals(ResourceTypeEnum.K8S.getCode())) { - k8SDao.deleteById(temp.getResourceId()); - if (!ObjectUtils.isEmpty(resourceReq.getPipResourceK8S())) { - PipResourceK8S pipResourceK8S = resourceReq.getPipResourceK8S(); - k8SDao.updateById(pipResourceK8S); - } - - }else if (temp.getResourceType().equals(ResourceTypeEnum.DOCKER.getCode())) { - dockerEndpointDao.deleteById(temp.getResourceId()); - if (!ObjectUtils.isEmpty(resourceReq.getDockerEndpoint())) { - PipelineDockerEndpoint dockerEndpoint = resourceReq.getDockerEndpoint(); - dockerEndpointDao.updateById(dockerEndpoint); - } - - }else if (temp.getResourceType().equals(ResourceTypeEnum.CLOUD.getCode())){ - cloudDao.deleteById(temp.getResourceId()); - } - - - //根据新资源信息新增 - if (resourceReq.getResourceType().equals(ResourceTypeEnum.MACHINE.getCode())){ - - //新增 - if (!ObjectUtils.isEmpty(resourceReq.getResourceMachine())){ - PipResourceMachine resourceMachine = resourceReq.getResourceMachine(); - machineDao.insert(resourceMachine); - temp.setResourceId(resourceMachine.getId()); - } - - }else if (resourceReq.getResourceType().equals(ResourceTypeEnum.K8S.getCode())){ - - //新增 - if (!ObjectUtils.isEmpty(resourceReq.getPipResourceK8S())){ - PipResourceK8S resourceK8S = resourceReq.getPipResourceK8S(); - k8SDao.insert(resourceK8S); - temp.setResourceId(resourceK8S.getId()); - } - - }else if (resourceReq.getResourceType().equals(ResourceTypeEnum.DOCKER.getCode())){ - - //新增 - if (!ObjectUtils.isEmpty(resourceReq.getDockerEndpoint())){ - PipelineDockerEndpoint dockerEndpoint = resourceReq.getDockerEndpoint(); - dockerEndpointDao.insert(dockerEndpoint); - temp.setResourceId(dockerEndpoint.getId()); - } - - }else if (resourceReq.getResourceType().equals(ResourceTypeEnum.CLOUD.getCode())){ - - //新增 - if (!ObjectUtils.isEmpty(resourceReq.getPipResourceCloud())){ - PipResourceCloud resourceCloud = resourceReq.getPipResourceCloud(); - cloudDao.insert(resourceCloud); - temp.setResourceId(resourceCloud.getId()); - } - - } - temp.setResourceType(resourceReq.getResourceType()); - tempDao.updateById(temp); - } - - @Override - public ResourceFindResp findResourceById(String id) { - ResourceFindResp resp = new ResourceFindResp(); - - PipResourceTemp pipResourceTemp = tempDao.selectById(id); - if (ObjectUtils.isEmpty(pipResourceTemp)){ - throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"资源不存在"); - } - resp.setId(pipResourceTemp.getId()); - resp.setResourceType(pipResourceTemp.getResourceType()); - resp.setResourceId(pipResourceTemp.getResourceId()); - resp.setResourceName(pipResourceTemp.getResourceName()); - - setResource(resp); - setUserName(resp); - return resp; - } - - - - @Override - public List findResourceList(ResourceQueryReq query) { - QueryWrapper wrapper = new QueryWrapper<>(); - if (!ObjectUtils.isEmpty(query.getId())){ - wrapper.eq("id",query.getId()); - } - if (!ObjectUtils.isEmpty(query.getIdList())){ - wrapper.in("id",query.getId()); - } - if (!ObjectUtils.isEmpty(query.getResourceName())){ - wrapper.like("resource_name",query.getResourceName()); - } - if (!ObjectUtils.isEmpty(query.getResourceId())){ - wrapper.eq("resource_id",query.getResourceId()); - } - if (!ObjectUtils.isEmpty(query.getResourceType())){ - wrapper.eq("resource_type",query.getResourceType()); - } - if (!ObjectUtils.isEmpty(query.getCreator())){ - wrapper.eq("creator",query.getCreator()); - } - List pipResourceTempList = tempDao.selectList(wrapper); - - if (ObjectUtils.isEmpty(pipResourceTempList)){ - return new ArrayList<>(0); - } - - List respList = ResourceConverter.INSTANCE.toRespList(pipResourceTempList); - - //对资源进行赋值 - respList.forEach(this::setResource); - respList.forEach(this::setUserName); - - return respList; - } - - @Override - public PageResult findResourcePage(ResourceQueryReq query) { - Page respPage = new Page<>(); - - QueryWrapper wrapper = new QueryWrapper<>(); - if (!ObjectUtils.isEmpty(query.getId())){ - wrapper.eq("id",query.getId()); - } - if (!ObjectUtils.isEmpty(query.getIdList())){ - wrapper.in("id",query.getId()); - } - if (!ObjectUtils.isEmpty(query.getResourceName())){ - wrapper.like("resource_name",query.getResourceName()); - } - if (!ObjectUtils.isEmpty(query.getResourceId())){ - wrapper.eq("resource_id",query.getResourceId()); - } - if (!ObjectUtils.isEmpty(query.getResourceType())){ - wrapper.eq("resource_type",query.getResourceType()); - } - if (!ObjectUtils.isEmpty(query.getCreator())){ - wrapper.eq("creator",query.getCreator()); - } - Page pipResourceTempPage = tempDao.selectPage(new Page<>(query.getPageNo(), query.getPageSize()), wrapper); - - if (ObjectUtils.isEmpty(pipResourceTempPage)){ - return new PageResult<>(); - } - - List respList = ResourceConverter.INSTANCE.toRespList(pipResourceTempPage.getRecords()); - - //对资源进行赋值 - respList.forEach(this::setResource); - respList.forEach(this::setUserName); - - respPage.setRecords(respList); - respPage.setTotal(pipResourceTempPage.getTotal()); - respPage.setCurrent(pipResourceTempPage.getCurrent()); - respPage.setSize(pipResourceTempPage.getSize()); - PageResult pageResult = new PageResult<>(respList,pipResourceTempPage.getTotal()); - return pageResult; - } - - private void setResource(ResourceFindResp resourceFindResp) { - if (resourceFindResp.getResourceType().equals(ResourceTypeEnum.MACHINE.getCode())){ - PipResourceMachine resourceMachine = machineDao.selectById(resourceFindResp.getResourceId()); - resourceFindResp.setResourceMachine(resourceMachine); - }else if (resourceFindResp.getResourceType().equals(ResourceTypeEnum.K8S.getCode())) { - PipResourceK8S pipResourceK8S = k8SDao.selectById(resourceFindResp.getResourceId()); - resourceFindResp.setPipResourceK8S(pipResourceK8S); - }else if (resourceFindResp.getResourceType().equals(ResourceTypeEnum.DOCKER.getCode())) { - PipelineDockerEndpoint dockerEndpoint = dockerEndpointDao.selectById(resourceFindResp.getResourceId()); - resourceFindResp.setDockerEndpoint(dockerEndpoint); - }else if (resourceFindResp.getResourceType().equals(ResourceTypeEnum.CLOUD.getCode())) { - PipResourceCloud resourceCloud = cloudDao.selectById(resourceFindResp.getResourceId()); - resourceFindResp.setPipResourceCloud(resourceCloud); - } - } - - - private void setUserName(ResourceFindResp resp) { - if (!StringUtils.isEmpty(resp.getCreator())){ - AdminUserDO user = adminUserService.getUser(Long.valueOf(resp.getCreator())); - if (!ObjectUtils.isEmpty(user)){ - resp.setCreatorName(user.getUsername()); - } - } - - if (!StringUtils.isEmpty(resp.getUpdater())){ - AdminUserDO user = adminUserService.getUser(Long.valueOf(resp.getUpdater())); - if (!ObjectUtils.isEmpty(user)){ - resp.setUpdaterName(user.getUsername()); - } - } - } -} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/target/TargetManagerService.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/target/TargetManagerService.java index d950533b..983403f7 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/target/TargetManagerService.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/target/TargetManagerService.java @@ -4,6 +4,7 @@ package cd.casic.ci.process.process.service.target; import cd.casic.ci.process.dal.req.target.TargetManagerCreateReq; import cd.casic.ci.process.dal.req.target.TargetManagerUpdateReq; import cd.casic.ci.process.dal.req.target.TargetQueryReq; +import cd.casic.ci.process.dal.req.target.TargetUploadReq; import cd.casic.ci.process.dal.resp.target.TargetManagerResp; import cd.casic.ci.process.process.dataObject.base.BaseIdReq; import cd.casic.ci.process.process.dataObject.target.TargetManager; @@ -30,4 +31,6 @@ public interface TargetManagerService extends IService { PageResult findTargetPage(@Valid TargetQueryReq query); List findTargetList(@Valid TargetQueryReq query); + + String fileUpload(@Valid TargetUploadReq req); } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/target/impl/TargetManagerServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/target/impl/TargetManagerServiceImpl.java index f76c4827..b34f653a 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/target/impl/TargetManagerServiceImpl.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/target/impl/TargetManagerServiceImpl.java @@ -4,6 +4,7 @@ package cd.casic.ci.process.process.service.target.impl; import cd.casic.ci.process.dal.req.target.TargetManagerCreateReq; import cd.casic.ci.process.dal.req.target.TargetManagerUpdateReq; import cd.casic.ci.process.dal.req.target.TargetQueryReq; +import cd.casic.ci.process.dal.req.target.TargetUploadReq; import cd.casic.ci.process.dal.resp.target.TargetManagerResp; import cd.casic.ci.process.process.converter.TargetConverter; import cd.casic.ci.process.process.dal.pipeline.TargetManagerDao; @@ -17,6 +18,7 @@ import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants; import cd.casic.framework.commons.pojo.PageResult; import cd.casic.framework.commons.util.object.BeanUtils; import cd.casic.framework.commons.util.util.WebFrameworkUtils; +import cd.casic.module.infra.framework.file.core.client.ftp.FtpFileClient; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -26,8 +28,11 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.FileCopyUtils; import org.springframework.util.ObjectUtils; +import java.io.FileInputStream; +import java.io.IOException; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -52,6 +57,9 @@ public class TargetManagerServiceImpl extends ServiceImpl createResource(@RequestBody @Valid ResourceReq resourceReq){ - String resourceId = resourceService.createResource(resourceReq); + String resourceId = resourceManagerService.createResource(resourceReq); return CommonResult.success(resourceId); } @@ -44,7 +44,7 @@ public class ResourceController { @PostMapping(path="/deleteResource") public CommonResult deleteResource(@RequestBody @Valid BaseIdReq req){ - resourceService.deleteResource(req.getId()); + resourceManagerService.deleteResource(req.getId()); return CommonResult.success(); } @@ -52,7 +52,7 @@ public class ResourceController { @PostMapping(path="/findResourceList") public CommonResult> findResourceList(@RequestBody @Valid ResourceQueryReq req){ - List ResourceFindRespList = resourceService.findResourceList(req); + List ResourceFindRespList = resourceManagerService.findResourceList(req); return CommonResult.success(ResourceFindRespList); } @@ -62,7 +62,7 @@ public class ResourceController { @PostMapping(path="/updateResource") public CommonResult updateResource(@RequestBody @NotNull @Valid ResourceReq resourceReq){ - resourceService.updateResource(resourceReq); + resourceManagerService.updateResource(resourceReq); return CommonResult.success(); } @@ -71,7 +71,7 @@ public class ResourceController { @PostMapping(path="/findResourcePage") public CommonResult> findResourcePage(@RequestBody @NotNull @Valid ResourceQueryReq req){ - PageResult respPage = resourceService.findResourcePage(req); + PageResult respPage = resourceManagerService.findResourcePage(req); return CommonResult.success(respPage); } @@ -79,7 +79,7 @@ public class ResourceController { @PostMapping(path="/findResourceById") public CommonResult findResourceById(@RequestBody @Valid BaseIdReq req){ - ResourceFindResp resp = resourceService.findResourceById(req.getId()); + ResourceFindResp resp = resourceManagerService.findResourceById(req.getId()); return CommonResult.success(resp); } diff --git a/ops-server/src/main/java/cd/casic/server/controller/TargetController.java b/ops-server/src/main/java/cd/casic/server/controller/TargetController.java index 5e69ffe6..8a520159 100644 --- a/ops-server/src/main/java/cd/casic/server/controller/TargetController.java +++ b/ops-server/src/main/java/cd/casic/server/controller/TargetController.java @@ -4,6 +4,7 @@ package cd.casic.server.controller; import cd.casic.ci.process.dal.req.target.TargetManagerCreateReq; import cd.casic.ci.process.dal.req.target.TargetManagerUpdateReq; import cd.casic.ci.process.dal.req.target.TargetQueryReq; +import cd.casic.ci.process.dal.req.target.TargetUploadReq; import cd.casic.ci.process.dal.resp.target.TargetManagerResp; import cd.casic.ci.process.process.dataObject.base.BaseIdReq; import cd.casic.ci.process.process.dataObject.target.TargetVersion; @@ -88,4 +89,13 @@ public class TargetController { return CommonResult.success(respList); } + + + @PostMapping(path="/fileUpload") + public CommonResult fileUpload(@RequestBody @Valid TargetUploadReq req){ + + String filePath = targetManagerService.fileUpload(req); + + return CommonResult.success(filePath); + } }