0620 ljc 云资源管理模块编写

This commit is contained in:
HopeLi 2025-06-20 10:44:11 +08:00
parent c9f72c1621
commit 6b0e4889b7
9 changed files with 500 additions and 0 deletions

View File

@ -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<String> createCloudResource(@RequestBody @Valid CloudResourceReq req){
String resourceId = cloudResourceService.createCloudResource(req);
return CommonResult.success(resourceId);
}
// @PostMapping(path="/deleteResource")
// public CommonResult<Void> deleteResource(@RequestBody @Valid BaseIdReq req){
//
// resourceManagerService.deleteResource(req.getId());
//
// return CommonResult.success();
// }
//
// @PostMapping(path="/findResourceList")
// public CommonResult<List<ResourceFindResp>> findResourceList(@RequestBody @Valid ResourceQueryReq req){
//
// List<ResourceFindResp> ResourceFindRespList = resourceManagerService.findResourceList(req);
//
// return CommonResult.success(ResourceFindRespList);
// }
//
//
//
// @PostMapping(path="/updateResource")
// public CommonResult<Void> updateResource(@RequestBody @NotNull @Valid ResourceReq resourceReq){
//
// resourceManagerService.updateResource(resourceReq);
//
// return CommonResult.success();
// }
//
@PostMapping(path="/findCloudResourcePage")
public CommonResult<PageResult<CloudResourceFindResp>> findCloudResourcePage(@RequestBody @NotNull @Valid CloudResourceQueryReq req){
PageResult<CloudResourceFindResp> respPage = cloudResourceService.findCloudResourcePage(req);
return CommonResult.success(respPage);
}
//
//
// @PostMapping(path="/findResourceById")
// public CommonResult<ResourceFindResp> findResourceById(@RequestBody @Valid BaseIdReq req){
//
// ResourceFindResp resp = resourceManagerService.findResourceById(req.getId());
//
// return CommonResult.success(resp);
// }
//
//
// @PostMapping(path="/findResourceListByType")
// public CommonResult<TaskResourceFindResp> findResourceListByType(@RequestBody @Valid ResourceQueryReq req){
//
// TaskResourceFindResp ResourceFindResp = resourceManagerService.findResourceListByType(req);
//
// return CommonResult.success(ResourceFindResp);
// }
//
//
//
// @PostMapping(path="/findResourceListForObjectByType")
// public CommonResult<List> findResourceListForObjectByType(@RequestBody @Valid ResourceQueryReq req){
//
// List resp = resourceManagerService.findResourceListForObjectByType(req);
//
// return CommonResult.success(resp);
// }
}

View File

@ -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<String> idList;
/**
* 创建人用户id
*/
private String creator;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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<CloudResourceFindResp> toRespList(List<CloudResource> cloudResources);
CloudResource toBean(CloudResourceReq req);
}

View File

@ -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<CloudResource> {
}

View File

@ -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;
}

View File

@ -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<CloudResource> {
String createCloudResource(@Valid CloudResourceReq req);
PageResult<CloudResourceFindResp> findCloudResourcePage(@Valid CloudResourceQueryReq req);
}

View File

@ -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<CloudResourceDao, CloudResource> 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<CloudResourceFindResp> findCloudResourcePage(CloudResourceQueryReq query) {
QueryWrapper<CloudResource> 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<CloudResource> cloudResourcePage = cloudResourceDao.selectPage(new Page<>(query.getPageNo(), query.getPageSize()), wrapper);
if (ObjectUtils.isEmpty(cloudResourcePage)){
return new PageResult<>();
}
List<CloudResourceFindResp> respList = CloudResourceConverter.INSTANCE.toRespList(cloudResourcePage.getRecords());
//对资源进行赋值
respList.forEach(this::setUserName);
PageResult<CloudResourceFindResp> 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());
}
}
}
}