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

View File

@ -17,32 +17,47 @@ public class TargetManagerCreateReq {
private String targetName;
/**
* 图标
* 目标图标
*/
private String fileIcon;
private String targetIcon;
/**
* 文件地址路径
* 组织ID
*/
private String filePath;
private String projectId;
/**
* 目标类型
*/
private String targetType;
/**
* 版本号
*/
private String version;
/**
* 描述
*/
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 version;
private String targetIcon;
/**
* 图标
* 组织ID
*/
private String fileIcon;
/**
* 文件地址路径
*/
private String filePath;
private String projectId;
/**
* 目标类型
*/
private String targetType;
/**
* 版本号
*/
private String version;
/**
* 描述
*/
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 String remoteFilePath;
//文件类型
private String fileType;
}

View File

@ -2,6 +2,8 @@ package cd.casic.ci.process.dal.resp.target;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author HopeLi
* @version v1.0
@ -13,68 +15,33 @@ import lombok.Data;
public class TargetManagerResp{
private String id;
/**
* 用户id
*/
private String userId;
/**
* 目标名称
*/
private String targetName;
/**
* 目标类型
* 目标图标
*/
private String targetType;
private String targetIcon;
/**
* 版本
*/
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
* 组织ID
*/
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;
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.process.dataObject.pipeline.PipPipeline;
import cd.casic.ci.process.process.dataObject.target.TargetManager;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
@ -22,9 +18,7 @@ import java.util.List;
public interface TargetConverter {
TargetConverter INSTANCE = Mappers.getMapper(TargetConverter.class);
PipelineFindResp toResp(PipPipeline pipPipeline);
List<TargetManagerResp> toRespList(List<TargetManager> pipPipelines);
TargetManager reqToDo(TargetManagerCreateReq req);
TargetManager reqToDo(TargetManagerUpdateReq req);
TargetManagerResp toResp(TargetManager targetManager);
List<TargetManagerResp> toRespList(List<TargetManager> targetManagers);
}

View File

@ -1,7 +1,6 @@
package cd.casic.ci.process.process.dataObject.target;
import cd.casic.ci.process.process.dataObject.base.PipBaseElement;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -18,73 +17,18 @@ import lombok.EqualsAndHashCode;
@TableName("target_manager")
public class TargetManager extends PipBaseElement {
/**
* 用户id
*/
@TableField("user_id")
private String userId;
/**
* 目标名称
*/
@TableField("target_name")
private String targetName;
/**
* 目标类型
* 目标图标
*/
@TableField("target_type")
private String targetType;
private String targetIcon;
/**
* 描述
* 组织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;
/**
* 图标
*/
@TableField("file_icon")
private String fileIcon;
}

View File

@ -1,7 +1,6 @@
package cd.casic.ci.process.process.dataObject.target;
import cd.casic.ci.process.process.dataObject.base.PipBaseElement;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -19,61 +18,42 @@ import lombok.EqualsAndHashCode;
public class TargetVersion extends PipBaseElement {
/**
* 目标id
* 目标ID
*/
@TableField("target_id")
private String targetId;
/**
* 目标类型
*/
@TableField("target_type")
private String targetType;
/**
* 版本
* 版本
*/
private String version;
/**
* 描述
*/
@TableField("target_desc")
private String targetDesc;
/**
* 文件唯一标识
* 文件大小单位字节
*/
private String identifier;
/**
* 文件大小byte
*/
@TableField("file_size")
private Double fileSize;
/**
* 文件名
* 文件名称
*/
@TableField("file_name")
private String fileName;
/**
* 文件类型
* 文件类型例如 ziptar.gz
*/
@TableField("file_type")
private String fileType;
/**
* 密级
* 人员1一般2重要3核心
* 文件/功能1公开 2内部 3秘密 4机密
*/
private String secretId;
/**
* 文件地址路径
*/
@TableField("file_path")
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.pojo.PageResult;
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.FtpFileClientConfig;
import cn.hutool.core.bean.BeanUtil;
@ -30,12 +31,12 @@ 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.CollectionUtils;
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;
@ -58,25 +59,22 @@ public class TargetManagerServiceImpl extends ServiceImpl<TargetManagerDao, Targ
@Resource
private TargetVersionDao targetVersionDao;
@Resource
private TargetConverter targetConverter;
private AdminUserServiceImpl adminUserService;
@Override
@Transactional(rollbackFor = Exception.class)
public void createTarget(TargetManagerCreateReq req) {
TargetManager targetManager = targetConverter.reqToDo(req);
targetManager.setCreator(String.valueOf(WebFrameworkUtils.getLoginUserId()));
targetManager.setCreateTime(LocalDateTime.now());
TargetManager targetManager = new TargetManager();
BeanUtils.copyProperties(req, targetManager);
this.save(targetManager);
//保存第一个版本
TargetVersion targetVersion = new TargetVersion();
BeanUtil.copyProperties(targetManager,targetVersion);
BeanUtil.copyProperties(req,targetVersion);
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);
}
@ -92,20 +90,30 @@ public class TargetManagerServiceImpl extends ServiceImpl<TargetManagerDao, Targ
throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"数据错误,请联系管理员");
}
targetManager=targetConverter.reqToDo(req);
targetManager.setUpdater(String.valueOf(WebFrameworkUtils.getLoginUserId()));
targetManager.setUpdateTime(LocalDateTime.now());
BeanUtils.copyProperties(req,targetManager);
targetManagerDao.updateById(targetManager);
//新增一条版本信息
TargetVersion targetVersion = new TargetVersion();
BeanUtil.copyProperties(targetManager,targetVersion);
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);
//根据版本号和targetId查询是修改当前版本的信息还是新增新版本
QueryWrapper<TargetVersion> wrapper = new QueryWrapper<>();
wrapper.eq("target_id",targetManager.getId());
wrapper.eq("version",req.getVersion());
List<TargetVersion> versionList = targetVersionDao.selectList(wrapper);
if (CollectionUtils.isEmpty(versionList)){
//新增一条版本信息
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
@ -152,6 +160,7 @@ public class TargetManagerServiceImpl extends ServiceImpl<TargetManagerDao, Targ
}
List<TargetManagerResp> respList = TargetConverter.INSTANCE.toRespList(targetManagerPage.getRecords());
respList.forEach(this::setUserName);
respPage.setRecords(respList);
respPage.setTotal(targetManagerPage.getTotal());
@ -161,6 +170,22 @@ public class TargetManagerServiceImpl extends ServiceImpl<TargetManagerDao, Targ
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
public List<TargetManagerResp> findTargetList(TargetQueryReq query) {
QueryWrapper<TargetManager> wrapper = new QueryWrapper<>();
@ -182,6 +207,7 @@ public class TargetManagerServiceImpl extends ServiceImpl<TargetManagerDao, Targ
}
List<TargetManagerResp> respList = TargetConverter.INSTANCE.toRespList(targetManagerList);
respList.forEach(this::setUserName);
return respList;
}
@ -199,9 +225,9 @@ public class TargetManagerServiceImpl extends ServiceImpl<TargetManagerDao, Targ
//TODO
FtpFileClientConfig config = new FtpFileClientConfig();
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.setPort(221);
config.setPort(22);
config.setUsername("");
config.setPassword("");
config.setMode(FtpMode.Passive.name());

View File

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