From 96a1fe22ef13cd112cdca52c8467f032ee294d5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=92=B2=E5=85=88=E7=94=9F?= <821039958@qq.com> Date: Tue, 29 Jul 2025 19:42:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B8=B8=E7=94=A8=E6=95=B0=E6=8D=AE=20?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E5=88=86=E9=85=8D=E6=95=B0=E6=8D=AE=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E5=B7=B2=E5=A5=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../docker/service/impl/ImageService.java | 3 +- .../casic/ci/api/DataAnalysisController.java | 53 ++++++++ .../resp/dataAnalysis/DataAnalysisResp.java | 115 ++++++++++++++++++ .../dataAnalysis/DataAnalysisService.java | 26 ++++ .../Impl/DataAnalysisServiceImpl.java | 78 ++++++++++++ 5 files changed, 274 insertions(+), 1 deletion(-) create mode 100644 modules/module-ci-process-api/src/main/java/cd/casic/ci/api/DataAnalysisController.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/dataAnalysis/DataAnalysisResp.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/dataAnalysis/DataAnalysisService.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/dataAnalysis/Impl/DataAnalysisServiceImpl.java diff --git a/modules/module-ci-execute/src/main/java/cd/casic/module/execute/docker/service/impl/ImageService.java b/modules/module-ci-execute/src/main/java/cd/casic/module/execute/docker/service/impl/ImageService.java index 88f13a2b..a014ae2d 100644 --- a/modules/module-ci-execute/src/main/java/cd/casic/module/execute/docker/service/impl/ImageService.java +++ b/modules/module-ci-execute/src/main/java/cd/casic/module/execute/docker/service/impl/ImageService.java @@ -2,6 +2,7 @@ package cd.casic.module.execute.docker.service.impl; import cd.casic.ci.commons.properties.TargetFileUploadProperties; import cd.casic.framework.commons.exception.ServerException; +import cd.casic.framework.commons.exception.util.ServiceExceptionUtil; import cd.casic.framework.commons.pojo.PageResult; import cd.casic.framework.mybatis.core.query.LambdaQueryWrapperX; import cd.casic.module.execute.docker.DockerClientFactory; @@ -235,7 +236,7 @@ public class ImageService implements IImageService { } } catch (Exception e) { log.error("与主机IP:{} 建立SSH连接失败", config.getHost()); - throw new RuntimeException("部署失败,请检测主机是否可用", e); + throw ServiceExceptionUtil.invalidParamException("部署失败,请检测主机: {} 是否可用",config.getHost()); } return new Sftp(session); } diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/DataAnalysisController.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/DataAnalysisController.java new file mode 100644 index 00000000..98654a70 --- /dev/null +++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/DataAnalysisController.java @@ -0,0 +1,53 @@ +package cd.casic.ci.api; + +import cd.casic.ci.process.process.service.dataAnalysis.DataAnalysisService; +import cd.casic.framework.commons.pojo.CommonResult; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +/** + * 数据分析 NUDT数据安全态势 + * @author: Paul + * @create: 2025-07-29 13:52 + */ +@Tag(name = "NUDT数据安全态势") +@RestController +@RequestMapping("/dataAnalysis") +public class DataAnalysisController { + + @Resource + private DataAnalysisService dataAnalysisService; + + @Operation(summary = "人数,任务次数,漏洞总数,高危漏洞 统计") + @GetMapping("/userAndTaskCount") + public CommonResult userAndTaskDataCount(@RequestParam(required = false,value = "country") String country){ + return CommonResult.success(dataAnalysisService.getUserAndTaskDataCount()); + } + + @Operation(summary = "漏洞监测分布概览") + @GetMapping("/HoopVulCount") + public CommonResult HoopVulDataCount(@RequestParam(required = false,value = "country") String country){ + return CommonResult.success(dataAnalysisService.getHoopVulCountList()); + } + + @Operation(summary = "资源分配数据概览") + @GetMapping("/ResourceDistList") + public CommonResult ResourceDistList(@RequestParam(required = false,value = "country") String country){ + return CommonResult.success(dataAnalysisService.getResourceDistCountList()); + } + + @Operation(summary = "漏洞监测数据概览") + @GetMapping("/VulMonitorDataList") + public CommonResult VulMonitorDataList(@RequestParam(required = false,value = "country") String country){ + + return CommonResult.success(); + } + + + +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/dataAnalysis/DataAnalysisResp.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/dataAnalysis/DataAnalysisResp.java new file mode 100644 index 00000000..edbc0831 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/dataAnalysis/DataAnalysisResp.java @@ -0,0 +1,115 @@ +package cd.casic.ci.process.dto.resp.dataAnalysis; + +import cd.casic.ci.process.enums.MachineSystemEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Builder; +import lombok.Data; +import java.math.BigDecimal; +import java.util.List; +import java.util.Random; + +/** + * NUDT数据安全态势 + * @author: Paul + * @create: 2025-07-29 15:16 + */ +@Data +@Builder +public class DataAnalysisResp { + + + /** + * 漏洞扫描 + */ + private String scanVulSUM; + /** + * 使用人数 + */ + private String useUserSUM; + /** + * 执行任务 + */ + private String taskSUM; + /** + * 漏洞总数 + */ + private String vulSUM; + /** + * 高危漏洞 + */ + private String perilousVulSUM; + + + private List hoopVulCountList; + + + private List resourceDistCountList; + + + /** + * 漏洞监测分布概览 + */ + @Data + public static class HoopVulCount{ + /** + * 城市 + */ + private String country; + /** + * 百分比 两位小数 + */ + private BigDecimal value; + } + + /** + * 资源分配数据概览 + */ + @Data + public static class ResourceDistCount{ + private static final List CITIES = List.of( + "北京", "上海", "广州", "深圳", "杭州", + "成都", "武汉", "西安", "长沙", "厦门" + ); + /** + * 机器id + */ + private Long id; + + private String name; + + /** + * 机器唯一标识 + */ + private String tag; + + private String hostIp; + + private String description; + + //1:Linux 2:Windows + private Integer machineInfoType; + + private String type; + + private String country; + + + private Integer sshPort; + + public void setMachineInfoType(Integer machineInfoType) { + this.country = CITIES.get(new Random().nextInt(CITIES.size())); + this.machineInfoType = machineInfoType; + this.type = machineInfoType.equals(MachineSystemEnum.WINDOWS.getSystem())?MachineSystemEnum.WINDOWS.name():MachineSystemEnum.LINUX.name(); + } + } + + /** + * + */ + /*@Data + static class VulMonitorCount{ + + }*/ + +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/dataAnalysis/DataAnalysisService.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/dataAnalysis/DataAnalysisService.java new file mode 100644 index 00000000..8d56bb13 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/dataAnalysis/DataAnalysisService.java @@ -0,0 +1,26 @@ +package cd.casic.ci.process.process.service.dataAnalysis; + +import cd.casic.ci.process.dto.resp.dataAnalysis.DataAnalysisResp; + +import java.util.List; + +public interface DataAnalysisService { + + String getUseUserSUM(); + + String getTaskSUM(); + + String getVulSUM(); + + DataAnalysisResp getUserAndTaskDataCount(); + + List getHoopVulCountList(); + + List getResourceDistCountList(); + + + + + + +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/dataAnalysis/Impl/DataAnalysisServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/dataAnalysis/Impl/DataAnalysisServiceImpl.java new file mode 100644 index 00000000..2f395108 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/dataAnalysis/Impl/DataAnalysisServiceImpl.java @@ -0,0 +1,78 @@ +package cd.casic.ci.process.process.service.dataAnalysis.Impl; + +import cd.casic.ci.process.dto.resp.dataAnalysis.DataAnalysisResp; +import cd.casic.ci.process.process.dao.history.PipPipelineHisInstanceDao; +import cd.casic.ci.process.process.dao.vulInfo.VulInfoDao; +import cd.casic.ci.process.process.service.dataAnalysis.DataAnalysisService; +import cd.casic.framework.datapermission.core.dal.AdminUserMapper; +import cd.casic.module.machine.dal.dataobject.MachineInfoDO; +import cd.casic.module.machine.dal.mysql.MachineInfoMapper; +import cn.hutool.core.bean.BeanUtil; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author: Paul + * @create: 2025-07-29 16:17 + */ +@Service +public class DataAnalysisServiceImpl implements DataAnalysisService { + + @Resource + private AdminUserMapper userMapper; + + @Resource + private VulInfoDao vulInfoDao; + + @Resource + private PipPipelineHisInstanceDao pipelineHisInstanceDao; + + @Resource + private MachineInfoMapper machineInfoMapper; + + @Override + public String getUseUserSUM() { + return userMapper.selectCount().toString(); + } + + @Override + public String getTaskSUM() { + return pipelineHisInstanceDao.selectCount().toString(); + } + + @Override + public String getVulSUM() { + return vulInfoDao.selectCount().toString(); + } + + public String getPerilousVulSUM(){ + return vulInfoDao.selectCount("severity", 2).toString(); + } + + @Override + public DataAnalysisResp getUserAndTaskDataCount() { + return DataAnalysisResp.builder().scanVulSUM("101125698234").useUserSUM(getUseUserSUM()) + .taskSUM(getTaskSUM()).vulSUM(getVulSUM()).perilousVulSUM(getPerilousVulSUM()).build(); + } + + @Override + public List getHoopVulCountList() { + + return null; + } + + @Override + public List getResourceDistCountList() { + + List machineInfoDOS = machineInfoMapper.selectList(); + List distCountList = machineInfoDOS.stream().map(obj -> { + DataAnalysisResp.ResourceDistCount distCount = new DataAnalysisResp.ResourceDistCount(); + BeanUtil.copyProperties(obj, distCount); + return distCount; + }).collect(Collectors.toList()); + return distCountList; + } +}