diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/CloudResourceController.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/CloudResourceController.java new file mode 100644 index 00000000..2ee65a86 --- /dev/null +++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/CloudResourceController.java @@ -0,0 +1,103 @@ +package cd.casic.ci.api; + + +import cd.casic.ci.process.dto.req.cloudResource.CloudResourceQueryReq; +import cd.casic.ci.process.dto.req.cloudResource.CloudResourceReq; +import cd.casic.ci.process.dto.resp.cloudResource.CloudResourceFindResp; +import cd.casic.ci.process.process.service.cloudResource.CloudResourceService; +import cd.casic.framework.commons.pojo.CommonResult; +import cd.casic.framework.commons.pojo.PageResult; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import org.jetbrains.annotations.NotNull; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @ClassName cloudResource + * @Author hopeli + * @Date 2025/5/10 10:57 + * @Version 1.0 + */ + +@RestController +@RequestMapping("/cloudResource") +public class CloudResourceController { + + @Resource + private CloudResourceService cloudResourceService; + + @PostMapping(path="/createCloudResource") + public CommonResult createCloudResource(@RequestBody @Valid CloudResourceReq req){ + + String resourceId = cloudResourceService.createCloudResource(req); + + return CommonResult.success(resourceId); + } + + +// @PostMapping(path="/deleteResource") +// public CommonResult deleteResource(@RequestBody @Valid BaseIdReq req){ +// +// resourceManagerService.deleteResource(req.getId()); +// +// return CommonResult.success(); +// } +// +// @PostMapping(path="/findResourceList") +// public CommonResult> findResourceList(@RequestBody @Valid ResourceQueryReq req){ +// +// List ResourceFindRespList = resourceManagerService.findResourceList(req); +// +// return CommonResult.success(ResourceFindRespList); +// } +// +// +// +// @PostMapping(path="/updateResource") +// public CommonResult updateResource(@RequestBody @NotNull @Valid ResourceReq resourceReq){ +// +// resourceManagerService.updateResource(resourceReq); +// +// return CommonResult.success(); +// } +// + + @PostMapping(path="/findCloudResourcePage") + public CommonResult> findCloudResourcePage(@RequestBody @NotNull @Valid CloudResourceQueryReq req){ + + PageResult respPage = cloudResourceService.findCloudResourcePage(req); + return CommonResult.success(respPage); + } +// +// +// @PostMapping(path="/findResourceById") +// public CommonResult findResourceById(@RequestBody @Valid BaseIdReq req){ +// +// ResourceFindResp resp = resourceManagerService.findResourceById(req.getId()); +// +// return CommonResult.success(resp); +// } +// +// +// @PostMapping(path="/findResourceListByType") +// public CommonResult findResourceListByType(@RequestBody @Valid ResourceQueryReq req){ +// +// TaskResourceFindResp ResourceFindResp = resourceManagerService.findResourceListByType(req); +// +// return CommonResult.success(ResourceFindResp); +// } +// +// +// +// @PostMapping(path="/findResourceListForObjectByType") +// public CommonResult findResourceListForObjectByType(@RequestBody @Valid ResourceQueryReq req){ +// +// List resp = resourceManagerService.findResourceListForObjectByType(req); +// +// return CommonResult.success(resp); +// } + +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/cloudResource/CloudResourceQueryReq.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/cloudResource/CloudResourceQueryReq.java new file mode 100644 index 00000000..df0d8843 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/cloudResource/CloudResourceQueryReq.java @@ -0,0 +1,21 @@ +package cd.casic.ci.process.dto.req.cloudResource; + +import cd.casic.framework.commons.pojo.PageParam; +import lombok.Data; + +import java.util.List; + +@Data +public class CloudResourceQueryReq extends PageParam { + /** + * 主键id + */ + private String id; + + private List idList; + + /** + * 创建人用户id + */ + private String creator; +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/cloudResource/CloudResourceReq.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/cloudResource/CloudResourceReq.java new file mode 100644 index 00000000..2d81fd2b --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/cloudResource/CloudResourceReq.java @@ -0,0 +1,63 @@ +package cd.casic.ci.process.dto.req.cloudResource; + +import lombok.Data; + +@Data +public class CloudResourceReq { + /** 虚拟机类型 */ + private String vmType; + + /** 虚拟机名称 */ + private String vmName; + + /** 到期释放时间 */ + private String expirationTime; + + /** 数量 */ + private String sum; + + /** 平台 */ + private String platform; + + /** CPU架构 */ + private String cpuFramework; + + /** GPU配置状态 */ + private String gpuStatus; + + /** CPU内核数量 */ + private String cpuCoreSum; + + /** 内存 */ + private String internalStorage; + + /** 操作系统 */ + private String os; + + /** 系统盘类型 */ + private String systemDiskType; + + /** 系统盘内存大小 */ + private String systemDiskInternalStorage; + + /** 管理员账号 */ + private String managerAccount; + + /** 管理员密码 */ + private String managerPassword; + + /** 安全组 */ + private String securityGroup; + + /** 调度策略 */ + private String schedulingPolicy; + + /** 引导方式 */ + private String bootMethod; + + /** 备份机 */ + private String backup; + + /** 反亲和组 */ + private String antiAffinityGroup; +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/cloudResource/CloudResourceFindResp.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/cloudResource/CloudResourceFindResp.java new file mode 100644 index 00000000..cf55352e --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/cloudResource/CloudResourceFindResp.java @@ -0,0 +1,82 @@ +package cd.casic.ci.process.dto.resp.cloudResource; + +import lombok.Data; + +@Data +public class CloudResourceFindResp { + /** + * 主键id + */ + private String id; + + /** 虚拟机类型 */ + private String vmType; + + /** 虚拟机名称 */ + private String vmName; + + /** 到期释放时间 */ + private String expirationTime; + + /** 数量 */ + private String sum; + + /** 平台 */ + private String platform; + + /** CPU架构 */ + private String cpuFramework; + + /** GPU配置状态 */ + private String gpuStatus; + + /** CPU内核数量 */ + private String cpuCoreSum; + + /** 内存 */ + private String internalStorage; + + /** 操作系统 */ + private String os; + + /** 系统盘类型 */ + private String systemDiskType; + + /** 系统盘内存大小 */ + private String systemDiskInternalStorage; + + /** 管理员账号 */ + private String managerAccount; + + /** 管理员密码 */ + private String managerPassword; + + /** 安全组 */ + private String securityGroup; + + /** 调度策略 */ + private String schedulingPolicy; + + /** 引导方式 */ + private String bootMethod; + + /** 备份机 */ + private String backup; + + /** 反亲和组 */ + private String antiAffinityGroup; + + //创建人id + private String creator; + + //创建人姓名 + private String creatorName; + + //最后修改人id + private String updater; + + //最后修改人姓名 + private String updaterName; + + +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/CloudResourceConverter.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/CloudResourceConverter.java new file mode 100644 index 00000000..5ab8e6c0 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/CloudResourceConverter.java @@ -0,0 +1,27 @@ +package cd.casic.ci.process.process.converter; + +import cd.casic.ci.process.dto.req.cloudResource.CloudResourceReq; +import cd.casic.ci.process.dto.resp.cloudResource.CloudResourceFindResp; +import cd.casic.ci.process.process.dataObject.cloudResource.CloudResource; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * @author HopeLi + * @version v1.0 + * @ClassName PipelineConverter + * @Date: 2025/5/13 14:39 + * @Description: + */ +@Mapper(componentModel = "spring") +public interface CloudResourceConverter { + CloudResourceConverter INSTANCE = Mappers.getMapper(CloudResourceConverter.class); + + CloudResourceFindResp toResp(CloudResource req); + List toRespList(List cloudResources); + + + CloudResource toBean(CloudResourceReq req); +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dao/cloudResource/CloudResourceDao.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dao/cloudResource/CloudResourceDao.java new file mode 100644 index 00000000..4e03709d --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dao/cloudResource/CloudResourceDao.java @@ -0,0 +1,14 @@ +package cd.casic.ci.process.process.dao.cloudResource; + +import cd.casic.ci.process.process.dataObject.cloudResource.CloudResource; +import cd.casic.framework.mybatis.core.mapper.BaseMapperX; + +/** + * @author HopeLi + * @version v1.0 + * @ClassName PipResourceDao + * @Date: 2025/5/13 14:39 + * @Description: + */ +public interface CloudResourceDao extends BaseMapperX { +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/cloudResource/CloudResource.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/cloudResource/CloudResource.java new file mode 100644 index 00000000..793d4b28 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/cloudResource/CloudResource.java @@ -0,0 +1,74 @@ +package cd.casic.ci.process.process.dataObject.cloudResource; + +import cd.casic.ci.process.process.dataObject.base.PipBaseElement; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @ClassName PipResourceTmp + * @Author hopeli + * @Date 2025/31 21:40 + * @Version 1.0 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@TableName("cloud_resource") +public class CloudResource extends PipBaseElement { + /** 虚拟机类型 */ + private String vmType; + + /** 虚拟机名称 */ + private String vmName; + + /** 到期释放时间 */ + private String expirationTime; + + /** 数量 */ + private String sum; + + /** 平台 */ + private String platform; + + /** CPU架构 */ + private String cpuFramework; + + /** GPU配置状态 */ + private String gpuStatus; + + /** CPU内核数量 */ + private String cpuCoreSum; + + /** 内存 */ + private String internalStorage; + + /** 操作系统 */ + private String os; + + /** 系统盘类型 */ + private String systemDiskType; + + /** 系统盘内存大小 */ + private String systemDiskInternalStorage; + + /** 管理员账号 */ + private String managerAccount; + + /** 管理员密码 */ + private String managerPassword; + + /** 安全组 */ + private String securityGroup; + + /** 调度策略 */ + private String schedulingPolicy; + + /** 引导方式 */ + private String bootMethod; + + /** 备份机 */ + private String backup; + + /** 反亲和组 */ + private String antiAffinityGroup; +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/cloudResource/CloudResourceService.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/cloudResource/CloudResourceService.java new file mode 100644 index 00000000..5a9653da --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/cloudResource/CloudResourceService.java @@ -0,0 +1,23 @@ +package cd.casic.ci.process.process.service.cloudResource; + +import cd.casic.ci.process.dto.req.cloudResource.CloudResourceQueryReq; +import cd.casic.ci.process.dto.req.cloudResource.CloudResourceReq; +import cd.casic.ci.process.dto.resp.cloudResource.CloudResourceFindResp; +import cd.casic.ci.process.process.dataObject.cloudResource.CloudResource; +import cd.casic.framework.commons.pojo.PageResult; +import com.baomidou.mybatisplus.extension.service.IService; +import jakarta.validation.Valid; + +/** + * @author HopeLi + * @version v1.0 + * @ClassName ResourceService + * @Date: 2025/5/13 10:27 + * @Description: + */ +public interface CloudResourceService extends IService { + + String createCloudResource(@Valid CloudResourceReq req); + + PageResult findCloudResourcePage(@Valid CloudResourceQueryReq req); +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/cloudResource/impl/CloudResourceServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/cloudResource/impl/CloudResourceServiceImpl.java new file mode 100644 index 00000000..c0528b61 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/cloudResource/impl/CloudResourceServiceImpl.java @@ -0,0 +1,93 @@ +package cd.casic.ci.process.process.service.cloudResource.impl; + +import cd.casic.ci.process.dto.req.cloudResource.CloudResourceQueryReq; +import cd.casic.ci.process.dto.req.cloudResource.CloudResourceReq; +import cd.casic.ci.process.dto.resp.cloudResource.CloudResourceFindResp; +import cd.casic.ci.process.process.converter.CloudResourceConverter; +import cd.casic.ci.process.process.dao.cloudResource.CloudResourceDao; +import cd.casic.ci.process.process.dataObject.cloudResource.CloudResource; +import cd.casic.ci.process.process.service.cloudResource.CloudResourceService; +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.stereotype.Service; +import org.springframework.util.ObjectUtils; + +import java.util.List; + +/** + * @author HopeLi + * @version v1.0 + * @ClassName ResourceServiceImpl + * @Date: 2025/5/13 10:31 + * @Description: + */ +@Service +@Slf4j +public class CloudResourceServiceImpl extends ServiceImpl implements CloudResourceService { + @Resource + private CloudResourceDao cloudResourceDao; + + @Resource + private AdminUserServiceImpl adminUserService; + + + @Override + public String createCloudResource(CloudResourceReq req) { + CloudResource cloudResource = CloudResourceConverter.INSTANCE.toBean(req); + cloudResourceDao.insert(cloudResource); + return cloudResource.getId(); + } + + @Override + public PageResult findCloudResourcePage(CloudResourceQueryReq 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.getCreator())){ + wrapper.eq("creator",query.getCreator()); + } + Page cloudResourcePage = cloudResourceDao.selectPage(new Page<>(query.getPageNo(), query.getPageSize()), wrapper); + + if (ObjectUtils.isEmpty(cloudResourcePage)){ + return new PageResult<>(); + } + + List respList = CloudResourceConverter.INSTANCE.toRespList(cloudResourcePage.getRecords()); + + //对资源进行赋值 + respList.forEach(this::setUserName); + + PageResult pageResult = new PageResult<>(respList,cloudResourcePage.getTotal(),cloudResourcePage.getCurrent(),cloudResourcePage.getSize()); + return pageResult; + } + + + private void setUserName(CloudResourceFindResp 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()); + } + } + } + + +}