This commit is contained in:
HopeLi 2025-06-04 09:54:16 +08:00
parent 7c91fa725f
commit 5b0b142914
10 changed files with 136 additions and 187 deletions

View File

@ -13,6 +13,7 @@ import cd.casic.ci.process.process.service.target.TargetVersionService;
import cd.casic.framework.commons.pojo.CommonResult; import cd.casic.framework.commons.pojo.CommonResult;
import cd.casic.framework.commons.pojo.PageResult; import cd.casic.framework.commons.pojo.PageResult;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.annotation.security.PermitAll;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@ -41,6 +42,7 @@ public class TargetController {
private TargetVersionService targetVersionService; private TargetVersionService targetVersionService;
@PostMapping(value = "/createTarget") @PostMapping(value = "/createTarget")
@PermitAll
public CommonResult<Void> createTarget(@RequestBody @Valid TargetManagerCreateReq req) { public CommonResult<Void> createTarget(@RequestBody @Valid TargetManagerCreateReq req) {
targetManagerService.createTarget(req); targetManagerService.createTarget(req);
@ -49,6 +51,7 @@ public class TargetController {
@PostMapping(value = "/updateTarget") @PostMapping(value = "/updateTarget")
@PermitAll
public CommonResult<Void> updateTarget(@RequestBody @Valid TargetManagerUpdateReq req) { public CommonResult<Void> updateTarget(@RequestBody @Valid TargetManagerUpdateReq req) {
targetManagerService.updateTarget(req); targetManagerService.updateTarget(req);
@ -57,6 +60,7 @@ public class TargetController {
@PostMapping(value = "/deleteTarget") @PostMapping(value = "/deleteTarget")
@PermitAll
public CommonResult<Void> deleteTarget(@RequestBody @Valid BaseIdReq req) { public CommonResult<Void> deleteTarget(@RequestBody @Valid BaseIdReq req) {
targetManagerService.deleteTarget(req); targetManagerService.deleteTarget(req);
@ -65,6 +69,7 @@ public class TargetController {
@PostMapping(path="/findTargetPage") @PostMapping(path="/findTargetPage")
@PermitAll
public CommonResult<PageResult<TargetManagerResp>> findTargetPage(@RequestBody @NotNull @Valid TargetQueryReq query){ public CommonResult<PageResult<TargetManagerResp>> findTargetPage(@RequestBody @NotNull @Valid TargetQueryReq query){
PageResult<TargetManagerResp> respPage = targetManagerService.findTargetPage(query); PageResult<TargetManagerResp> respPage = targetManagerService.findTargetPage(query);
@ -74,6 +79,7 @@ public class TargetController {
@PostMapping(path="/findTargetList") @PostMapping(path="/findTargetList")
@PermitAll
public CommonResult<List<TargetManagerResp>> findTargetList(@RequestBody @Valid TargetQueryReq query){ public CommonResult<List<TargetManagerResp>> findTargetList(@RequestBody @Valid TargetQueryReq query){
List<TargetManagerResp> respList = targetManagerService.findTargetList(query); List<TargetManagerResp> respList = targetManagerService.findTargetList(query);
@ -83,6 +89,7 @@ public class TargetController {
@PostMapping(path="/selectListByManagerId") @PostMapping(path="/selectListByManagerId")
@PermitAll
public CommonResult<List<TargetVersion>> selectListByManagerId(@RequestBody @Valid BaseIdReq query){ public CommonResult<List<TargetVersion>> selectListByManagerId(@RequestBody @Valid BaseIdReq query){
List<TargetVersion> respList = targetVersionService.selectListByManagerId(query.getId()); List<TargetVersion> respList = targetVersionService.selectListByManagerId(query.getId());

View File

@ -17,32 +17,47 @@ public class TargetManagerCreateReq {
private String targetName; private String targetName;
/** /**
* 图标 * 目标图标
*/ */
private String fileIcon; private String targetIcon;
/** /**
* 文件地址路径 * 组织ID
*/ */
private String filePath; private String projectId;
/** /**
* 目标类型 * 目标类型
*/ */
private String targetType; private String targetType;
/**
* 版本号
*/
private String version;
/** /**
* 描述 * 描述
*/ */
private String targetDesc; private String targetDesc;
/** /**
* 文件大小byte * 文件大小单位字节
*/ */
private Double totalSize; private Double fileSize;
/** /**
* 组织id * 文件名称
*/ */
private String projectId; private String fileName;
/**
* 文件类型例如 ziptar.gz
*/
private String fileType;
/**
* 文件地址路径
*/
private String filePath;
} }

View File

@ -22,32 +22,47 @@ public class TargetManagerUpdateReq {
private String targetName; private String targetName;
/** /**
* 版本 * 目标图标
*/ */
private String version; private String targetIcon;
/** /**
* 图标 * 组织ID
*/ */
private String fileIcon; private String projectId;
/**
* 文件地址路径
*/
private String filePath;
/** /**
* 目标类型 * 目标类型
*/ */
private String targetType; private String targetType;
/**
* 版本号
*/
private String version;
/** /**
* 描述 * 描述
*/ */
private String targetDesc; private String targetDesc;
/** /**
* 文件大小byte * 文件大小单位字节
*/ */
private Double totalSize; private Double fileSize;
/**
* 文件名称
*/
private String fileName;
/**
* 文件类型例如 ziptar.gz
*/
private String fileType;
/**
* 文件地址路径
*/
private String filePath;
} }

View File

@ -15,7 +15,9 @@ public class TargetUploadReq{
private File file; private File file;
//文件上传远程路径
private String remoteFilePath; private String remoteFilePath;
//文件类型
private String fileType; private String fileType;
} }

View File

@ -2,6 +2,8 @@ package cd.casic.ci.process.dal.resp.target;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime;
/** /**
* @author HopeLi * @author HopeLi
* @version v1.0 * @version v1.0
@ -13,68 +15,33 @@ import lombok.Data;
public class TargetManagerResp{ public class TargetManagerResp{
private String id; private String id;
/**
* 用户id
*/
private String userId;
/** /**
* 目标名称 * 目标名称
*/ */
private String targetName; private String targetName;
/** /**
* 目标类型 * 目标图标
*/ */
private String targetType; private String targetIcon;
/** /**
* 版本 * 组织ID
*/
private String version;
/**
* 描述
*/
private String targetDesc;
/**
* 文件唯一标识
*/
private String identifier;
/**
* 文件大小byte
*/
private Double totalSize;
/**
* 文件名字
*/
private String fileName;
/**
* 文件密级
*/
private String fileSecrets;
/**
* 文件类型
*/
private String fileType;
/**
* 密级
*/
private String secretId;
/**
* 组织id
*/ */
private String projectId; private String projectId;
/** /**
* 图标 * 创建时间
*/ */
private String fileIcon; private LocalDateTime createTime;
/**
* 最后更新时间
*/
private LocalDateTime updateTime;
private String creator;
private String creatorName;
private String updater;
private String updaterName;
} }

View File

@ -1,10 +1,6 @@
package cd.casic.ci.process.process.converter; package cd.casic.ci.process.process.converter;
import cd.casic.ci.process.dal.req.target.TargetManagerCreateReq;
import cd.casic.ci.process.dal.req.target.TargetManagerUpdateReq;
import cd.casic.ci.process.dal.resp.pipeline.PipelineFindResp;
import cd.casic.ci.process.dal.resp.target.TargetManagerResp; import cd.casic.ci.process.dal.resp.target.TargetManagerResp;
import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline;
import cd.casic.ci.process.process.dataObject.target.TargetManager; import cd.casic.ci.process.process.dataObject.target.TargetManager;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
@ -22,9 +18,7 @@ import java.util.List;
public interface TargetConverter { public interface TargetConverter {
TargetConverter INSTANCE = Mappers.getMapper(TargetConverter.class); TargetConverter INSTANCE = Mappers.getMapper(TargetConverter.class);
PipelineFindResp toResp(PipPipeline pipPipeline); TargetManagerResp toResp(TargetManager targetManager);
List<TargetManagerResp> toRespList(List<TargetManager> pipPipelines); List<TargetManagerResp> toRespList(List<TargetManager> targetManagers);
TargetManager reqToDo(TargetManagerCreateReq req);
TargetManager reqToDo(TargetManagerUpdateReq req);
} }

View File

@ -1,7 +1,6 @@
package cd.casic.ci.process.process.dataObject.target; package cd.casic.ci.process.process.dataObject.target;
import cd.casic.ci.process.process.dataObject.base.PipBaseElement; import cd.casic.ci.process.process.dataObject.base.PipBaseElement;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -18,73 +17,18 @@ import lombok.EqualsAndHashCode;
@TableName("target_manager") @TableName("target_manager")
public class TargetManager extends PipBaseElement { public class TargetManager extends PipBaseElement {
/**
* 用户id
*/
@TableField("user_id")
private String userId;
/** /**
* 目标名称 * 目标名称
*/ */
@TableField("target_name")
private String targetName; private String targetName;
/** /**
* 目标类型 * 目标图标
*/ */
@TableField("target_type") private String targetIcon;
private String targetType;
/** /**
* 描述 * 组织ID
*/ */
@TableField("target_desc")
private String targetDesc;
/**
* 文件唯一标识
*/
private String identifier;
/**
* 文件大小byte
*/
@TableField("total_size")
private Double totalSize;
/**
* 文件名字
*/
@TableField("file_name")
private String fileName;
/**
* 文件密级
*/
@TableField("file_secrets")
private String fileSecrets;
/**
* 文件类型
*/
@TableField("file_type")
private String fileType;
/**
* 密级
*/
private String secretId;
/**
* 组织id
*/
@TableField("project_id")
private String projectId; private String projectId;
/**
* 图标
*/
@TableField("file_icon")
private String fileIcon;
} }

View File

@ -1,7 +1,6 @@
package cd.casic.ci.process.process.dataObject.target; package cd.casic.ci.process.process.dataObject.target;
import cd.casic.ci.process.process.dataObject.base.PipBaseElement; import cd.casic.ci.process.process.dataObject.base.PipBaseElement;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -19,61 +18,42 @@ import lombok.EqualsAndHashCode;
public class TargetVersion extends PipBaseElement { public class TargetVersion extends PipBaseElement {
/** /**
* 目标id * 目标ID
*/ */
@TableField("target_id")
private String targetId; private String targetId;
/** /**
* 目标类型 * 目标类型
*/ */
@TableField("target_type")
private String targetType; private String targetType;
/** /**
* 版本 * 版本
*/ */
private String version; private String version;
/** /**
* 描述 * 描述
*/ */
@TableField("target_desc")
private String targetDesc; private String targetDesc;
/** /**
* 文件唯一标识 * 文件大小单位字节
*/ */
private String identifier;
/**
* 文件大小byte
*/
@TableField("file_size")
private Double fileSize; private Double fileSize;
/** /**
* 文件名 * 文件名称
*/ */
@TableField("file_name")
private String fileName; private String fileName;
/** /**
* 文件类型 * 文件类型例如 ziptar.gz
*/ */
@TableField("file_type")
private String fileType; private String fileType;
/**
* 密级
* 人员1一般2重要3核心
* 文件/功能1公开 2内部 3秘密 4机密
*/
private String secretId;
/** /**
* 文件地址路径 * 文件地址路径
*/ */
@TableField("file_path")
private String filePath; private String filePath;
} }

View File

@ -17,7 +17,8 @@ import cd.casic.framework.commons.exception.ServiceException;
import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants; import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants;
import cd.casic.framework.commons.pojo.PageResult; import cd.casic.framework.commons.pojo.PageResult;
import cd.casic.framework.commons.util.object.BeanUtils; import cd.casic.framework.commons.util.object.BeanUtils;
import cd.casic.framework.commons.util.util.WebFrameworkUtils; import cd.casic.framework.security.dal.user.AdminUserDO;
import cd.casic.framework.tenant.core.service.AdminUserServiceImpl;
import cd.casic.module.infra.framework.file.core.client.ftp.FtpFileClient; import cd.casic.module.infra.framework.file.core.client.ftp.FtpFileClient;
import cd.casic.module.infra.framework.file.core.client.ftp.FtpFileClientConfig; import cd.casic.module.infra.framework.file.core.client.ftp.FtpFileClientConfig;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
@ -30,12 +31,12 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.FileCopyUtils; import org.springframework.util.FileCopyUtils;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -58,25 +59,22 @@ public class TargetManagerServiceImpl extends ServiceImpl<TargetManagerDao, Targ
@Resource @Resource
private TargetVersionDao targetVersionDao; private TargetVersionDao targetVersionDao;
@Resource @Resource
private TargetConverter targetConverter; private AdminUserServiceImpl adminUserService;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void createTarget(TargetManagerCreateReq req) { public void createTarget(TargetManagerCreateReq req) {
TargetManager targetManager = targetConverter.reqToDo(req); TargetManager targetManager = new TargetManager();
targetManager.setCreator(String.valueOf(WebFrameworkUtils.getLoginUserId())); BeanUtils.copyProperties(req, targetManager);
targetManager.setCreateTime(LocalDateTime.now());
this.save(targetManager); this.save(targetManager);
//保存第一个版本 //保存第一个版本
TargetVersion targetVersion = new TargetVersion(); TargetVersion targetVersion = new TargetVersion();
BeanUtil.copyProperties(targetManager,targetVersion); BeanUtil.copyProperties(req,targetVersion);
targetVersion.setTargetId(targetManager.getId()); targetVersion.setTargetId(targetManager.getId());
targetVersion.setFilePath(req.getFilePath());
targetVersion.setCreator(String.valueOf(WebFrameworkUtils.getLoginUserId()));
targetVersion.setCreateTime(LocalDateTime.now());
targetVersion.setFileSize(targetManager.getTotalSize());
targetVersionService.save(targetVersion); targetVersionService.save(targetVersion);
} }
@ -92,20 +90,30 @@ public class TargetManagerServiceImpl extends ServiceImpl<TargetManagerDao, Targ
throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"数据错误,请联系管理员"); throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"数据错误,请联系管理员");
} }
targetManager=targetConverter.reqToDo(req); BeanUtils.copyProperties(req,targetManager);
targetManager.setUpdater(String.valueOf(WebFrameworkUtils.getLoginUserId()));
targetManager.setUpdateTime(LocalDateTime.now());
targetManagerDao.updateById(targetManager); targetManagerDao.updateById(targetManager);
//新增一条版本信息 //根据版本号和targetId查询是修改当前版本的信息还是新增新版本
TargetVersion targetVersion = new TargetVersion(); QueryWrapper<TargetVersion> wrapper = new QueryWrapper<>();
BeanUtil.copyProperties(targetManager,targetVersion); wrapper.eq("target_id",targetManager.getId());
targetVersion.setTargetId(targetManager.getId()); wrapper.eq("version",req.getVersion());
targetVersion.setFilePath(req.getFilePath()); List<TargetVersion> versionList = targetVersionDao.selectList(wrapper);
targetVersion.setCreator(String.valueOf(WebFrameworkUtils.getLoginUserId()));
targetVersion.setCreateTime(LocalDateTime.now()); if (CollectionUtils.isEmpty(versionList)){
targetVersion.setFileSize(targetManager.getTotalSize()); //新增一条版本信息
targetVersionService.save(targetVersion); TargetVersion targetVersion = new TargetVersion();
BeanUtil.copyProperties(req,targetVersion);
targetVersion.setTargetId(targetManager.getId());
targetVersionService.save(targetVersion);
}else {
TargetVersion targetVersion = versionList.get(0);
String versionId = targetVersion.getId();
BeanUtils.copyProperties(req,targetVersion);
targetVersion.setId(versionId);
targetVersionService.updateById(targetVersion);
}
} }
@Override @Override
@ -152,6 +160,7 @@ public class TargetManagerServiceImpl extends ServiceImpl<TargetManagerDao, Targ
} }
List<TargetManagerResp> respList = TargetConverter.INSTANCE.toRespList(targetManagerPage.getRecords()); List<TargetManagerResp> respList = TargetConverter.INSTANCE.toRespList(targetManagerPage.getRecords());
respList.forEach(this::setUserName);
respPage.setRecords(respList); respPage.setRecords(respList);
respPage.setTotal(targetManagerPage.getTotal()); respPage.setTotal(targetManagerPage.getTotal());
@ -161,6 +170,22 @@ public class TargetManagerServiceImpl extends ServiceImpl<TargetManagerDao, Targ
return pageResult; return pageResult;
} }
private void setUserName(TargetManagerResp targetManagerResp) {
if (!StringUtils.isEmpty(targetManagerResp.getCreator())){
AdminUserDO user = adminUserService.getUser(Long.valueOf(targetManagerResp.getCreator()));
if (!ObjectUtils.isEmpty(user)){
targetManagerResp.setCreatorName(user.getUsername());
}
}
if (!StringUtils.isEmpty(targetManagerResp.getUpdater())){
AdminUserDO user = adminUserService.getUser(Long.valueOf(targetManagerResp.getUpdater()));
if (!ObjectUtils.isEmpty(user)){
targetManagerResp.setUpdaterName(user.getUsername());
}
}
}
@Override @Override
public List<TargetManagerResp> findTargetList(TargetQueryReq query) { public List<TargetManagerResp> findTargetList(TargetQueryReq query) {
QueryWrapper<TargetManager> wrapper = new QueryWrapper<>(); QueryWrapper<TargetManager> wrapper = new QueryWrapper<>();
@ -182,6 +207,7 @@ public class TargetManagerServiceImpl extends ServiceImpl<TargetManagerDao, Targ
} }
List<TargetManagerResp> respList = TargetConverter.INSTANCE.toRespList(targetManagerList); List<TargetManagerResp> respList = TargetConverter.INSTANCE.toRespList(targetManagerList);
respList.forEach(this::setUserName);
return respList; return respList;
} }
@ -199,9 +225,9 @@ public class TargetManagerServiceImpl extends ServiceImpl<TargetManagerDao, Targ
//TODO //TODO
FtpFileClientConfig config = new FtpFileClientConfig(); FtpFileClientConfig config = new FtpFileClientConfig();
config.setDomain("http://127.0.0.1:48080"); config.setDomain("http://127.0.0.1:48080");
config.setBasePath("/home/ftp"); config.setBasePath("/home/ops/ops-pro/file/identifier");
config.setHost("kanchai.club"); config.setHost("kanchai.club");
config.setPort(221); config.setPort(22);
config.setUsername(""); config.setUsername("");
config.setPassword(""); config.setPassword("");
config.setMode(FtpMode.Passive.name()); config.setMode(FtpMode.Passive.name());

View File

@ -52,7 +52,6 @@ public class TargetTest {
TargetManagerCreateReq targetManagerCreateReq = new TargetManagerCreateReq(); TargetManagerCreateReq targetManagerCreateReq = new TargetManagerCreateReq();
targetManagerCreateReq.setTargetName("1"); targetManagerCreateReq.setTargetName("1");
targetManagerCreateReq.setFilePath("1"); targetManagerCreateReq.setFilePath("1");
targetManagerCreateReq.setTotalSize(1.0);
targetManagerService.createTarget(targetManagerCreateReq); targetManagerService.createTarget(targetManagerCreateReq);