水木接口修改

This commit is contained in:
even 2025-07-14 09:54:29 +08:00
parent 8965c57f35
commit 5de8382e60
10 changed files with 223 additions and 28 deletions

View File

@ -1,13 +1,7 @@
package cd.casic.ci.api;
import cd.casic.ci.process.dto.req.shuimu.ShuiMuBuildAndSaveReq;
import cd.casic.ci.process.dto.req.shuimu.ShuiMuProjectCreateReq;
import cd.casic.ci.process.dto.req.shuimu.ShuiMuTestProblemReq;
import cd.casic.ci.process.dto.req.shuimu.ShuiMuUpdateWFuzzJsonReq;
import cd.casic.ci.process.dto.resp.shuimu.ShuiMuProjectInfoResp;
import cd.casic.ci.process.dto.resp.shuimu.ShuiMuProjectReportResp;
import cd.casic.ci.process.dto.resp.shuimu.ShuiMuProjectVersionResp;
import cd.casic.ci.process.dto.resp.shuimu.ShuiMuTestProblemResp;
import cd.casic.ci.process.dto.req.shuimu.*;
import cd.casic.ci.process.dto.resp.shuimu.*;
import cd.casic.ci.process.process.service.shuimu.ShuiMuService;
import cd.casic.framework.commons.pojo.CommonResult;
import jakarta.annotation.Resource;
@ -74,4 +68,22 @@ public class ShuiMuController {
public CommonResult<ShuiMuProjectReportResp> getProjectReport(@RequestParam String projectId){
return CommonResult.success(shuiMuService.getProjectReport(projectId));
}
@PostMapping("/createWebFuzzProject")
public CommonResult<ShuiMuWebFuzzProjectCreateResp> createWebFuzzProject(@RequestBody ShuiMuWebFuzzProjectCreateUpdateReq req){
return CommonResult.success(shuiMuService.createWebFuzzProject(req));
}
@GetMapping("/getWebFuzzProjectById")
public CommonResult<ShuiMuWebFuzzProjectResp> getWebFuzzProjectById(@RequestParam String id){
return CommonResult.success(shuiMuService.getWebFuzzProjectById(id));
}
@PostMapping("/createWebFuzzTest")
public CommonResult<Void> createWebFuzzTest(@RequestParam String projectId){
shuiMuService.createWebFuzzTest(projectId);
return CommonResult.success();
}
@PostMapping("/updateWebFuzzProject")
public CommonResult<Void> updateWebFuzzProject(ShuiMuWebFuzzProjectCreateUpdateReq req){
shuiMuService.updateWebFuzzProject(req);
return CommonResult.success();
}
}

View File

@ -19,4 +19,9 @@ public class ShuiMuUrlConstant {
public static final String problemsOfTest = "/api/test/problemsOfTest";
public static final String getProjectReport = "/api/project";
public static final String createWebFuzzProject = "/api/webFuzz/project/create";
public static final String updateWebFuzzProject = "/api/webFuzz/project/update";
public static final String createWebFuzzTest = "/api/webFuzz/test/create";
public static final String getWebFuzzProjectById = "/api/webFuzz/project/getById/";
}

View File

@ -0,0 +1,39 @@
package cd.casic.ci.process.dto.req.shuimu;
import lombok.Data;
import java.util.Map;
@Data
public class ShuiMuWebFuzzProjectCreateUpdateReq {
private String id;
/**
* 项目名
* */
private String projectName;
/**
* 项目域名
* */
private String hostAddress;
/**
* 项目完整地址
* */
private String projectAddress;
/**
* 爬虫域名
* */
private String crawl;
/**
* 是否开启爬虫
* */
private Boolean crawlOpened;
/**
* 模式名 好像只有 0这个值
* */
private Integer modeType;
/**
* 爬虫地址
* */
private String crawlAddress;
private Map<String,Object> config;
}

View File

@ -0,0 +1,24 @@
package cd.casic.ci.process.dto.resp.shuimu;
import lombok.Data;
@Data
public class ShuiMuWebFuzzProjectCreateResp {
private Long id;
private String name;
private String protocol;
private String host;
private String pathname;
private String projectAddress;
private String crawlAddress;
private String config;
private Integer state;
private Long createBy;
private Long createAt;
private Long updateAt;
private Long deleteAt;
private String ownerId;
private Boolean openCrawling;
private Boolean openTimelyScraping;
private Integer modeType;
}

View File

@ -0,0 +1,33 @@
package cd.casic.ci.process.dto.resp.shuimu;
import lombok.Data;
@Data
public class ShuiMuWebFuzzProjectResp {
private Long id;
private String name;
private Long versionId;
private String versionCode;
private String vcs;
private String repo;
private String hostAddress;
private String config;
private String ownerId;
private Long createBy;
private Integer state;
private Long latestTestStartAt;
private Integer problemCount;
private Integer urlCount;
private Integer allUrlCount;
private Boolean openCrawling;
private Boolean openTimelyScraping;
private String protocol;
private String host;
private String pathname;
private String projectAddress;
private String crawlAddress;
private Long createAt;
private Long updateAt;
private Long deleteAt;
private Integer modeType;
}

View File

@ -4,16 +4,13 @@ import cd.casic.ci.process.engine.constant.EngineRuntimeConstant;
import cd.casic.ci.process.engine.manager.LoggerManager;
import cd.casic.ci.process.engine.runContext.TaskRunContext;
import cd.casic.ci.process.process.dao.pipeline.PipTaskLogDao;
import cd.casic.ci.process.process.dao.pipeline.PipTaskLogLineDao;
import cd.casic.ci.process.process.dataObject.log.PipTaskLog;
import cd.casic.ci.process.process.dataObject.log.PipTaskLogLine;
import cd.casic.ci.process.process.dataObject.task.PipTask;
import cd.casic.ci.process.process.service.task.TaskService;
import cd.casic.ci.process.process.service.taskLog.PipTaskLogLineService;
import cd.casic.ci.process.util.snowflake.SnowflakeIdentifierGenerator;
import cd.casic.framework.commons.util.network.IpUtil;
import cd.casic.ci.process.util.WebFrameworkUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;

View File

@ -12,8 +12,6 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
@WorkAtom(taskType = "DB_FUZZ_TESTING")
public class DBFuzzTestingWorker extends BaseWorker {
@Override
public void execute(TaskRunContext context) {
// PipBaseElement contextDef = context.getContextDef();

View File

@ -1,12 +1,7 @@
package cd.casic.ci.process.process.service.shuimu;
import cd.casic.ci.process.dto.req.shuimu.ShuiMuBuildAndSaveReq;
import cd.casic.ci.process.dto.req.shuimu.ShuiMuProjectCreateReq;
import cd.casic.ci.process.dto.req.shuimu.ShuiMuTestProblemReq;
import cd.casic.ci.process.dto.req.shuimu.ShuiMuUpdateWFuzzJsonReq;
import cd.casic.ci.process.dto.req.shuimu.*;
import cd.casic.ci.process.dto.resp.shuimu.*;
import cd.casic.framework.commons.pojo.CommonResult;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@ -37,5 +32,10 @@ public interface ShuiMuService {
List<ShuiMuTestProblemResp> problemsOfTest(ShuiMuTestProblemReq req);
ShuiMuProjectReportResp getProjectReport(String projectId);
ShuiMuWebFuzzProjectCreateResp createWebFuzzProject(ShuiMuWebFuzzProjectCreateUpdateReq req);
ShuiMuWebFuzzProjectResp getWebFuzzProjectById(String id);
void createWebFuzzTest(String projectId);
void updateWebFuzzProject(ShuiMuWebFuzzProjectCreateUpdateReq req);
}

View File

@ -1,11 +1,7 @@
package cd.casic.ci.process.process.service.shuimu.impl;
import cd.casic.ci.process.dto.req.shuimu.ShuiMuBuildAndSaveReq;
import cd.casic.ci.process.dto.req.shuimu.ShuiMuProjectCreateReq;
import cd.casic.ci.process.dto.req.shuimu.ShuiMuTestProblemReq;
import cd.casic.ci.process.dto.req.shuimu.ShuiMuUpdateWFuzzJsonReq;
import cd.casic.ci.process.dto.req.shuimu.*;
import cd.casic.ci.process.dto.resp.shuimu.*;
import cd.casic.ci.process.engine.manager.RunContextManager;
import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline;
import cd.casic.ci.process.process.dataObject.target.TargetVersion;
import cd.casic.ci.process.process.service.pipeline.PipelineService;
@ -20,6 +16,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.core.io.FileSystemResource;
import org.springframework.http.*;
@ -31,10 +28,7 @@ import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
import java.io.*;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
@ -42,6 +36,7 @@ import java.util.*;
import static cd.casic.ci.process.constant.ShuiMuUrlConstant.*;
@Service
@Slf4j
public class ShuiMuServiceImpl implements ShuiMuService {
@Resource
private ShuiMuProperties shuiMuProperties;
@ -332,6 +327,72 @@ public class ShuiMuServiceImpl implements ShuiMuService {
return list.get(0);
}
@Override
public ShuiMuWebFuzzProjectCreateResp createWebFuzzProject(ShuiMuWebFuzzProjectCreateUpdateReq req) {
MultiValueMap<String,Object> map = new LinkedMultiValueMap<>();
map.add("projectName",req.getProjectName());
map.add("hostAddress",req.getHostAddress());
map.add("projectAddress",req.getProjectAddress());
map.add("crawl",req.getCrawl());
map.add("config",req.getConfig());
map.add("crawlOpened",req.getCrawlOpened());
map.add("modeType",req.getModeType());
map.add("crawlAddress",req.getCrawlAddress());
HttpHeaders headers = getHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
HttpEntity<MultiValueMap<String,Object>> entity = new HttpEntity<>(map, headers);
ResponseEntity<ShuiMuWebFuzzProjectCreateResp> exchange = restTemplate.exchange(shuiMuProperties.getBaseUrl() + createWebFuzzProject, HttpMethod.POST, entity, ShuiMuWebFuzzProjectCreateResp.class, new HashMap<>());
return exchange.getBody();
}
@Override
public void updateWebFuzzProject(ShuiMuWebFuzzProjectCreateUpdateReq req) {
MultiValueMap<String,Object> map = new LinkedMultiValueMap<>();
map.add("projectName",req.getProjectName());
map.add("hostAddress",req.getHostAddress());
map.add("projectAddress",req.getProjectAddress());
map.add("crawl",req.getCrawl());
map.add("config",req.getConfig());
map.add("crawlOpened",req.getCrawlOpened());
map.add("modeType",req.getModeType());
map.add("crawlAddress",req.getCrawlAddress());
HttpHeaders headers = getHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
HttpEntity<MultiValueMap<String,Object>> entity = new HttpEntity<>(map, headers);
ResponseEntity<String> exchange = restTemplate.exchange(shuiMuProperties.getBaseUrl() + updateWebFuzzProject, HttpMethod.POST, entity, String.class, new HashMap<>());
}
@Override
public void createWebFuzzTest(String projectId) {
MultiValueMap<String,Object> multiValueMap = new LinkedMultiValueMap<>();
ShuiMuWebFuzzProjectResp webFuzzProjectById = getWebFuzzProjectById(projectId);
JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(webFuzzProjectById));
for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
if (entry.getKey().equals("id")) {
multiValueMap.add("projectId",entry.getValue());
continue;
}
multiValueMap.add(entry.getKey(),entry.getValue());
}
HttpHeaders headers = getHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
HttpEntity<MultiValueMap<String,Object>> entity = new HttpEntity<>(multiValueMap, headers);
ResponseEntity<ShuiMuWebFuzzProjectCreateResp> exchange = restTemplate.exchange(shuiMuProperties.getBaseUrl() + createWebFuzzTest, HttpMethod.POST, entity, ShuiMuWebFuzzProjectCreateResp.class, new HashMap<>());
log.info("请求结果{}",exchange.getBody());
}
@Override
public ShuiMuWebFuzzProjectResp getWebFuzzProjectById(String id) {
HttpEntity<String> entity = new HttpEntity<>(null,getHeaders());
String uriString = UriComponentsBuilder.fromUriString(shuiMuProperties.getBaseUrl() + getWebFuzzProjectById + id).toUriString();
ResponseEntity<ShuiMuWebFuzzProjectResp> exchange = restTemplate.exchange(uriString, HttpMethod.GET, entity, ShuiMuWebFuzzProjectResp.class, new HashMap<>());
return exchange.getBody();
}
public void updateWebFuzzProject(){
}
private HttpHeaders getHeaders(){
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.APPLICATION_JSON);

View File

@ -13,6 +13,7 @@ import cd.casic.ci.process.process.dataObject.template.TemplateManager;
import cd.casic.ci.process.process.dataObject.template.TemplateStage;
import cd.casic.ci.process.process.dataObject.template.TemplateTask;
import cd.casic.ci.process.process.service.template.TemplateManagerService;
import cd.casic.ci.process.util.snowflake.SnowflakeIdentifierGenerator;
import cd.casic.framework.commons.exception.ServiceException;
import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants;
import cd.casic.framework.commons.pojo.PageResult;
@ -59,11 +60,36 @@ public class TemplateManagerServiceImpl extends ServiceImpl<TemplateManagerDao,
private AdminUserServiceImpl adminUserService;
@Resource
private TemplateConverter templateConverter;
@Resource
private SnowflakeIdentifierGenerator idWork;
public String createTemplateManager(TemplateCreateReq req){
TemplateManager templateManager = templateConverter.managerCreateReqToManager(req);
save(templateManager);
return templateManager.getId();
String templateManagerId = templateManager.getId();
// 创建模板节点
TemplateStage firstStage = new TemplateStage();
firstStage.setTemplateId(templateManagerId);
firstStage.setStageName("源码阶段");
firstStage.setParentId("-1");
String firstStageId = idWork.nextUUID(null);
firstStage.setId(firstStageId);
TemplateStage secondStage = new TemplateStage();
secondStage.setTemplateId(templateManagerId);
secondStage.setStageName("源码阶段");
secondStage.setParentId(firstStageId);
String secondStageId = idWork.nextUUID(null);
secondStage.setId(secondStageId);
TemplateTask task = new TemplateTask();
task.setTemplateId(templateManagerId);
task.setStageId(secondStageId);
task.setTaskSort(1);
task.setTaskName("初始节点");
task.setTemplateId(templateManagerId);
templateStageDao.insert(firstStage);
templateStageDao.insert(secondStage);
templateTaskDao.insert(task);
return templateManagerId;
}
@Override
public PageResult<TemplateFindResp> findTemplatePage(TemplateQueryReq query) {