版本2.0更新

This commit is contained in:
yunian
2022-06-23 16:27:20 +08:00
parent 5a9e9a03f5
commit db6b7991af
899 changed files with 72581 additions and 0 deletions

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ddp-strategyx</artifactId>
<groupId>com.fibo.ddp</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ddp-strategyx-ai-model</artifactId>
</project>

View File

@@ -0,0 +1,245 @@
package com.fibo.ddp.strategyx.aimodel.controller;
import com.fibo.ddp.common.dao.strategyx.aimodel.MachineLearningModelsMapper;
import com.fibo.ddp.common.model.authx.system.SysUser;
import com.fibo.ddp.common.model.common.ResponseEntityBuilder;
import com.fibo.ddp.common.model.common.ResponseEntityDto;
import com.fibo.ddp.common.model.common.enums.ErrorCodeEnum;
import com.fibo.ddp.common.model.datax.datamanage.Field;
import com.fibo.ddp.common.model.strategyx.aimodel.MachineLearningModels;
import com.fibo.ddp.common.model.strategyx.strategyout.StrategyOutput;
import com.fibo.ddp.common.service.common.SessionManager;
import com.fibo.ddp.common.service.datax.datamanage.FieldService;
import com.fibo.ddp.common.service.monitor.logger.ArchivesLog;
import com.fibo.ddp.common.service.strategyx.aimodel.ModelsService;
import com.fibo.ddp.common.service.strategyx.aimodel.PMMLExecutor.PMMLExecutor;
import com.fibo.ddp.common.service.strategyx.strategyout.StrategyOutputService;
import com.fibo.ddp.common.utils.constant.OpTypeConst;
import com.fibo.ddp.common.utils.constant.strategyx.StrategyType;
import org.apache.commons.lang3.StringUtils;
import org.jpmml.evaluator.Evaluator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.*;
/**
* 模型相关接口
*/
@RestController
@RequestMapping(value = "models")
public class ModelsController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Resource(name = "PMMLExecutorRFImpl")
private PMMLExecutor pmmlExecutor;
@Autowired
private ModelsService modelsService;
@Resource
public FieldService fieldService;
@Resource
private StrategyOutputService outputService;
@Autowired
private MachineLearningModelsMapper machineLearningModelsMapper;
/**
* 获取模型列表信息
* @return
*/
@RequestMapping(value = "getModelsList", method = RequestMethod.POST)
public ResponseEntityDto<Object> getModelsList(){
SysUser sysUser = SessionManager.getLoginAccount();
Integer organId = Integer.valueOf(sysUser.getOrganId().toString());
try {
List<MachineLearningModels> modelsList = modelsService.getModelsListByOrganId(organId, null);
return ResponseEntityBuilder.buildNormalResponse(modelsList);
} catch (Exception e) {
logger.error("获取模型列表信息失败", e);
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.SERVER_ERROR);
}
}
/**
* 获取组织下全量指标信息
* @param
* @return
*/
@RequestMapping(value = "getAllFields", method = RequestMethod.POST)
public ResponseEntityDto<Object> getAllFields(){
Map<String, Object> paramMap = new HashMap<>();
SysUser sysUser = SessionManager.getLoginAccount();
paramMap.put("organId", sysUser.getOrganId());
paramMap.put("isOutput", 0);
try {
List<Map<String, Object>> resultList = new ArrayList<>();
List<Field> fieldList = fieldService.getFieldList(paramMap);
for(Field field : fieldList){
Map<String, Object> map = new HashMap<>();
map.put("key", field.getId());
map.put("label", field.getFieldCn());
resultList.add(map);
}
return ResponseEntityBuilder.buildNormalResponse(resultList);
} catch (Exception e) {
logger.error("获取全量指标信息失败", e);
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.SERVER_ERROR);
}
}
/**
* 上传并解析模型文件
* @param request
* @return
*/
@RequestMapping(value = "uploadAndParseFile", method = RequestMethod.POST)
public ResponseEntityDto<Object> uploadAndParseFile(HttpServletRequest request){
String fileName = "";
String accessUrl = "";
try {
// 上传文件
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
Iterator iter = multiRequest.getFileNames();
while (iter.hasNext()) {
MultipartFile file = multiRequest.getFile(iter.next().toString());
if (file != null) {
String uploadDir = request.getSession().getServletContext().getRealPath("/") + "upload/models/fieldUpload/";
if (!new File(uploadDir).exists()) {
File dir = new File(uploadDir);
dir.mkdirs();
}
fileName = System.currentTimeMillis() + "_" + file.getOriginalFilename();
String path = uploadDir + fileName;
//上传
file.transferTo(new File(path));
accessUrl = path;
}
}
// 解析文件
Evaluator evaluator = pmmlExecutor.loadPmml(accessUrl);
List<String> fieldList = pmmlExecutor.parseField(evaluator);
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("fileName", fileName);
resultMap.put("filePath", accessUrl);
resultMap.put("fieldList", fieldList);
return ResponseEntityBuilder.buildNormalResponse(resultMap);
} catch (Exception e) {
logger.error("上次解析模型文件失败", e);
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.SERVER_ERROR);
}
}
/**
* 添加模型
* @param models
* @return
*/
@RequestMapping(value = "save", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.SAVE_MODELS)
public ResponseEntityDto<Object> saveModels(@RequestBody MachineLearningModels models){
modelsService.checkNameNotRepeat(models);
SysUser sysUser = SessionManager.getLoginAccount();
models.setCreator(Integer.valueOf(sysUser.getUserId().toString()));
models.setModifier(Integer.valueOf(sysUser.getUserId().toString()));
models.setOrganId(Integer.valueOf(sysUser.getOrganId().toString()));
try {
models.setModelField(StringUtils.join(models.getModelFieldArr(), ","));
models.setMappingField(StringUtils.join(models.getMappingFieldArr(), ","));
int result = machineLearningModelsMapper.insert(models);
if (result>0){
outputService.insertTacticsOutput(models.getId().longValue(),models.getStrategyOutputList());
}
return ResponseEntityBuilder.buildNormalResponse(result);
} catch (Exception e) {
logger.error("保存模型信息失败", e);
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.SERVER_ERROR);
}
}
/**
* 删除模型
* @param id
* @return
*/
@RequestMapping(value = "delete/{id}", method = RequestMethod.DELETE)
@ArchivesLog(operationType = OpTypeConst.DELETE_MODELS)
public ResponseEntityDto<Object> deleteModels(@PathVariable Integer id){
try {
MachineLearningModels models = new MachineLearningModels();
models.setId(id);
models.setStatus(0);
int result = machineLearningModelsMapper.updateById(models);
return ResponseEntityBuilder.buildNormalResponse(result);
} catch (Exception e) {
logger.error("删除模型信息失败", e);
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.SERVER_ERROR);
}
}
/**
* 修改模型
* @param models
* @return
*/
@RequestMapping(value = "update/{id}", method = RequestMethod.PUT)
@ArchivesLog(operationType = OpTypeConst.UPDATE_MODELS)
public ResponseEntityDto<Object> updateModels(@PathVariable Integer id , @RequestBody MachineLearningModels models){
modelsService.checkNameNotRepeat(models);
SysUser sysUser = SessionManager.getLoginAccount();
models.setModifier(Integer.valueOf(sysUser.getUserId().toString()));
models.setId(id);
try {
models.setModelField(StringUtils.join(models.getModelFieldArr(), ","));
models.setMappingField(StringUtils.join(models.getMappingFieldArr(), ","));
int result = machineLearningModelsMapper.updateById(models);
outputService.updateTacticsOutput(id.longValue(),models.getStrategyOutputList(), StrategyType.MODELS);
return ResponseEntityBuilder.buildNormalResponse(result);
} catch (Exception e) {
logger.error("修改模型信息失败", e);
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.SERVER_ERROR);
}
}
/**
* 获取模型详细信息
* @param id
* @return
*/
@RequestMapping(value = "getDetailInfo/{id}", method = RequestMethod.GET)
public ResponseEntityDto<Object> getDetailInfo(@PathVariable Integer id){
try {
MachineLearningModels models = machineLearningModelsMapper.selectById(id);
if(models != null){
String modelField = models.getModelField();
models.setModelFieldArr(StringUtils.isBlank(modelField) ? new ArrayList<>() : Arrays.asList(modelField.split(",")));
String mappingField = models.getMappingField();
List<Integer> mappingFieldArr = new ArrayList<>();
if(StringUtils.isNotBlank(mappingField)){
String[] mappingFields = mappingField.split(",");
for(String str : mappingFields){
mappingFieldArr.add(Integer.valueOf(str));
}
}
models.setMappingFieldArr(mappingFieldArr);
List<StrategyOutput> strategyOutputList = outputService.queryByTactics(new StrategyOutput(id.longValue(), StrategyType.MODELS));
models.setStrategyOutputList(strategyOutputList);
}
return ResponseEntityBuilder.buildNormalResponse(models);
} catch (Exception e) {
logger.error("获取模型详细信息失败", e);
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.SERVER_ERROR);
}
}
}

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ddp-strategyx</artifactId>
<groupId>com.fibo.ddp</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ddp-strategyx-collection-rule</artifactId>
</project>

View File

@@ -0,0 +1,89 @@
package com.fibo.ddp.strategyx.collectionrule.controller;
import com.fibo.ddp.common.model.common.ResponseEntityBuilder;
import com.fibo.ddp.common.model.common.ResponseEntityDto;
import com.fibo.ddp.common.model.common.enums.ErrorCodeEnum;
import com.fibo.ddp.common.model.common.requestParam.QueryListParam;
import com.fibo.ddp.common.model.common.requestParam.UpdateFolderParam;
import com.fibo.ddp.common.model.common.requestParam.UpdateStatusParam;
import com.fibo.ddp.common.model.strategyx.collectionrule.ListOperation;
import com.fibo.ddp.common.service.strategyx.collectionrule.ListOperationService;
import com.fibo.ddp.common.utils.exception.ApiException;
import com.fibo.ddp.common.utils.util.ResponseUtil;
import com.github.pagehelper.PageInfo;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
@RestController
@RequestMapping("/v3/listOperation")
public class ListOperationController {
/**
* 服务对象
*/
@Resource
private ListOperationService listOperationService;
@ResponseBody
@RequestMapping(value = "/getListOperation/{id}", method = RequestMethod.POST)
public ResponseEntityDto<ListOperation> getListOperation(@PathVariable Long id) {
if (id == null) {
throw new ApiException(ErrorCodeEnum.PARAMS_EXCEPTION.getCode(), ErrorCodeEnum.PARAMS_EXCEPTION.getMessage());
}
ListOperation listOperation = listOperationService.queryById(id);
ResponseEntityDto<ListOperation> ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(listOperation);
return ruleResponseEntityDto;
}
@ResponseBody
@RequestMapping(value = "getListOperationList", method = RequestMethod.POST)
public ResponseEntityDto<ListOperation> getListOperationList(@RequestBody QueryListParam<ListOperation> listParam) {
PageInfo pageInfo = listOperationService.queryByEntity(listParam);
Map<String, Object> responseMap = ResponseUtil.getResponseMap(pageInfo);
ResponseEntityDto ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(responseMap);
return ruleResponseEntityDto;
}
@ResponseBody
@RequestMapping(value = "addListOperation", method = RequestMethod.POST)
public ResponseEntityDto<ListOperation> addListOperation(@RequestBody ListOperation listOperation) {
ListOperation insert = listOperationService.insert(listOperation);
ResponseEntityDto<ListOperation> ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(insert);
return ruleResponseEntityDto;
}
@ResponseBody
@RequestMapping(value = "updateListOperation", method = RequestMethod.POST)
public ResponseEntityDto<ListOperation> updateListOperation(@RequestBody ListOperation listOperation) {
ListOperation update = listOperationService.update(listOperation);
ResponseEntityDto<ListOperation> ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(update);
return ruleResponseEntityDto;
}
@ResponseBody
@RequestMapping(value = "updateListOperationStatus", method = RequestMethod.POST)
public ResponseEntityDto updateStatus(@RequestBody UpdateStatusParam param) {
UpdateStatusParam.checkParam(param);
boolean updateResult = listOperationService.updateStatus(param.getList(), param.getStatus());
if (updateResult) {
return ResponseEntityBuilder.buildNormalResponse(updateResult);
} else {
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.DECISION_TREE_UPDATE_ERROR);
}
}
@ResponseBody
@RequestMapping(value = "updateListOperationFolder", method = RequestMethod.POST)
public ResponseEntityDto updateFolder(@RequestBody UpdateFolderParam param) {
UpdateFolderParam.checkNotNull(param);
boolean updateResult = listOperationService.updateFolder(param.getIds(), param.getFolderId());
if (updateResult) {
return ResponseEntityBuilder.buildNormalResponse(updateResult);
} else {
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.SERVER_ERROR);
}
}
}

View File

@@ -0,0 +1,91 @@
package com.fibo.ddp.strategyx.collectionrule.controller;
import com.fibo.ddp.common.model.common.ResponseEntityBuilder;
import com.fibo.ddp.common.model.common.ResponseEntityDto;
import com.fibo.ddp.common.model.common.enums.ErrorCodeEnum;
import com.fibo.ddp.common.model.common.requestParam.StatusParam;
import com.fibo.ddp.common.model.strategyx.collectionrule.ListOperationVersion;
import com.fibo.ddp.common.service.strategyx.collectionrule.ListOperationVersionService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("/v3/listOperation/version")
public class ListOperationVersionController {
/**
* 服务对象
*/
@Resource
private ListOperationVersionService versionService;
/**
* 查询指定版本下的内容
*
* @param versionId
* @return
*/
@PostMapping("/getVersionInfo/{versionId}")
public ResponseEntityDto getVersionInfo(@PathVariable Long versionId) {
ListOperationVersion version = versionService.queryById(versionId);
return ResponseEntityBuilder.buildNormalResponse(version);
}
/**
* 新增一个版本
*
* @param version
* @return
*/
@PostMapping("/addVersion")
public ResponseEntityDto addVersion(@RequestBody ListOperationVersion version) {
boolean b = versionService.addVersion(version);
if (!b) {
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.PARAMS_EXCEPTION);
}
List<ListOperationVersion> ruleVersionList = versionService.queryListByListOpId(version.getListOpId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
/**
* 复制版本
*
* @param version
* @return
*/
@PostMapping("/copyVersion")
public ResponseEntityDto copyVersion(@RequestBody ListOperationVersion version) {
boolean b = versionService.copyVersion(version);
List<ListOperationVersion> ruleVersionList = versionService.queryListByListOpId(version.getListOpId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
/**
* 修改版本
*
* @param version
* @return
*/
@PostMapping("/updateVersion")
public ResponseEntityDto updateVersion(@RequestBody ListOperationVersion version) {
boolean b = versionService.updateVersion(version);
List<ListOperationVersion> ruleVersionList = versionService.queryListByListOpId(version.getListOpId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
/**
* 修改状态
*
* @param statusParam
* @return
*/
@RequestMapping(value = "/updateVersionStatus", method = RequestMethod.POST)
public ResponseEntityDto<Object> updateStatus(@RequestBody StatusParam statusParam) {
versionService.updateStatus(statusParam);
List<ListOperationVersion> ruleVersionList = versionService.queryListByListOpId(statusParam.getStrategyId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
}

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ddp-strategyx</artifactId>
<groupId>com.fibo.ddp</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ddp-strategyx-data-clean</artifactId>
</project>

View File

@@ -0,0 +1,89 @@
package com.fibo.ddp.strategyx.dataclean.controller;
import com.fibo.ddp.common.model.common.ResponseEntityBuilder;
import com.fibo.ddp.common.model.common.ResponseEntityDto;
import com.fibo.ddp.common.model.common.enums.ErrorCodeEnum;
import com.fibo.ddp.common.model.common.requestParam.QueryListParam;
import com.fibo.ddp.common.model.common.requestParam.UpdateFolderParam;
import com.fibo.ddp.common.model.common.requestParam.UpdateStatusParam;
import com.fibo.ddp.common.model.strategyx.dataclean.DataClean;
import com.fibo.ddp.common.service.strategyx.dataclean.DataCleanService;
import com.fibo.ddp.common.utils.exception.ApiException;
import com.fibo.ddp.common.utils.util.ResponseUtil;
import com.github.pagehelper.PageInfo;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
@RestController
@RequestMapping("/dataClean")
public class DataCleanController {
/**
* 服务对象
*/
@Resource
private DataCleanService dataCleanService;
@ResponseBody
@RequestMapping(value = "/getDataClean/{id}", method = RequestMethod.POST)
public ResponseEntityDto<DataClean> getDataClean(@PathVariable Long id) {
if (id == null) {
throw new ApiException(ErrorCodeEnum.PARAMS_EXCEPTION.getCode(), ErrorCodeEnum.PARAMS_EXCEPTION.getMessage());
}
DataClean dataClean = dataCleanService.queryById(id);
ResponseEntityDto<DataClean> ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(dataClean);
return ruleResponseEntityDto;
}
@ResponseBody
@RequestMapping(value = "getDataCleanList", method = RequestMethod.POST)
public ResponseEntityDto<DataClean> getDataCleanList(@RequestBody QueryListParam<DataClean> listParam) {
PageInfo pageInfo = dataCleanService.queryByEntity(listParam);
Map<String, Object> responseMap = ResponseUtil.getResponseMap(pageInfo);
ResponseEntityDto ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(responseMap);
return ruleResponseEntityDto;
}
@ResponseBody
@RequestMapping(value = "addDataClean", method = RequestMethod.POST)
public ResponseEntityDto<DataClean> addDataClean(@RequestBody DataClean dataClean) {
DataClean insert = dataCleanService.insert(dataClean);
ResponseEntityDto<DataClean> ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(insert);
return ruleResponseEntityDto;
}
@ResponseBody
@RequestMapping(value = "updateDataClean", method = RequestMethod.POST)
public ResponseEntityDto<DataClean> updateDataClean(@RequestBody DataClean dataClean) {
DataClean update = dataCleanService.update(dataClean);
ResponseEntityDto<DataClean> ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(update);
return ruleResponseEntityDto;
}
@ResponseBody
@RequestMapping(value = "updateDataCleanStatus", method = RequestMethod.POST)
public ResponseEntityDto updateStatus(@RequestBody UpdateStatusParam param) {
UpdateStatusParam.checkParam(param);
boolean updateResult = dataCleanService.updateStatus(param.getList(), param.getStatus());
if (updateResult) {
return ResponseEntityBuilder.buildNormalResponse(updateResult);
} else {
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.DECISION_TREE_UPDATE_ERROR);
}
}
@ResponseBody
@RequestMapping(value = "updateDataCleanFolder", method = RequestMethod.POST)
public ResponseEntityDto updateFolder(@RequestBody UpdateFolderParam param) {
UpdateFolderParam.checkNotNull(param);
boolean updateResult = dataCleanService.updateFolder(param.getIds(), param.getFolderId());
if (updateResult) {
return ResponseEntityBuilder.buildNormalResponse(updateResult);
} else {
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.SERVER_ERROR);
}
}
}

View File

@@ -0,0 +1,91 @@
package com.fibo.ddp.strategyx.dataclean.controller;
import com.fibo.ddp.common.model.common.ResponseEntityBuilder;
import com.fibo.ddp.common.model.common.ResponseEntityDto;
import com.fibo.ddp.common.model.common.enums.ErrorCodeEnum;
import com.fibo.ddp.common.model.common.requestParam.StatusParam;
import com.fibo.ddp.common.model.strategyx.dataclean.DataCleanVersion;
import com.fibo.ddp.common.service.strategyx.dataclean.DataCleanVersionService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("/dataClean/version")
public class DataCleanVersionController {
/**
* 服务对象
*/
@Resource
private DataCleanVersionService versionService;
/**
* 查询指定版本下的内容
*
* @param versionId
* @return
*/
@PostMapping("/getVersionInfo/{versionId}")
public ResponseEntityDto getVersionInfo(@PathVariable Long versionId) {
DataCleanVersion version = versionService.queryById(versionId,false);
return ResponseEntityBuilder.buildNormalResponse(version);
}
/**
* 新增一个版本
*
* @param version
* @return
*/
@PostMapping("/addVersion")
public ResponseEntityDto addVersion(@RequestBody DataCleanVersion version) {
boolean b = versionService.addVersion(version);
if (!b) {
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.PARAMS_EXCEPTION);
}
List<DataCleanVersion> ruleVersionList = versionService.queryListByListOpId(version.getDataCleanId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
/**
* 复制版本
*
* @param version
* @return
*/
@PostMapping("/copyVersion")
public ResponseEntityDto copyVersion(@RequestBody DataCleanVersion version) {
boolean b = versionService.copyVersion(version);
List<DataCleanVersion> ruleVersionList = versionService.queryListByListOpId(version.getDataCleanId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
/**
* 修改版本
*
* @param version
* @return
*/
@PostMapping("/updateVersion")
public ResponseEntityDto updateVersion(@RequestBody DataCleanVersion version) {
boolean b = versionService.updateVersion(version);
List<DataCleanVersion> ruleVersionList = versionService.queryListByListOpId(version.getDataCleanId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
/**
* 修改状态
*
* @param statusParam
* @return
*/
@RequestMapping(value = "/updateVersionStatus", method = RequestMethod.POST)
public ResponseEntityDto<Object> updateStatus(@RequestBody StatusParam statusParam) {
versionService.updateStatus(statusParam);
List<DataCleanVersion> ruleVersionList = versionService.queryListByListOpId(statusParam.getStrategyId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
}

View File

@@ -0,0 +1,53 @@
package com.fibo.ddp.strategyx.dataclean.execute.api;
import com.alibaba.fastjson.JSONObject;
import com.fibo.ddp.common.model.common.enums.ErrorCodeEnum;
import com.fibo.ddp.common.model.strategyx.dataclean.param.RunnerDataCleanParam;
import com.fibo.ddp.common.service.common.runner.RunnerSessionManager;
import com.fibo.ddp.common.service.common.runner.SessionData;
import com.fibo.ddp.common.utils.exception.ApiException;
import com.fibo.ddp.strategyx.dataclean.execute.business.DataCleanBusiness;
import lombok.extern.slf4j.Slf4j;
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;
import javax.annotation.Resource;
@RestController
@RequestMapping("/dataCleanApi")
@Slf4j
public class DataCleanApi {
@Resource
private DataCleanBusiness dataCleanBusiness;
@PostMapping("/runner")
public Object runnerListOp(@RequestBody RunnerDataCleanParam param){
long start = System.currentTimeMillis();
SessionData sessionData = new SessionData();
sessionData.setOrganId(param.getOrganId());
RunnerSessionManager.setSession(sessionData);
JSONObject result = new JSONObject();
try {
JSONObject jsonObject = dataCleanBusiness.runner(param);
result.put("status", ErrorCodeEnum.SUCCESS.getCode());
result.put("msg", ErrorCodeEnum.SUCCESS.getMessage());
result.put("data", jsonObject);
long end = System.currentTimeMillis();
log.info("=========数据清洗接口调用成功,耗时:{}ms", (end - start));
} catch (ApiException apiException) {
result.put("status", apiException.errCode);
result.put("msg", apiException.message);
result.put("data", apiException.data);
log.error("数据清洗接口发生业务异常errCode: {}, message: {}", apiException.errCode, apiException.message);
} catch (Exception e) {
result.put("status", ErrorCodeEnum.SERVER_ERROR.getCode());
result.put("msg", ErrorCodeEnum.SERVER_ERROR.getMessage());
result.put("data", null);
log.error("数据清洗接口发生运行时异常", e);
}
return result;
}
}

View File

@@ -0,0 +1,9 @@
package com.fibo.ddp.strategyx.dataclean.execute.business;
import com.alibaba.fastjson.JSONObject;
import com.fibo.ddp.common.model.strategyx.dataclean.param.RunnerDataCleanParam;
public interface DataCleanBusiness {
JSONObject runner(RunnerDataCleanParam param);
}

View File

@@ -0,0 +1,192 @@
package com.fibo.ddp.strategyx.dataclean.execute.business.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fibo.ddp.common.model.strategyx.dataclean.*;
import com.fibo.ddp.common.model.strategyx.dataclean.param.RunnerDataCleanParam;
import com.fibo.ddp.common.service.strategyx.dataclean.DataCleanService;
import com.fibo.ddp.common.service.strategyx.dataclean.DataCleanVersionService;
import com.fibo.ddp.common.utils.util.strategyx.DataCleanUtils;
import com.fibo.ddp.strategyx.dataclean.execute.business.DataCleanBusiness;
import com.fibo.ddp.strategyx.dataclean.execute.handler.DataCleanFilterConditionHandler;
import com.fibo.ddp.strategyx.dataclean.execute.handler.DataCleanModifyElementHandler;
import com.fibo.ddp.strategyx.dataclean.execute.handler.ListOpConditionHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service("dataCleanBusiness")
@Slf4j
public class DataCleanBusinessImpl implements DataCleanBusiness {
@Resource
private DataCleanVersionService versionService;
@Resource
private DataCleanService dataCleanService;
@Resource
private DataCleanModifyElementHandler modifyElementHandler;
@Resource
private DataCleanFilterConditionHandler filterConditionHandler;
@Resource
private ListOpConditionHandler listOpConditionHandler;
@Override
public JSONObject runner(RunnerDataCleanParam param) {
// DataClean dataClean = param.getDataClean();
long startTime = System.currentTimeMillis();
JSONObject result = null;
//查出内容
DataClean dataClean = dataCleanService.queryByCode(param.getDataCleanCode(),param.getVersionCode());
if (dataClean==null){
log.debug("【规则查询】拒绝执行:未查找到规则版本信息,耗时:{}, dataCleanCode:{} versionCode:{}",
System.currentTimeMillis() - startTime, param.getDataCleanCode(), param.getVersionCode());
return result;
}
List<DataCleanVersion> versionList = dataClean.getVersionList();
DataCleanVersion version = null;
if (CollectionUtils.isNotEmpty(versionList)){
version = versionList.get(0);
}
// version = versionService.queryById(param.getVersionId());
long queryEnd = System.currentTimeMillis();
log.debug("【规则查询】查询规则详情完成,耗时:{}, ruleCode:{} versionId:{}",
queryEnd - startTime, param.getDataCleanCode(), param.getVersionCode());
if (version == null) {
log.debug("【规则查询】拒绝执行:未查找到规则版本信息,耗时:{}, dataCleanId:{} versionCode:{}",
System.currentTimeMillis() - startTime, version.getDataCleanId(), param.getVersionCode());
return result;
}
// Date date = new Date();
// //判断有效期 如果有有效期则需要判断
// if (dataClean == null
// || (dataClean.getStartTime() != null && date.compareTo(dataClean.getStartTime()) < 0)
// || (dataClean.getEndTime() != null && date.compareTo(dataClean.getEndTime()) > 0)
// || dataClean.getStatus() != 1) {
// return result;
// }
String inputFieldEn = "default";
switch (version.getInputFieldType()) {
case "map":
result = this.mapHandlerV1(inputFieldEn, param.getParam(), version, version.getVersionCode());
break;
case "list":
break;
}
long endTime = System.currentTimeMillis();
log.debug("【规则执行】执行规则完成,耗时:{}, ruleCode:{}, versionCode:{}",
(endTime - queryEnd), version.getVersionCode(), param.getVersionCode());
return result;
}
public JSONObject mapHandlerV1(String inputEn, Map<String, Object> param, DataCleanVersion version, String ruleCode) {
List<Map<String, Object>> result = new ArrayList<>();
JSONObject intputObject = null;
Object paramMap = param.get(inputEn);
if (paramMap == null) {
//未能获取到参数直接返回
return null;
}
if (paramMap instanceof Map) {
intputObject = JSONObject.parseObject(JSONObject.toJSONString(paramMap));
}
DataCleanOriginalDataOp originalDataOp = version.getOriginalDataOp();
String opField = originalDataOp.getOpField();
JSONArray forTarget = intputObject.getJSONArray(opField);
List<JSONObject> forTargetJson = new ArrayList<>();
for(Object obj : forTarget){
forTargetJson.add((JSONObject) obj);
}
// 循环对象
for(JSONObject forObject : forTargetJson){
this.listHandlerV1(intputObject, forObject, version, ruleCode);
}
intputObject.put(opField, forTargetJson);
return intputObject;
}
public List<Map<String, Object>> listHandlerV1(JSONObject intputObject, JSONObject forObject, DataCleanVersion version, String ruleCode) {
List<Map<String, Object>> result = new ArrayList<>();
List<DataCleanConditionAndOutPut> conditionAndOutPutList = version.getConditionAndOutPutList();
// 新ratePlanList 返回每个组价格最低的一个元素
List<JSONObject> newRatePlanList = new ArrayList<>();
// 多块处理
for (DataCleanConditionAndOutPut conditionAndOutPut : conditionAndOutPutList) {
DataCleanBlock dataCleanBlock = conditionAndOutPut.getDataCleanBlock();
String handleCollection = dataCleanBlock.getHandleCollection();
JSONArray targetCollection = forObject.getJSONArray(handleCollection);
if(targetCollection == null){
//未能获取到参数直接返回
return null;
}
List<JSONObject> inputArray = new ArrayList<>();
for (Object obj : targetCollection) {
inputArray.add((JSONObject) obj);
}
DataCleanFilterCondition filterCondition = conditionAndOutPut.getInputFilterCondition();
List<JSONObject> executeArray = inputArray;
if (filterCondition != null) {
//执行进入过滤条件
executeArray = filterConditionHandler.filterByCondition(executeArray, filterCondition);
}
// 执行分组
Map<String, List<JSONObject>> listMap = null;
String groupFieldsStr = conditionAndOutPut.getDataCleanBlock().getGroupFields();
List<String> groupFields = null;
if (groupFieldsStr != null && !"[]".equals(groupFieldsStr)) {
groupFields = JSON.parseArray(groupFieldsStr, String.class);
}
if (groupFields != null && !groupFields.isEmpty()) {
listMap = groupBy(groupFields, executeArray);
} else {
listMap = new HashMap<>();
listMap.put("default", executeArray);
}
// 遍历每一个组
for (Map.Entry<String, List<JSONObject>> entry : listMap.entrySet()) {
Map<String, Object> localParamMap = new HashMap<>();
Map<String, Object> localOutPutMap = new HashMap<>();
List<JSONObject> list = entry.getValue();
DataCleanCondition condition = conditionAndOutPut.getCondition();
if (condition != null || condition.getChildren() != null) {
for(JSONObject collectionObject : list){
// 执行修改元素条件
boolean conditionResult = modifyElementHandler.conditionHandler(condition, localParamMap, intputObject, forObject, collectionObject);
if (conditionResult) {
// 命中修改元素
modifyElementHandler.outputListHandler(conditionAndOutPut.getSuccessOutput(), localParamMap, localOutPutMap, collectionObject);
} else {
// 未命中修改元素
modifyElementHandler.outputListHandler(conditionAndOutPut.getFailOutput(), localParamMap, localOutPutMap, collectionObject);
}
}
}
if (!localOutPutMap.isEmpty()) {
result.add(localOutPutMap);
}
// 组内返回结果过滤
DataCleanFilterCondition resultFilterCondition = conditionAndOutPut.getResultFilterCondition();
JSONObject resultFilterJson = listOpConditionHandler.conditionHandler(resultFilterCondition, null, list);
newRatePlanList.add(resultFilterJson);
}
}
forObject.put("ratePlanList", newRatePlanList);
return result;
}
public Map<String, List<JSONObject>> groupBy(List<String> groupFields, List<JSONObject> groupArray) {
Map<String, List<JSONObject>> listMap = DataCleanUtils.recursionGroup(groupArray, groupFields);
return listMap;
}
}

View File

@@ -0,0 +1,21 @@
package com.fibo.ddp.strategyx.dataclean.execute.consts;
public class ListOpConst {
public static class OpType{
//计数
public static final String COUNT = "count";
//去重计数
public static final String DISTINCT_COUNT = "distinct_count";
//最大值
public static final String MAX = "max";
//最小值
public static final String MIN = "min";
//平均
public static final String AVG = "avg";
//元素
public static final String LIST_ELEMENT = "list_element";
//自定义
public static final String CUSTOM = "custom";
}
}

View File

@@ -0,0 +1,100 @@
package com.fibo.ddp.strategyx.dataclean.execute.handler;
import com.alibaba.fastjson.JSONObject;
import com.fibo.ddp.common.model.strategyx.dataclean.DataCleanFilterCondition;
import com.fibo.ddp.common.service.datax.runner.ExecuteUtils;
import com.fibo.ddp.common.utils.constant.strategyx.RuleConst;
import com.fibo.ddp.common.utils.util.strategyx.DataCleanUtils;
import org.springframework.stereotype.Component;
import java.util.*;
import java.util.stream.Collectors;
@Component
public class DataCleanFilterConditionHandler {
public List<JSONObject> filterByCondition(List<JSONObject> list, DataCleanFilterCondition filterCondition){
if (filterCondition==null||filterCondition.getChildren()==null||filterCondition.getChildren().isEmpty()) {
return list;
}
//过滤框架
List<JSONObject> result = list.stream().filter(item->{
return executeCondition(item,filterCondition);
}).collect(Collectors.toList());
return result;
}
public boolean executeCondition(JSONObject json,DataCleanFilterCondition filterCondition){
Integer conditionType = filterCondition.getConditionType();
boolean result = false;
switch (conditionType) {
//关系条件节点 &&和||
case RuleConst.RELATION_CONDITION:
result = executeRelation(filterCondition, json);
break;
//表达式条件节点
case RuleConst.EXPRESSION_CONDITION:
result = executeExpression(filterCondition, json);
break;
}
return result;
}
private boolean executeRelation(DataCleanFilterCondition condition, JSONObject json) {
//获取关系逻辑
String logical = condition.getLogical();
//处理子逻辑
List<DataCleanFilterCondition> children = condition.getChildren();
boolean result = false;
switch (logical) {
case "||":
result = false;
for (DataCleanFilterCondition child : children) {
boolean childResult = executeCondition(json,child);
if (childResult) {
return true;
}
}
break;
case "&&":
result = true;
for (DataCleanFilterCondition child : children) {
boolean childResult = executeCondition(json,child);
if (!childResult) {
return false;
}
}
break;
}
return result;
}
private boolean executeExpression(DataCleanFilterCondition condition, JSONObject json) {
Object condKey = DataCleanUtils.getObjByKeyAndJson(json, condition.getOpKey());
Object condValue = null;
String condValueStr = condition.getVariableValue();
String operator = condition.getOperator();
switch (operator){
case "in":
case "not in":
condValue = new ArrayList<>();
Collections.addAll((List)condValue,condValueStr.split(","));
break;
case "black_list":
condKey = 1;
operator= "==";
condValue = ExecuteUtils.getValueByKey(condition.getVariableType(),new HashMap<>(),condition.getVariableValue(), Arrays.asList(json));
break;
case "not_black_list":
condKey = 0;
operator= "==";
condValue = ExecuteUtils.getValueByKey(condition.getVariableType(),new HashMap<>(),condition.getVariableValue(), Arrays.asList(json));
break;
default:
condValue = condValueStr;
}
return ExecuteUtils.getCondResult(operator, condKey, condValue);
}
}

View File

@@ -0,0 +1,120 @@
package com.fibo.ddp.strategyx.dataclean.execute.handler;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fibo.ddp.common.model.strategyx.dataclean.DataCleanCondition;
import com.fibo.ddp.common.model.strategyx.dataclean.DataCleanOutput;
import com.fibo.ddp.common.service.datax.runner.ExecuteUtils;
import com.fibo.ddp.common.utils.constant.strategyx.RuleConst;
import com.fibo.ddp.common.utils.util.strategyx.DataCleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Component
public class DataCleanModifyElementHandler {
public boolean conditionHandler(DataCleanCondition condition, Map<String, Object> input, JSONObject intputObject, JSONObject forObject, JSONObject collectionObject) {
boolean result = executeListCondition(condition, input, intputObject, forObject, collectionObject);
return result;
}
private boolean executeListCondition(DataCleanCondition condition, Map<String, Object> input, JSONObject intputObject, JSONObject forObject, JSONObject collectionObject) {
Integer conditionType = condition.getConditionType();
boolean result = false;
switch (conditionType) {
//关系条件节点 &&和||
case RuleConst.RELATION_CONDITION:
result = executeRelation(condition, input, intputObject, forObject, collectionObject);
break;
//表达式条件节点
case RuleConst.EXPRESSION_CONDITION:
result = executeExpression(condition, input, intputObject, forObject, collectionObject);
break;
}
return result;
}
private boolean executeExpression(DataCleanCondition condition, Map<String, Object> input, JSONObject intputObject, JSONObject forObject, JSONObject collectionObject) {
Object opValue = null;
String opType = condition.getOpType();
switch (opType) {
case "original": // 源数据
opValue = DataCleanUtils.getObjByKeyAndJson(intputObject, condition.getOpKey());
break;
case "data_op": // 循环对象元素
opValue = DataCleanUtils.getObjByKeyAndJson(forObject, condition.getOpKey());
break;
case "handle_collection": // 集合元素
opValue = DataCleanUtils.getObjByKeyAndJson(collectionObject, condition.getOpKey());
break;
}
//条件判断输入的值
List<JSONObject> list = new ArrayList<>();
list.add(collectionObject);
Object variableValue = ExecuteUtils.getValueByKey(condition.getVariableType(), input, condition.getVariableValue(), list);
//操作符
String operator = condition.getOperator();
return ExecuteUtils.getCondResult(operator, opValue, variableValue);
}
private boolean executeRelation(DataCleanCondition condition, Map<String, Object> input, JSONObject intputObject, JSONObject forObject, JSONObject collectionObject) {
//获取关系逻辑
String logical = condition.getLogical();
//处理子逻辑
List<DataCleanCondition> children = condition.getChildren();
boolean result = false;
switch (logical) {
case "||":
result = false;
for (DataCleanCondition child : children) {
boolean childResult = executeListCondition(child, input, intputObject, forObject, collectionObject);
if (childResult) {
return true;
}
}
break;
case "&&":
result = true;
for (DataCleanCondition child : children) {
boolean childResult = executeListCondition(child, input, intputObject, forObject, collectionObject);
if (!childResult) {
return false;
}
}
break;
}
return result;
}
public boolean outputListHandler(List<DataCleanOutput> outputList, Map<String, Object> localParamMap, Map<String, Object> outMap, JSONObject collectionObject) {
if (outputList == null || outputList.isEmpty()) {
return true;
}
for (DataCleanOutput outputField : outputList) {
outputHandler(outputField,localParamMap, outMap, collectionObject);
}
return true;
}
public boolean outputHandler(DataCleanOutput output, Map<String, Object> localParamMap, Map<String, Object> outMap, JSONObject collectionObject) {
String outputKey = output.getOutputKey();
Object result = null;
//处理自定义内容
if (StringUtils.isNotBlank(output.getOutputValue())) {
result = ExecuteUtils.getValueByKeyYiHao(output.getVariableType(), localParamMap, output.getOutputValue(), collectionObject);
}
outMap.put(outputKey, result);
// todo price修改
JSONArray channels = collectionObject.getJSONArray("channels");
JSONArray nightlyRates = channels.getJSONObject(0).getJSONArray("nightlyRates");
nightlyRates.getJSONObject(0).put("price", result);
return true;
}
}

View File

@@ -0,0 +1,123 @@
package com.fibo.ddp.strategyx.dataclean.execute.handler;
import com.alibaba.fastjson.JSONObject;
import com.fibo.ddp.common.model.strategyx.dataclean.DataCleanFilterCondition;
import com.fibo.ddp.common.utils.constant.strategyx.RuleConst;
import com.fibo.ddp.common.utils.util.runner.NumUtils;
import com.fibo.ddp.common.utils.util.strategyx.DataCleanUtils;
import com.fibo.ddp.strategyx.dataclean.execute.consts.ListOpConst;
import org.springframework.stereotype.Component;
import java.util.*;
import java.util.stream.Collectors;
@Component
public class ListOpConditionHandler {
public JSONObject conditionHandler(DataCleanFilterCondition condition, Map<String, Object> input, List<JSONObject> list) {
JSONObject result = executeListCondition(condition, input, list);
return result;
}
private JSONObject executeListCondition(DataCleanFilterCondition condition, Map<String, Object> input, List<JSONObject> list) {
Integer conditionType = condition.getConditionType();
JSONObject result = null;
switch (conditionType) {
//关系条件节点 &&和||
case RuleConst.RELATION_CONDITION:
result = executeRelation(condition, input, list);
break;
//表达式条件节点
case RuleConst.EXPRESSION_CONDITION:
result = executeExpression(condition, input, list);
break;
}
return result;
}
private JSONObject executeExpression(DataCleanFilterCondition condition, Map<String, Object> input, List<JSONObject> list) {
Object opValue = getOpValueByKey(condition.getOpKey(), condition.getOperator(), list);
return (JSONObject) opValue;
}
private JSONObject executeRelation(DataCleanFilterCondition condition, Map<String, Object> input, List<JSONObject> list) {
//获取关系逻辑
String logical = condition.getLogical();
//处理子逻辑
List<DataCleanFilterCondition> children = condition.getChildren();
switch (logical) {
case "||":
for (DataCleanFilterCondition child : children) {
if("min".equals(child.getOperator())){
JSONObject childResult = executeListCondition(child, input, list);
return childResult;
}
}
break;
case "&&":
for (DataCleanFilterCondition child : children) {
if("min".equals(child.getOperator())){
JSONObject childResult = executeListCondition(child, input, list);
return childResult;
}
}
break;
}
return null;
}
private Object getOpValueByKey(String opKey, String opType, List<JSONObject> list) {
//确定操作是根据哪个字段的
Comparator<JSONObject> comparator = Comparator.comparing(item -> {
return DataCleanUtils.getObjByKeyAndJson(item, opKey).toString();
});
Object result = null;
switch (opType) {
case ListOpConst
.OpType.COUNT:
int count = list.size();
result = count;
break;
case ListOpConst
.OpType.DISTINCT_COUNT:
int distinctCount = list.stream().collect(Collectors.collectingAndThen(Collectors.
toCollection(() -> new TreeSet<>(comparator)), ArrayList::new)).size();
result = distinctCount;
break;
case ListOpConst
.OpType.MAX:
Optional<JSONObject> maxOptional = list.stream().max(comparator);
if (maxOptional.isPresent()) {
Object max = DataCleanUtils.getObjByKeyAndJson(maxOptional.get(), opKey);
result = max;
}
break;
case ListOpConst
.OpType.MIN:
Optional<JSONObject> minOptional = list.stream().min(comparator);
if (minOptional.isPresent()) {
// Object min = DataCleanUtils.getObjByKeyAndJson(minOptional.get(), opKey);
// result = min;
result = minOptional.get();
}
break;
case ListOpConst
.OpType.AVG:
double avg = list.stream().mapToDouble(item -> {
return NumUtils.toDouble(DataCleanUtils.getObjByKeyAndJson(item, opKey));
}).average().getAsDouble();
result = avg;
break;
case ListOpConst
.OpType.LIST_ELEMENT:
result = list.stream().map(item -> {
return DataCleanUtils.getObjByKeyAndJson(item, opKey);
}).collect(Collectors.toList());
break;
case ListOpConst
.OpType.CUSTOM:
break;
}
return result;
}
}

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ddp-strategyx</artifactId>
<groupId>com.fibo.ddp</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ddp-strategyx-decision-table</artifactId>
</project>

View File

@@ -0,0 +1,98 @@
package com.fibo.ddp.strategyx.decisiontable.controller;
import com.fibo.ddp.common.model.common.ResponseEntityBuilder;
import com.fibo.ddp.common.model.common.ResponseEntityDto;
import com.fibo.ddp.common.model.common.enums.ErrorCodeEnum;
import com.fibo.ddp.common.model.common.requestParam.UpdateFolderParam;
import com.fibo.ddp.common.model.common.requestParam.UpdateStatusParam;
import com.fibo.ddp.common.model.strategyx.decisiontable.request.DecisionTablesListParam;
import com.fibo.ddp.common.model.strategyx.decisiontable.vo.DecisionTablesVo;
import com.fibo.ddp.common.service.monitor.logger.ArchivesLog;
import com.fibo.ddp.common.service.strategyx.decisiontable.DecisionTablesService;
import com.fibo.ddp.common.utils.constant.OpTypeConst;
import com.fibo.ddp.common.utils.exception.ApiException;
import com.fibo.ddp.common.utils.util.ResponseUtil;
import com.github.pagehelper.PageInfo;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
/**
* (DecisionTables)表控制层
*
* @author jgp
* @since 2021-04-12 17:54:48
*/
@RestController
@RequestMapping("v3/decisionTables")
public class DecisionTablesController {
@Resource
private DecisionTablesService decisionTablesService;
@ResponseBody
@RequestMapping(value = "getDecisionTablesInfo/{id}", method = RequestMethod.POST)
public ResponseEntityDto<DecisionTablesVo> getDecisionTablesInfo(@PathVariable Long id ) {
if (id==null){
throw new ApiException(ErrorCodeEnum.PARAMS_EXCEPTION.getCode(),ErrorCodeEnum.PARAMS_EXCEPTION.getMessage());
}
DecisionTablesVo decisionTablesVo = decisionTablesService.queryById(id);
ResponseEntityDto<DecisionTablesVo> ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(decisionTablesVo);
return ruleResponseEntityDto;
}
@ResponseBody
@RequestMapping(value = "getDecisionTablesList", method = RequestMethod.POST)
public ResponseEntityDto<DecisionTablesVo> getDecisionTablesList(@RequestBody DecisionTablesListParam listParam) {
PageInfo pageInfo = decisionTablesService.queryByEntity(listParam);
Map<String, Object> responseMap = ResponseUtil.getResponseMap(pageInfo);
ResponseEntityDto ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(responseMap);
return ruleResponseEntityDto;
}
@ResponseBody
@RequestMapping(value = "addDecisionTables", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.ADD_DECISION_TABLES)
public ResponseEntityDto<DecisionTablesVo> addDecisionTables(@RequestBody DecisionTablesVo decisionTablesVo ) {
DecisionTablesVo insert = decisionTablesService.insertDecisionTables(decisionTablesVo);
ResponseEntityDto<DecisionTablesVo> ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(insert);
return ruleResponseEntityDto;
}
@ResponseBody
@ArchivesLog(operationType = OpTypeConst.UPDATE_DECISION_TABLES)
@RequestMapping(value = "updateDecisionTables", method = RequestMethod.POST)
public ResponseEntityDto<DecisionTablesVo> updateDecisionTables(@RequestBody DecisionTablesVo decisionTablesVo ) {
DecisionTablesVo update = decisionTablesService.updateDecisionTables(decisionTablesVo);
ResponseEntityDto<DecisionTablesVo> ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(update);
return ruleResponseEntityDto;
}
@ResponseBody
@RequestMapping(value = "updateDecisionTablesStatus", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_DECISION_TABLES_STATUS)
public ResponseEntityDto updateStatus(@RequestBody UpdateStatusParam param) {
UpdateStatusParam.checkParam(param);
boolean updateResult = decisionTablesService.updateStatus(param.getList(), param.getStatus());
if (updateResult){
return ResponseEntityBuilder.buildNormalResponse(updateResult);
}else {
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.DECISION_TABLES_UPDATE_ERROR);
}
}
@ResponseBody
@RequestMapping(value = "updateDecisionTablesParent", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_DECISION_TABLES_FOLDER)
public ResponseEntityDto updateFolder(@RequestBody UpdateFolderParam param) {
UpdateFolderParam.checkNotNull(param);
boolean updateResult = decisionTablesService.updateParent(param.getIds(), param.getFolderId());
if (updateResult){
return ResponseEntityBuilder.buildNormalResponse(updateResult);
}else {
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.SERVER_ERROR);
}
}
}

View File

@@ -0,0 +1,95 @@
package com.fibo.ddp.strategyx.decisiontable.controller;
import com.baomidou.mybatisplus.extension.api.ApiController;
import com.fibo.ddp.common.model.common.ResponseEntityBuilder;
import com.fibo.ddp.common.model.common.ResponseEntityDto;
import com.fibo.ddp.common.model.common.enums.ErrorCodeEnum;
import com.fibo.ddp.common.model.common.requestParam.StatusParam;
import com.fibo.ddp.common.model.strategyx.decisiontable.vo.DecisionTablesVersionVo;
import com.fibo.ddp.common.service.monitor.logger.ArchivesLog;
import com.fibo.ddp.common.service.strategyx.decisiontable.DecisionTablesVersionService;
import com.fibo.ddp.common.utils.constant.OpTypeConst;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* (DecisionTablesVersion)表控制层
*/
@RestController
@RequestMapping("v3/decisionTables/version")
public class DecisionTablesVersionController extends ApiController {
/**
* 服务对象
*/
@Resource
private DecisionTablesVersionService versionService;
/**
* 查询指定版本下的内容
* @param versionId
* @return
*/
@PostMapping("/getVersionInfo/{versionId}")
public ResponseEntityDto getVersionInfo(@PathVariable Long versionId) {
DecisionTablesVersionVo version =versionService.queryById(versionId);
return ResponseEntityBuilder.buildNormalResponse(version);
}
/**
* 新增一个版本
* @param version
* @return
*/
@PostMapping("/addVersion")
@ArchivesLog(operationType = OpTypeConst.ADD_DECISION_TABLES_VERSION)
public ResponseEntityDto addVersion(@RequestBody DecisionTablesVersionVo version){
boolean b = versionService.addVersion(version);
if (!b){
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.PARAMS_EXCEPTION);
}
List< DecisionTablesVersionVo> ruleVersionList = versionService.queryVersionListByDecisionTablesId(version.getDecisionTablesId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
/**
* 复制版本
* @param version
* @return
*/
@PostMapping("/copyVersion")
@ArchivesLog(operationType = OpTypeConst.COPY_DECISION_TABLES_VERSION)
public ResponseEntityDto copyVersion(@RequestBody DecisionTablesVersionVo version){
boolean b = versionService.copyVersion(version);
List< DecisionTablesVersionVo> ruleVersionList = versionService.queryVersionListByDecisionTablesId(version.getDecisionTablesId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
/**
* 修改版本
* @param version
* @return
*/
@PostMapping("/updateVersion")
@ArchivesLog(operationType = OpTypeConst.UPDATE_DECISION_TABLES_VERSION)
public ResponseEntityDto updateVersion(@RequestBody DecisionTablesVersionVo version){
boolean b = versionService.updateVersion(version);
List<DecisionTablesVersionVo> ruleVersionList = versionService.queryVersionListByDecisionTablesId(version.getDecisionTablesId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
/**
* 修改状态
* @param statusParam
* @return
*/
@RequestMapping(value = "/updateVersionStatus", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_DECISION_TABLES_VERSION_STATUS)
public ResponseEntityDto<Object> updateStatus(@RequestBody StatusParam statusParam) {
versionService.updateStatus(statusParam);
List<DecisionTablesVersionVo> ruleVersionList = versionService.queryVersionListByDecisionTablesId(statusParam.getStrategyId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
}

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ddp-strategyx</artifactId>
<groupId>com.fibo.ddp</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ddp-strategyx-decision-tree</artifactId>
</project>

View File

@@ -0,0 +1,102 @@
package com.fibo.ddp.strategyx.decisiontree.controller;
import com.baomidou.mybatisplus.extension.api.ApiController;
import com.fibo.ddp.common.model.common.ResponseEntityBuilder;
import com.fibo.ddp.common.model.common.ResponseEntityDto;
import com.fibo.ddp.common.model.common.enums.ErrorCodeEnum;
import com.fibo.ddp.common.model.common.requestParam.QueryListParam;
import com.fibo.ddp.common.model.common.requestParam.UpdateFolderParam;
import com.fibo.ddp.common.model.common.requestParam.UpdateStatusParam;
import com.fibo.ddp.common.model.strategyx.decisiontable.vo.DecisionTablesVo;
import com.fibo.ddp.common.model.strategyx.decisiontree.vo.DecisionTreeVo;
import com.fibo.ddp.common.service.monitor.logger.ArchivesLog;
import com.fibo.ddp.common.service.strategyx.decisiontree.DecisionTreeService;
import com.fibo.ddp.common.utils.constant.OpTypeConst;
import com.fibo.ddp.common.utils.exception.ApiException;
import com.fibo.ddp.common.utils.util.ResponseUtil;
import com.github.pagehelper.PageInfo;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
/**
* (DecisionTree)表控制层
*/
@RestController
@RequestMapping("v3/decisionTree")
public class DecisionTreeController extends ApiController {
/**
* 服务对象
*/
@Resource
private DecisionTreeService decisionTreeService;
@ResponseBody
@RequestMapping(value = "getDecisionTreeInfo/{id}", method = RequestMethod.POST)
public ResponseEntityDto<DecisionTreeVo> getDecisionTreeInfo(@PathVariable Long id) {
if (id == null) {
throw new ApiException(ErrorCodeEnum.PARAMS_EXCEPTION.getCode(), ErrorCodeEnum.PARAMS_EXCEPTION.getMessage());
}
DecisionTreeVo decisionTablesVo = decisionTreeService.queryById(id);
ResponseEntityDto<DecisionTreeVo> ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(decisionTablesVo);
return ruleResponseEntityDto;
}
@ResponseBody
@RequestMapping(value = "getDecisionTreeList", method = RequestMethod.POST)
public ResponseEntityDto<DecisionTablesVo> getDecisionTreeList(@RequestBody QueryListParam<DecisionTreeVo> listParam) {
PageInfo pageInfo = decisionTreeService.queryByEntity(listParam);
Map<String, Object> responseMap = ResponseUtil.getResponseMap(pageInfo);
ResponseEntityDto ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(responseMap);
return ruleResponseEntityDto;
}
@ResponseBody
@RequestMapping(value = "addDecisionTree", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.ADD_DECISION_TREE)
public ResponseEntityDto<DecisionTreeVo> addDecisionTree(@RequestBody DecisionTreeVo decisionTreeVo) {
DecisionTreeVo insert = decisionTreeService.insertDecisionTree(decisionTreeVo);
ResponseEntityDto<DecisionTreeVo> ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(insert);
return ruleResponseEntityDto;
}
@ResponseBody
@RequestMapping(value = "updateDecisionTree", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_DECISION_TREE)
public ResponseEntityDto<DecisionTreeVo> updateDecisionTree(@RequestBody DecisionTreeVo decisionTreeVo) {
DecisionTreeVo update = decisionTreeService.updateDecisionTree(decisionTreeVo);
ResponseEntityDto<DecisionTreeVo> ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(update);
return ruleResponseEntityDto;
}
@ResponseBody
@RequestMapping(value = "updateDecisionTreeStatus", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_DECISION_TREE_STATUS)
public ResponseEntityDto updateStatus(@RequestBody UpdateStatusParam param) {
UpdateStatusParam.checkParam(param);
boolean updateResult = decisionTreeService.updateStatus(param.getList(), param.getStatus());
if (updateResult) {
return ResponseEntityBuilder.buildNormalResponse(updateResult);
} else {
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.DECISION_TREE_UPDATE_ERROR);
}
}
@ResponseBody
@RequestMapping(value = "updateDecisionTreeFolder", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_DECISION_TREE_FOLDER)
public ResponseEntityDto updateFolder(@RequestBody UpdateFolderParam param) {
UpdateFolderParam.checkNotNull(param);
boolean updateResult = decisionTreeService.updateFolder(param.getIds(), param.getFolderId());
if (updateResult) {
return ResponseEntityBuilder.buildNormalResponse(updateResult);
} else {
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.SERVER_ERROR);
}
}
}

View File

@@ -0,0 +1,100 @@
package com.fibo.ddp.strategyx.decisiontree.controller;
import com.baomidou.mybatisplus.extension.api.ApiController;
import com.fibo.ddp.common.model.common.ResponseEntityBuilder;
import com.fibo.ddp.common.model.common.ResponseEntityDto;
import com.fibo.ddp.common.model.common.enums.ErrorCodeEnum;
import com.fibo.ddp.common.model.common.requestParam.StatusParam;
import com.fibo.ddp.common.model.strategyx.decisiontree.vo.DecisionTreeVersionVo;
import com.fibo.ddp.common.service.monitor.logger.ArchivesLog;
import com.fibo.ddp.common.service.strategyx.decisiontree.DecisionTreeVersionService;
import com.fibo.ddp.common.utils.constant.OpTypeConst;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* (DecisionTreeVersion)表控制层
*/
@RestController
@RequestMapping("/v3/decisionTree/version")
public class DecisionTreeVersionController extends ApiController {
/**
* 服务对象
*/
@Resource
private DecisionTreeVersionService versionService;
/**
* 查询指定版本下的内容
*
* @param versionId
* @return
*/
@PostMapping("/getVersionInfo/{versionId}")
public ResponseEntityDto getVersionInfo(@PathVariable Long versionId) {
DecisionTreeVersionVo version = versionService.queryById(versionId);
return ResponseEntityBuilder.buildNormalResponse(version);
}
/**
* 新增一个版本
*
* @param version
* @return
*/
@PostMapping("/addVersion")
@ArchivesLog(operationType = OpTypeConst.ADD_DECISION_TREE_VERSION)
public ResponseEntityDto addVersion(@RequestBody DecisionTreeVersionVo version) {
boolean b = versionService.addVersion(version);
if (!b) {
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.PARAMS_EXCEPTION);
}
List<DecisionTreeVersionVo> ruleVersionList = versionService.queryVersionListByDecisionTreeId(version.getDecisionTreeId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
/**
* 复制版本
*
* @param version
* @return
*/
@PostMapping("/copyVersion")
@ArchivesLog(operationType = OpTypeConst.COPY_DECISION_TREE_VERSION)
public ResponseEntityDto copyVersion(@RequestBody DecisionTreeVersionVo version) {
boolean b = versionService.copyVersion(version);
List<DecisionTreeVersionVo> ruleVersionList = versionService.queryVersionListByDecisionTreeId(version.getDecisionTreeId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
/**
* 修改版本
*
* @param version
* @return
*/
@PostMapping("/updateVersion")
@ArchivesLog(operationType = OpTypeConst.UPDATE_DECISION_TREE_VERSION)
public ResponseEntityDto updateVersion(@RequestBody DecisionTreeVersionVo version) {
boolean b = versionService.updateVersion(version);
List<DecisionTreeVersionVo> ruleVersionList = versionService.queryVersionListByDecisionTreeId(version.getDecisionTreeId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
/**
* 修改状态
*
* @param statusParam
* @return
*/
@RequestMapping(value = "/updateVersionStatus", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_DECISION_TREE_VERSION_STATUS)
public ResponseEntityDto<Object> updateStatus(@RequestBody StatusParam statusParam) {
versionService.updateStatus(statusParam);
List<DecisionTreeVersionVo> ruleVersionList = versionService.queryVersionListByDecisionTreeId(statusParam.getStrategyId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
}

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ddp-strategyx</artifactId>
<groupId>com.fibo.ddp</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ddp-strategyx-guide-rule</artifactId>
</project>

View File

@@ -0,0 +1,251 @@
package com.fibo.ddp.strategyx.guiderule.controller;
import com.fibo.ddp.common.model.common.ResponseEntityBuilder;
import com.fibo.ddp.common.model.common.ResponseEntityDto;
import com.fibo.ddp.common.model.common.enums.ErrorCodeEnum;
import com.fibo.ddp.common.model.common.requestParam.UpdateFolderParam;
import com.fibo.ddp.common.model.common.requestParam.UpdateStatusParam;
import com.fibo.ddp.common.model.strategyx.guiderule.request.RuleListParamV2;
import com.fibo.ddp.common.model.strategyx.guiderule.vo.RuleVo;
import com.fibo.ddp.common.service.monitor.logger.ArchivesLog;
import com.fibo.ddp.common.service.strategyx.guiderule.RuleService;
import com.fibo.ddp.common.utils.constant.OpTypeConst;
import com.fibo.ddp.common.utils.exception.ApiException;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
@Controller("ruleControllerV3")
@RequestMapping("v3/rule")
public class RuleInfoController {
@Autowired
private RuleService ruleService;
/**
* @api {POST} /v3/rule/getRuleInfo/{userId} 3.19. V3获取rule信息
* @apiGroup knowledge
* @apiVersion 2.0.0
* @apiParam {Long} userId : 规则id
* @apiSuccess {String} status 状态1成功0失败
* @apiParamExample {json} 请求示例:
* {}
* @apiSuccessExample {json} 成功返回数据示例:
* {"status":"1","error":"00000000","msg":null,"data":{"userId":666,"name":"2021_4_6测试接口","versionCode":"test2021_4_6第二次输入","description":"接口测试","priority":0,"parentId":0,"author":135,"userId":135,"organId":46,"engineId":null,"status":1,"type":1,"isNon":null,"content":"test","created":"2021-04-06T08:38:17.000+00:00","updated":"2021-04-07T05:12:52.000+00:00","ruleType":0,"ruleAudit":2,"score":0,"lastLogical":"","ruleConditionVo":{"userId":14,"logical":"&&","fieldId":null,"operator":null,"fieldValue":null,"ruleId":666,"parentId":0,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[{"userId":15,"logical":null,"fieldId":null,"operator":">","fieldValue":"1000","ruleId":666,"parentId":14,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null},{"userId":16,"logical":null,"fieldId":null,"operator":"<","fieldValue":"10000","ruleId":666,"parentId":14,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null}],"tempParentId":null},"ruleContentInfoList":[{"userId":16,"fieldId":10000,"fieldValue":"test01","ruleId":666},{"userId":17,"fieldId":10000,"fieldValue":"test02","ruleId":666}]}}
*/
@ResponseBody
@RequestMapping(value = "getRuleInfo/{id}", method = RequestMethod.POST)
public ResponseEntityDto<RuleVo> getRuleInfo(@PathVariable Long id) {
if (id == null) {
throw new ApiException(ErrorCodeEnum.PARAMS_EXCEPTION.getCode(), ErrorCodeEnum.PARAMS_EXCEPTION.getMessage());
}
RuleVo ruleVo = ruleService.queryById(id,2);
ResponseEntityDto<RuleVo> ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(ruleVo);
return ruleResponseEntityDto;
}
/**
* @api {POST} /v3/rule/getRuleList 3.20. V3规则 列表 list
* @apiGroup knowledge
* @apiVersion 2.0.0
* @apiParam {Integer} [pageNum] 第几页有默认值1
* @apiParam {Integer} [pageSize] 每页的数量有默认值10
* @apiParam {object} [ruleInfo] 查询条件rule对象不加查询条件则返回全部以下参数未此对象的字段
* @apiParam (ruleInfo) {Long} [userId] rule的id
* @apiParam (ruleInfo) {String} [name] rule的名字
* @apiParam (ruleInfo) {String} [versionCode] rule的代码
* @apiParam (ruleInfo) {String} [description] rule的描述信息
* @apiParam (ruleInfo) {Integer} [priority] 优先级
* @apiParam (ruleInfo) {String} [parentId] 父节点id文件夹id
* @apiParam (ruleInfo) {Integer} [priority] 优先级
* @apiParam (ruleInfo) {Long} [author] 用户id
* @apiParam (ruleInfo) {Long} [userId] 用户id
* @apiParam (ruleInfo) {Long} [organId] 组织id
* @apiParam (ruleInfo) {Integer} [engineId] 引擎id原表内容未用到
* @apiParam (ruleInfo) {Integer} [status] 状态id0 :停用 1 : 启用,-1删除
* @apiParam (ruleInfo) {Integer} [type] 规则类型0 : 系统的规则 1组织的规则 2 引擎的规则)
* @apiParam (ruleInfo) {Integer} [isNon] 逻辑关系“非”01
* @apiParam (ruleInfo) {String} [content] 规则执行内容
* @apiParam (ruleInfo) {Integer} [ruleType] 规则类型0硬性拒绝规则1加减分规则
* @apiParam (ruleInfo) {Integer} [ruleAudit] 规则审核2 终止5 继续)
* @apiParam (ruleInfo) {Integer} [score] 规则得分
* @apiParam (ruleInfo) {String} [lastLogical] 最后逻辑(原表内容未用到)
* @apiSuccess {String} status 状态: 1成功, 0失败
* @apiParamExample {json} 请求示例:
* {"pageNum":1,"pageSize":10,"ruleInfo":{"userId":666,"name":"2021_4_6测试接口","versionCode":"test2021_4_6第二次输入","description":"接口测试","priority":0,"parentId":0,"author":135,"userId":135,"organId":46,"engineId":null,"status":1,"type":1,"isNon":null,"content":"test","created":"2021-04-06T08:38:17.000+00:00","updated":"2021-04-06T09:07:27.000+00:00","ruleType":0,"ruleAudit":2,"score":0,"lastLogical":""}}
* @apiSuccessExample {json} 成功返回数据示例:
* {"status":"1","error":"00000000","msg":null,"data":{"userId":666,"name":"2021_4_6测试接口","versionCode":"test2021_4_6第二次输入","description":"接口测试","priority":0,"parentId":0,"author":135,"userId":135,"organId":46,"engineId":null,"status":1,"type":1,"isNon":null,"content":"test","created":"2021-04-06T08:38:17.000+00:00","updated":"2021-04-07T05:12:52.000+00:00","ruleType":0,"ruleAudit":2,"score":0,"lastLogical":"","ruleConditionVo":{"userId":14,"logical":"&&","fieldId":null,"operator":null,"fieldValue":null,"ruleId":666,"parentId":0,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[{"userId":15,"logical":null,"fieldId":null,"operator":">","fieldValue":"1000","ruleId":666,"parentId":14,"conditionType":0,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null},{"userId":16,"logical":null,"fieldId":null,"operator":"<","fieldValue":"10000","ruleId":666,"parentId":14,"conditionType":0,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null},{"userId":14,"logical":"&&","fieldId":null,"operator":null,"fieldValue":null,"ruleId":666,"parentId":0,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[{"userId":14,"logical":"&&","fieldId":null,"operator":null,"fieldValue":null,"ruleId":666,"parentId":0,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[{"userId":15,"logical":null,"fieldId":null,"operator":">","fieldValue":"1000","ruleId":666,"parentId":14,"conditionType":0,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null},{"userId":16,"logical":null,"fieldId":null,"operator":"<","fieldValue":"10000","ruleId":666,"parentId":14,"conditionType":0,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null}],"tempParentId":null},{"userId":15,"logical":null,"fieldId":null,"operator":">","fieldValue":"1000","ruleId":666,"parentId":14,"conditionType":0,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null},{"userId":16,"logical":null,"fieldId":null,"operator":"<","fieldValue":"10000","ruleId":666,"parentId":14,"conditionType":0,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null}],"tempParentId":null},{"userId":14,"logical":"&&","fieldId":null,"operator":null,"fieldValue":null,"ruleId":666,"parentId":0,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null}],"tempParentId":null},"ruleContentInfoList":[{"userId":16,"fieldId":10000,"fieldValue":"test01","ruleId":666},{"userId":17,"fieldId":10000,"fieldValue":"test02","ruleId":666}]}}
*/
@ResponseBody
@RequestMapping(value = "getRuleList", method = RequestMethod.POST)
public ResponseEntityDto getRuleList(@RequestBody RuleListParamV2 ruleListParam) {
PageInfo pageInfo = ruleService.queryByEntity(ruleListParam);
HashMap<String, Object> responseMap = new HashMap<>();
responseMap.put("pageInfo", pageInfo);
responseMap.put("klist", pageInfo.getList());
pageInfo.setList(null);
ResponseEntityDto ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(responseMap);
return ruleResponseEntityDto;
}
/**
* @api {POST} /v3/rule/addRule 3.21. V3添加规则
* @apiGroup knowledge
* @apiVersion 2.0.0
* @apiParam {String} name rule的名字
* @apiParam {String} versionCode rule的代码
* @apiParam {String} description rule的描述信息
* @apiParam {Integer} priority 优先级
* @apiParam {String} parentId 父节点id文件夹id
* @apiParam {Integer} [status] 状态id0 :停用 1 : 启用,-1删除默认启用
* @apiParam {Integer} [type] 规则类型0 : 系统的规则 1组织的规则 2 引擎的规则)默认组织规则
* @apiParam {Integer} [isNon] 逻辑关系“非”01
* @apiParam {String} [content] 规则执行内容
* @apiParam {Integer} ruleType 规则类型0硬性拒绝规则1加减分规则
* @apiParam {Integer} [ruleAudit] 规则审核2 终止5 继续根据ruleType推定拒绝规则为终止
* @apiParam {Integer} [score] 规则得分
* @apiParam {String} [lastLogical] 最后逻辑(原表内容未用到)
* @apiParam {object} [ruleConditionVo] 规则对应的一颗规则条件的树形对象
* @apiParam (ruleConditionVo) {String} logical 逻辑符号&&、||(仅关系表达式)
* @apiParam (ruleConditionVo) {Long} fieldId 字段id仅条件表达式
* @apiParam (ruleConditionVo) {String} operator 操作符(仅条件表达式)
* @apiParam (ruleConditionVo) {String} fieldValue 字段值(仅条件表达式)
* @apiParam (ruleConditionVo) {Integer} conditionType 条件类型1.关系表达式2.条件表达式
* @apiParam (ruleConditionVo) {List} [children] 子对象列表,和所属对象相同
* @apiParam {List} [ruleContentInfoList] 同一规则下的content对象list
* @apiParam (ruleContentInfoList) {Long} [fieldId] 字段id
* @apiParam (ruleContentInfoList) {String} [fieldValue] 字段值
* @apiSuccess {String} status 状态: 1成功, 0失败
* @apiParamExample {json} 请求示例:
* {"name":"2021_4_6测试接口02","versionCode":"test2021_4_7","description":"接口测试","priority":0,"parentId":0,"author":135,"userId":135,"organId":46,"status":1,"type":1,"isNon":null,"content":"test","ruleType":0,"ruleAudit":2,"score":0,"lastLogical":"","ruleConditionVo":{"logical":"&&","conditionType":"1","children":[{"fieldId":"0","operator":">","fieldValue":"10","conditionType":"1"},{"fieldId":"0","operator":"<","fieldValue":"100","conditionType":"1"}]},"ruleContentInfoList":[{"fieldId":"10000","fieldValue":"test1"},{"fieldId":"10000","fieldValue":"test2"}]}
* @apiSuccessExample {json} 成功返回数据示例:
* {"status":"1","error":"00000000","msg":null,"data":{"userId":668,"name":"2021_4_6测试接口02","versionCode":"test2021_4_7","description":"接口测试","priority":0,"parentId":0,"author":135,"userId":135,"organId":46,"engineId":null,"status":1,"type":1,"isNon":null,"content":"test","created":null,"updated":null,"ruleType":0,"ruleAudit":2,"score":0,"lastLogical":"","ruleConditionVo":{"userId":17,"logical":"&&","fieldId":null,"operator":null,"fieldValue":null,"ruleId":668,"parentId":0,"conditionType":1,"createTime":"2021-04-07T08:09:17.000+00:00","updateTime":null,"insertTempId":null,"children":[{"userId":18,"logical":null,"fieldId":null,"operator":">","fieldValue":"10","ruleId":668,"parentId":17,"conditionType":1,"createTime":"2021-04-07T08:09:17.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null},{"userId":19,"logical":null,"fieldId":null,"operator":"<","fieldValue":"100","ruleId":668,"parentId":17,"conditionType":1,"createTime":"2021-04-07T08:09:17.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null}],"tempParentId":null},"ruleContentInfoList":[{"userId":18,"fieldId":10000,"fieldValue":"test1","ruleId":668},{"userId":19,"fieldId":10000,"fieldValue":"test2","ruleId":668}]}}
*/
@ResponseBody
@RequestMapping(value = "addRule", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.SAVE_RULE)
public ResponseEntityDto<RuleVo> addRule(@RequestBody RuleVo ruleVo) {
RuleVo insert = ruleService.insertRuleInfo(ruleVo);
ResponseEntityDto<RuleVo> ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(insert);
return ruleResponseEntityDto;
}
/**
* @api {POST} /v3/rule/updateRule 3.22. V3修改规则
* @apiGroup knowledge
* @apiVersion 2.0.0
* @apiParam {Long} userId rule的id
* @apiParam {String} name rule的名字
* @apiParam {String} versionCode rule的代码
* @apiParam {String} description rule的描述信息
* @apiParam {Integer} priority 优先级
* @apiParam {String} parentId 父节点id文件夹id
* @apiParam {Long} author 用户id
* @apiParam {Long} userId 用户id
* @apiParam {Long} organId 组织id
* @apiParam {Integer} [engineId] 引擎id原表内容未用到
* @apiParam {Integer} status 状态id0 :停用 1 : 启用,-1删除
* @apiParam {Integer} type 规则类型0 : 系统的规则 1组织的规则 2 引擎的规则)
* @apiParam {Integer} [isNon] 逻辑关系“非”01
* @apiParam {String} [content] 规则执行内容
* @apiParam {Integer} ruleType 规则类型0硬性拒绝规则1加减分规则
* @apiParam {Integer} [ruleAudit] 规则审核2 终止5 继续根据ruleType推定拒绝规则为终止
* @apiParam {Integer} [score] 规则得分
* @apiParam {String} [lastLogical] 最后逻辑(原表内容未用到)
* @apiParam {object} [ruleConditionVo] 规则对应的一颗规则条件的树形对象
* @apiParam (ruleConditionVo) {Long} [userId] 条件id
* @apiParam (ruleConditionVo) {String} logical 逻辑符号&&、||(仅关系表达式)
* @apiParam (ruleConditionVo) {Long} fieldId 字段id仅条件表达式
* @apiParam (ruleConditionVo) {String} operator 操作符(仅条件表达式)
* @apiParam (ruleConditionVo) {String} fieldValue 字段值(仅条件表达式)
* @apiParam (ruleConditionVo) {Long} [ruleId] 规则id
* @apiParam (ruleConditionVo) {Long} [parentId] 条件父节点id
* @apiParam (ruleConditionVo) {Integer} conditionType 条件类型1.关系表达式2.条件表达式
* @apiParam (ruleConditionVo) {List} [children] 子对象列表,和所属对象相同
* @apiParam {List} [ruleContentInfoList] 同一规则下的content对象list
* @apiParam (ruleContentInfoList) {Long} [userId] content主键id
* @apiParam (ruleContentInfoList) {Long} fieldId 字段id
* @apiParam (ruleContentInfoList) {String} fieldValue 字段值
* @apiParam (ruleContentInfoList) {Long} [ruleId] 规则id
* @apiSuccess {String} status 状态: 1成功, 0失败
* @apiParamExample {json} 请求示例:
* {"userId":667,"name":"2021_4_7测试接口","versionCode":"test2021_4_7第二次输入","description":"接口测试","priority":0,"parentId":0,"author":135,"userId":135,"organId":46,"engineId":null,"status":1,"type":1,"isNon":null,"content":"test","created":"2021-04-06T08:38:17.000+00:00","updated":null,"ruleType":0,"ruleAudit":2,"score":0,"lastLogical":"","ruleConditionVo":{"userId":5,"logical":"&&","fieldId":null,"operator":null,"fieldValue":null,"ruleId":666,"parentId":0,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[{"userId":6,"logical":null,"fieldId":0,"operator":">","fieldValue":"1000","ruleId":666,"parentId":5,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null},{"userId":7,"logical":null,"fieldId":0,"operator":"<","fieldValue":"10000","ruleId":666,"parentId":5,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null}],"tempParentId":null},"ruleContentInfoList":[{"userId":10,"fieldId":"10000","fieldValue":"test01","ruleId":666},{"userId":11,"fieldId":"10000","fieldValue":"test02","ruleId":666}]}
* @apiSuccessExample {json} 成功返回数据示例:
* {"status":"1","error":"00000000","msg":null,"data":{"userId":667,"name":"2021_4_7测试接口","versionCode":"test2021_4_7第二次输入","description":"接口测试","priority":0,"parentId":0,"author":135,"userId":135,"organId":46,"engineId":null,"status":1,"type":1,"isNon":null,"content":"test","created":"2021-04-06T08:38:17.000+00:00","updated":null,"ruleType":0,"ruleAudit":2,"score":0,"lastLogical":"","ruleConditionVo":{"userId":20,"logical":"&&","fieldId":null,"operator":null,"fieldValue":null,"ruleId":667,"parentId":0,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[{"userId":21,"logical":null,"fieldId":null,"operator":">","fieldValue":"1000","ruleId":667,"parentId":20,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null},{"userId":22,"logical":null,"fieldId":null,"operator":"<","fieldValue":"10000","ruleId":667,"parentId":20,"conditionType":1,"createTime":"2021-04-06T08:38:26.000+00:00","updateTime":null,"insertTempId":null,"children":[],"tempParentId":null}],"tempParentId":null},"ruleContentInfoList":[{"userId":20,"fieldId":10000,"fieldValue":"test01","ruleId":667},{"userId":21,"fieldId":10000,"fieldValue":"test02","ruleId":667}]}}
*/
@ResponseBody
@RequestMapping(value = "updateRule", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_RULE)
public ResponseEntityDto<RuleVo> updateRule(@RequestBody RuleVo rule) {
RuleVo update = ruleService.updateRuleInfo(rule);
ResponseEntityDto<RuleVo> ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(update);
return ruleResponseEntityDto;
}
/**
* @api {POST} /v3/rule/updateRuleStatus 3.23. V3修改状态
* @apiGroup knowledge
* @apiVersion 2.0.0
* @apiParam {LongArray} ids 规则id数组
* @apiParam {Integer} status 目标状态0未启用1启用2删除
* @apiSuccess {String} status 状态1成功0失败
* @apiParamExample {json} 请求示例:
* {"ids":[666,667],"status":"1"}
* @apiSuccessExample {json} 成功返回数据示例:
* {"status":"1","error":"00000000","msg":null,"data":true}
*/
@ResponseBody
@RequestMapping(value = "updateRuleStatus", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_RULE_STATUS)
public ResponseEntityDto updateStatus(@RequestBody UpdateStatusParam param) {
UpdateStatusParam.checkParam(param);
boolean updateResult = ruleService.updateStatus(param.getList(), param.getStatus());
if (updateResult) {
return ResponseEntityBuilder.buildNormalResponse(updateResult);
} else {
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.SERVER_ERROR);
}
}
@ResponseBody
@RequestMapping(value = "updateRuleParent", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_RULE_STATUS)
public ResponseEntityDto updateParent(@RequestBody UpdateFolderParam param) {
UpdateFolderParam.checkNotNull(param);
boolean updateResult = ruleService.updateParent(param.getIds(), param.getFolderId());
if (updateResult) {
return ResponseEntityBuilder.buildNormalResponse(updateResult);
} else {
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.SERVER_ERROR);
}
}
// 查询简单规则
@ResponseBody
@RequestMapping(value = "getSimpleRule/{id}", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.SELECT_SAMPLE_RULE)
public ResponseEntityDto<RuleVo> getSimpleRule(@PathVariable Long id) {
if (id == null) {
throw new ApiException(ErrorCodeEnum.PARAMS_EXCEPTION.getCode(), ErrorCodeEnum.PARAMS_EXCEPTION.getMessage());
}
RuleVo ruleVo = ruleService.queryById(id,1);
ResponseEntityDto<RuleVo> ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(ruleVo);
return ruleResponseEntityDto;
}
@ResponseBody
@RequestMapping(value = "getScriptRule/{id}", method = RequestMethod.POST)
public ResponseEntityDto<RuleVo> getScriptRule(@PathVariable Long id) {
if (id == null) {
throw new ApiException(ErrorCodeEnum.PARAMS_EXCEPTION.getCode(), ErrorCodeEnum.PARAMS_EXCEPTION.getMessage());
}
RuleVo ruleVo = ruleService.queryById(id,3);
ResponseEntityDto<RuleVo> ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(ruleVo);
return ruleResponseEntityDto;
}
}

View File

@@ -0,0 +1,90 @@
package com.fibo.ddp.strategyx.guiderule.controller;
import com.fibo.ddp.common.model.common.ResponseEntityBuilder;
import com.fibo.ddp.common.model.common.ResponseEntityDto;
import com.fibo.ddp.common.model.common.enums.ErrorCodeEnum;
import com.fibo.ddp.common.model.common.requestParam.StatusParam;
import com.fibo.ddp.common.model.strategyx.guiderule.vo.RuleVersionVo;
import com.fibo.ddp.common.service.monitor.logger.ArchivesLog;
import com.fibo.ddp.common.service.strategyx.guiderule.RuleVersionService;
import com.fibo.ddp.common.utils.constant.OpTypeConst;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Controller
@ResponseBody
@RequestMapping("/v3/ruleVersion")
public class RuleVersionController {
@Autowired
private RuleVersionService versionService;
/**
* 查询指定版本下的内容
* @param versionId
* @return
*/
@PostMapping("/getRuleVersionInfo/{versionId}")
public ResponseEntityDto getRuleVersionInfo(@PathVariable Long versionId) {
RuleVersionVo version =versionService.queryById(versionId);
return ResponseEntityBuilder.buildNormalResponse(version);
}
/**
* 新增一个版本
* @param version
* @return
*/
@PostMapping("/addRuleVersion")
@ArchivesLog(operationType = OpTypeConst.SAVE_RULE_VERSION)
public ResponseEntityDto addRuleVersion(@RequestBody RuleVersionVo version){
boolean b = versionService.addVersion(version);
if (!b){
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.PARAMS_EXCEPTION);
}
List< RuleVersionVo> ruleVersionList = versionService.queryVersionListByRuleId(version.getRuleId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
/**
* 复制版本
* @param version
* @return
*/
@PostMapping("/copyRuleVersion")
@ArchivesLog(operationType = OpTypeConst.COPY_RULE_VERSION)
public ResponseEntityDto copyRuleVersion(@RequestBody RuleVersionVo version){
boolean b = versionService.copyVersion(version);
List< RuleVersionVo> ruleVersionList = versionService.queryVersionListByRuleId(version.getRuleId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
/**
* 修改版本
* @param version
* @return
*/
@PostMapping("/updateRuleVersion")
@ArchivesLog(operationType = OpTypeConst.UPDATE_RULE_VERSION)
public ResponseEntityDto updateRuleVersion(@RequestBody RuleVersionVo version){
boolean b = versionService.updateVersion(version);
List<RuleVersionVo> ruleVersionList = versionService.queryVersionListByRuleId(version.getRuleId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
/**
* 修改状态
* @param statusParam
* @return
*/
@RequestMapping(value = "/updateRuleVersionStatus", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_RULE_VERSION_STATUS)
public ResponseEntityDto<Object> updateStatus(@RequestBody StatusParam statusParam) {
versionService.updateStatus(statusParam);
List<RuleVersionVo> ruleVersionList = versionService.queryVersionListByRuleId(statusParam.getStrategyId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
}

View File

@@ -0,0 +1,47 @@
package com.fibo.ddp.strategyx.guiderule.controller.approval;
import com.fibo.ddp.common.model.approval.ApprovalConfig;
import com.fibo.ddp.common.model.common.ResponseEntityBuilder;
import com.fibo.ddp.common.model.common.ResponseEntityDto;
import com.fibo.ddp.common.model.common.enums.ErrorCodeEnum;
import com.fibo.ddp.common.model.common.requestParam.QueryListParam;
import com.fibo.ddp.common.model.common.requestParam.StatusParam;
import com.fibo.ddp.common.service.approval.ApprovalConfigService;
import com.github.pagehelper.PageInfo;
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;
import javax.annotation.Resource;
/**
* (ApprovalConfig)表控制层
*/
@RestController
@RequestMapping("/v3/approvalConfig")
public class ApprovalConfigController {
/**
* 服务对象
*/
@Resource
private ApprovalConfigService approvalConfigService;
@PostMapping("/getApprovalList")
public ResponseEntityDto getApprovalList(@RequestBody QueryListParam<ApprovalConfig> param) {
PageInfo<ApprovalConfig> pageInfo = approvalConfigService.queryList(param);
return ResponseEntityBuilder.buildNormalResponse(pageInfo);
}
@PostMapping("/updateApprovalStatus")
public ResponseEntityDto updateApprovalStatus(@RequestBody StatusParam<ApprovalConfig> statusParam) {
boolean result = approvalConfigService.updateApprovalStatus(statusParam);
if (result){
return ResponseEntityBuilder.buildNormalResponse();
}
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.PARAMS_EXCEPTION);
}
}

View File

@@ -0,0 +1,50 @@
package com.fibo.ddp.strategyx.guiderule.controller.approval;
import com.fibo.ddp.common.model.approval.Approval;
import com.fibo.ddp.common.model.common.ResponseEntityBuilder;
import com.fibo.ddp.common.model.common.ResponseEntityDto;
import com.fibo.ddp.common.model.common.enums.ErrorCodeEnum;
import com.fibo.ddp.common.model.common.requestParam.QueryListParam;
import com.fibo.ddp.common.model.common.requestParam.StatusParam;
import com.fibo.ddp.common.service.approval.ApprovalService;
import com.github.pagehelper.PageInfo;
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;
import javax.annotation.Resource;
@RestController
@RequestMapping("/v3/approval")
public class ApprovalController {
/**
* 服务对象
*/
@Resource
private ApprovalService approvalService;
@PostMapping("/getApprovalList")
public ResponseEntityDto getApprovalList(@RequestBody QueryListParam<Approval> param) {
PageInfo<Approval> pageInfo = approvalService.queryList(param);
return ResponseEntityBuilder.buildNormalResponse(pageInfo);
}
@PostMapping("/updateApplyStatus")
public ResponseEntityDto updateApplyStatus(@RequestBody StatusParam<Approval> statusParam) {
boolean result = approvalService.updateApplyStatus(statusParam);
if (result){
return ResponseEntityBuilder.buildNormalResponse();
}
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.PARAMS_EXCEPTION);
}
@PostMapping("/updateStatus")
public ResponseEntityDto updateStatus(@RequestBody StatusParam statusParam) {
boolean result = approvalService.updateStatus(statusParam);
if (result){
return ResponseEntityBuilder.buildNormalResponse();
}
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.PARAMS_EXCEPTION);
}
}

View File

@@ -0,0 +1,89 @@
package com.fibo.ddp.strategyx.guiderule.controller.cignacmb;
import com.fibo.ddp.common.model.cignacmb.request.EventLogDetailParam;
import com.fibo.ddp.common.model.cignacmb.request.EventLogParam;
import com.fibo.ddp.common.model.cignacmb.request.RuleLogParam;
import com.fibo.ddp.common.model.cignacmb.response.EventLogDetailResponse;
import com.fibo.ddp.common.model.cignacmb.response.EventLogResponse;
import com.fibo.ddp.common.model.cignacmb.response.RuleLogResponse;
import com.fibo.ddp.common.model.common.ResponseEntityBuilder;
import com.fibo.ddp.common.model.common.ResponseEntityDto;
import com.fibo.ddp.common.model.common.enums.ErrorCodeEnum;
import com.fibo.ddp.common.service.cignacmb.BusinessEventLogService;
import com.fibo.ddp.common.service.cignacmb.BusinessRuleLogService;
import com.github.pagehelper.PageInfo;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.List;
/**
* 招商信诺报表接口
*/
@RestController
@RequestMapping("/cignacmb")
public class CignaCmbController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private BusinessRuleLogService ruleLogService;
@Autowired
private BusinessEventLogService eventLogService;
/**
* 规则报表查询
* @param param
* @return
*/
@RequestMapping(value = "getRuleLogList", method = RequestMethod.POST)
public ResponseEntityDto<Object> getRuleLogList(@RequestBody RuleLogParam param){
// “规则编号、规则名称、规则执行时间段” 不能同时为空
if(StringUtils.isBlank(param.getRuleCode()) && StringUtils.isBlank(param.getRuleName())
&& (param.getStartTime() == null || param.getEndTime() == null)){
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.PARAMS_EXCEPTION);
}
PageInfo<RuleLogResponse> pageInfo = ruleLogService.getRuleLogList(param);
return ResponseEntityBuilder.buildNormalResponse(pageInfo);
}
/**
* 事件报表查询
* @param param
* @return
*/
@RequestMapping(value = "getEventLogList", method = RequestMethod.POST)
public ResponseEntityDto<Object> getEventLogList(@RequestBody EventLogParam param){
// “事件流水号、执行时间段”不能同时为空
if(StringUtils.isBlank(param.getEventRequestId())
&& (param.getStartTime() == null || param.getEndTime() == null)){
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.PARAMS_EXCEPTION);
}
PageInfo<EventLogResponse> pageInfo = eventLogService.getEventLogList(param);
return ResponseEntityBuilder.buildNormalResponse(pageInfo);
}
/**
* 事件对应规则输出详情
* @param param
* @return
*/
@RequestMapping(value = "getEventLogDetails", method = RequestMethod.POST)
public ResponseEntityDto<Object> getEventLogDetails(@RequestBody EventLogDetailParam param){
String ruleLogIds = param.getRuleLogIds();
if(StringUtils.isBlank(ruleLogIds)){
return ResponseEntityBuilder.buildNormalResponse();
}
List<String> ids = Arrays.asList(ruleLogIds.split(","));
List<EventLogDetailResponse> eventLogDetailResponses = ruleLogService.queryByIds(ids);
return ResponseEntityBuilder.buildNormalResponse(eventLogDetailResponses);
}
}

View File

@@ -0,0 +1,81 @@
package com.fibo.ddp.strategyx.guiderule.controller.cignacmb;
import com.fibo.ddp.common.model.cignacmb.req.BusinessRuleRelReq;
import com.fibo.ddp.common.model.common.ResponseEntityDto;
import com.fibo.ddp.common.service.cignacmb.ITBusinessRuleRelService;
import com.fibo.ddp.common.service.monitor.logger.ArchivesLog;
import com.fibo.ddp.common.utils.constant.OpTypeConst;
import org.springframework.beans.factory.annotation.Autowired;
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;
/**
* <p>
* 业务类型与规则关联表 前端控制器
* </p>
*
* @author oldRose
* @since 2021-11-10
*/
@RestController
@RequestMapping("/businessRuleRel")
public class TBusinessRuleRelController {
@Autowired
private ITBusinessRuleRelService businessRuleRelService;
/**
* 新增业务类型和规则关联
*/
@PostMapping("/add")
@ArchivesLog(operationType = OpTypeConst.BUSINESS_RULE_REL_ADD)
public ResponseEntityDto<?> addBusinessRuleRel(@RequestBody BusinessRuleRelReq param) {
return businessRuleRelService.addBusinessRuleRel(param);
}
/**
* 编辑业务类型和规则关联
*/
@PostMapping("/edit")
@ArchivesLog(operationType = OpTypeConst.BUSINESS_RULE_REL_EDIT)
public ResponseEntityDto<?> editBusinessRuleRel(@RequestBody BusinessRuleRelReq param) {
return businessRuleRelService.editBusinessRuleRel(param);
}
/**
* 查看详情业务类型和规则关联
*/
@PostMapping("/detail")
@ArchivesLog(operationType = OpTypeConst.BUSINESS_RULE_REL_DETAIL)
public ResponseEntityDto<?> detailBusinessRuleRel(@RequestBody BusinessRuleRelReq param) {
return businessRuleRelService.detailBusinessRuleRel(param);
}
/**
* 删除详情业务类型和规则关联
*/
@PostMapping("/delete")
@ArchivesLog(operationType = OpTypeConst.BUSINESS_RULE_REL_DELETE)
public ResponseEntityDto<?> deleteBusinessRuleRel(@RequestBody BusinessRuleRelReq param) {
return businessRuleRelService.deleteBusinessRuleRel(param);
}
/**
* 获取投放计划列表分页(按修改时间,创建时间降序排列)
*/
@PostMapping("/list")
@ArchivesLog(operationType = OpTypeConst.BUSINESS_RULE_REL_PAGE)
public ResponseEntityDto<?> pageList(@RequestBody BusinessRuleRelReq param) {
return businessRuleRelService.pageList(param);
}
/**
* 根据业务类型查询对应规则
*/
@PostMapping("/queryByBusinessType")
@ArchivesLog(operationType = OpTypeConst.QUERY_BY_BUSINESSTYPE)
public ResponseEntityDto<?> queryByBusinessType(@RequestBody BusinessRuleRelReq param) {
return businessRuleRelService.queryByBusinessType(param);
}
}

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ddp-strategyx</artifactId>
<groupId>com.fibo.ddp</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ddp-strategyx-list-library</artifactId>
</project>

View File

@@ -0,0 +1,362 @@
package com.fibo.ddp.strategyx.listlibrary.controller;
import com.alibaba.fastjson.JSONObject;
import com.fibo.ddp.common.model.common.ResponseEntityBuilder;
import com.fibo.ddp.common.model.common.ResponseEntityDto;
import com.fibo.ddp.common.model.common.enums.ErrorCodeEnum;
import com.fibo.ddp.common.model.datax.datamanage.Field;
import com.fibo.ddp.common.model.strategyx.listlibrary.ListDb;
import com.fibo.ddp.common.model.strategyx.listlibrary.request.ListDbDataParam;
import com.fibo.ddp.common.service.common.SessionManager;
import com.fibo.ddp.common.service.datax.datamanage.FieldService;
import com.fibo.ddp.common.service.monitor.logger.ArchivesLog;
import com.fibo.ddp.common.service.strategyx.listlibrary.ListDbService;
import com.fibo.ddp.common.utils.constant.OpTypeConst;
import com.fibo.ddp.common.utils.exception.ApiException;
import com.fibo.ddp.common.utils.util.StringUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @apiDefine listDb 4.黑白名单库管理
*/
@Controller("listDbControllerV2")
@RequestMapping("v2/datamanage/listmanage")
@ResponseBody
public class ListDbController {
@Autowired
private ListDbService listDbService;
@Autowired
private FieldService fieldService;
/**
* @api {POST} /v2/datamanage/listmanage/list 4.01. 获取黑、白名单列表
* @apiGroup listDb
* @apiVersion 2.0.0
* @apiParam {String} listType 名单库区分,b表示黑名单,w表示白名单
* @apiParam {Integer} pageNo 第几页
* @apiParam {Integer} pageSize 每页的条数
* @apiSuccess {JSONArray} listDbs 名单库列表
* @apiSuccess (listDbs) {Long} userId 名单库Id
* @apiSuccess (listDbs) {String} listType 名单库区分,用b表示黑名单,w表示白名单
* @apiSuccess (listDbs) {String} listName 名单库名称
* @apiSuccess (listDbs) {Integer} dataSource 数据来源:外部黑(白)名单1、内部黑(白)名单2、待选0
* @apiSuccess (listDbs) {String} listAttr 名单库属性,用户输入
* @apiSuccess (listDbs) {String} listDesc 名单库描述
* @apiSuccess (listDbs) {String} tableColumn 名单库表中列字段字段id逗号分隔
* @apiSuccess (listDbs) {Integer} matchType 检索匹配类型精确匹配1模糊匹配0
* @apiSuccess (listDbs) {Integer} queryType 查询字段间逻辑and1or0
* @apiSuccess (listDbs) {String} queryField 查询主键,字段编号逗号分割
* @apiSuccess (listDbs) {Integer} status 名单库状态 启用1停用0删除-1
* @apiSuccess (listDbs) {String} nickName 创建人
* @apiSuccess (listDbs) {Long} created 创建时间
* @apiSuccess {JSON} pager 分页信息
* @apiParamExample {json} 请求示例:
* {"listType":"b","pageNo":1,"pageSize":2}
* @apiSuccessExample {json} Success-Response:
* {"status":"1","error":"00000000","msg":null,"data":{"pager":{"pageNum":1,"pageSize":2,"size":2,"startRow":1,"endRow":2,"total":5,"pages":3,"list":null,"prePage":0,"nextPage":2,"isFirstPage":true,"isLastPage":false,"hasPreviousPage":false,"hasNextPage":true,"navigatePages":8,"navigatepageNums":[1,2,3],"navigateFirstPage":1,"navigateLastPage":3,"lastPage":3,"firstPage":1},"listDbs":[{"page":0,"rows":0,"total":null,"userId":116,"listType":"b","listName":"测试-黑名单3","dataSource":2,"listAttr":"666","listDesc":"测试-黑名单333","tableColumn":"587","matchType":1,"queryType":1,"queryField":"587","queryFieldCn":null,"organId":46,"status":0,"userId":135,"created":1615952361000,"nickName":"管理员"},{"page":0,"rows":0,"total":null,"userId":117,"listType":"b","listName":"测试-黑名单5","dataSource":1,"listAttr":"666","listDesc":"测试-黑名单555hh","tableColumn":"587,589","matchType":1,"queryType":1,"queryField":"589","queryFieldCn":null,"organId":46,"status":0,"userId":135,"created":1615952361000,"nickName":"管理员"}]}}
*/
@RequestMapping(value = "list", method = RequestMethod.POST)
public ResponseEntityDto<Object> list(@RequestBody HashMap<String, Object> paramMap) {
Long userId = SessionManager.getLoginAccount().getUserId();
paramMap.put("userId", userId);
Integer pageNo = paramMap.containsKey("pageNo") ? (Integer)paramMap.get("pageNo") : 1;
Integer pageSize = paramMap.containsKey("pageSize") ? (Integer)paramMap.get("pageSize") : 10;
PageHelper.startPage(pageNo,pageSize);
List<ListDb> listDbList = listDbService.findByUser(paramMap);
PageInfo<ListDb> pageInfo = new PageInfo<ListDb>(listDbList);
pageInfo.setList(null);
List<ListDb> listDbs = new ArrayList<>();
for (ListDb listDb : listDbList) {
Map map= new HashMap<>();
try {
map = BeanUtils.describe(listDb);
} catch (IllegalAccessException|InvocationTargetException|NoSuchMethodException e) {
e.printStackTrace();
throw new ApiException(ErrorCodeEnum.PARAMS_EXCEPTION.getCode(),ErrorCodeEnum.PARAMS_EXCEPTION.getMessage());
}
listDbs.add(listDbService.findById(map));
}
HashMap<String, Object> modelMap = new HashMap<>();
modelMap.put("pager", pageInfo);
modelMap.put("listDbs", listDbs);
return ResponseEntityBuilder.buildNormalResponse(modelMap);
}
/**
* @api {POST} /v2/datamanage/listmanage/save 4.02. 添加黑、白名单库
* @apiGroup listDb
* @apiVersion 2.0.0
* @apiParam {String} listType 名单库区分,用b表示黑名单,w表示白名单
* @apiParam {String} listName 名单库名称
* @apiParam {Integer} dataSource 数据来源:外部黑(白)名单1、内部黑(白)名单2、待选0
* @apiParam {String} listAttr 名单库属性,用户输入
* @apiParam {String} listDesc 名单库描述
* @apiParam {String} tableColumn 名单库表中列字段字段id逗号分隔
* @apiParam {Integer} matchType 检索匹配类型精确匹配1模糊匹配0
* @apiParam {Integer} queryType 查询字段间逻辑and1or0
* @apiParam {String} queryField 查询主键,字段编号逗号分割
* @apiSuccess {String} status 状态: 1成功, 0失败
* @apiParamExample {json} 请求示例:
* {"listType":"b","listName":"测试-黑名单5","dataSource":2,"listAttr":"666","listDesc":"测试-黑名单555","tableColumn":"587,589","matchType":1,"queryType":1,"queryField":"589"}
* @apiSuccessExample {json} 成功返回数据示例:
* {"status":"1","error":"00000000","msg":null,"data":true}
*/
@RequestMapping(value = "save", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.SAVE_BLACK_OR_WHITE_LIST_DB)
public ResponseEntityDto<Object> save(@RequestBody ListDb listDb) {
HashMap<String, Object> validateMap = new HashMap<>();
validateMap.put("listType", listDb.getListType());
validateMap.put("listName", listDb.getListName());
validateMap.put("listDbId", listDb.getId());
int listDbNum = listNameAjaxValidate(validateMap);
if(listDbNum > 0){
throw new ApiException(ErrorCodeEnum.LIST_DB_NAME_REPEAT.getCode(), ErrorCodeEnum.LIST_DB_NAME_REPEAT.getMessage());
}
Map<String,Object> param = JSONObject.parseObject(JSONObject.toJSONString(listDb));
Long userId = SessionManager.getLoginAccount().getUserId();
Long organId = SessionManager.getLoginAccount().getOrganId();
param.put("userId", userId);
param.put("organId", organId);
listDb.setUserId(userId);
listDb.setOrganId(organId);
listDb.setStatus(1);
boolean result = listDbService.createListDb(listDb, param);
// model.addAttribute("listType", inputParam.get("listType"));
return ResponseEntityBuilder.buildNormalResponse(result);
}
private int listNameAjaxValidate(HashMap<String, Object> paramMap) {
if("".equals(paramMap.get("listDbId"))){
paramMap.put("listDbId", null);
}
Long userId = SessionManager.getLoginAccount().getUserId();
paramMap.put("userId", userId);
return listDbService.isExists(paramMap);
}
/**
* @api {POST} /v2/datamanage/listmanage/getListDbInfo/{userId} 4.03. 获取黑、白名单库详情
* @apiGroup listDb
* @apiVersion 2.0.0
* @apiParam {JSON} listDbInfo 名单库基础信息
* @apiParam (listDbInfo) {Long} userId 名单库Id
* @apiParam (listDbInfo) {String} listType 名单库区分,用b表示黑名单,w表示白名单
* @apiParam (listDbInfo) {String} listName 名单库名称
* @apiParam (listDbInfo) {Integer} dataSource 数据来源:外部黑(白)名单1、内部黑(白)名单2、待选0
* @apiParam (listDbInfo) {String} listAttr 名单库属性,用户输入
* @apiParam (listDbInfo) {String} listDesc 名单库描述
* @apiParam (listDbInfo) {String} tableColumn 名单库表中列字段字段id逗号分隔
* @apiParam (listDbInfo) {Integer} matchType 检索匹配类型精确匹配1模糊匹配0
* @apiParam (listDbInfo) {Integer} queryType 查询字段间逻辑and1or0
* @apiParam (listDbInfo) {String} queryField 查询主键,字段编号逗号分割
* @apiParam {JSONArray} tableColumnList 名单库表中列字段集合
* @apiParam (tableColumnList) {Long} userId 指标Id
* @apiParam (tableColumnList) {Long} fieldEn 指标英文名
* @apiParam (tableColumnList) {Long} fieldCn 指标中文名
* @apiParam {JSONArray} queryFieldList 查询主键字段集合
* @apiParam (queryFieldList) {Long} userId 指标Id
* @apiParam (queryFieldList) {Long} fieldEn 指标英文名
* @apiParam (queryFieldList) {Long} fieldCn 指标中文名
* @apiSuccess {String} status 状态: 1成功, 0失败
* @apiParamExample {json} 请求示例:
* {"listType":"b"}
* @apiSuccessExample {json} 成功返回数据示例:
* {"status":"1","error":"00000000","msg":null,"data":{"listDbInfo":{"page":0,"rows":0,"total":null,"userId":117,"listType":"b","listName":"测试-黑名单5","dataSource":1,"listAttr":"666","listDesc":"测试-黑名单555hh","tableColumn":"587,589","matchType":1,"queryType":1,"queryField":"589","queryFieldCn":null,"organId":46,"status":1,"userId":135,"created":1615897180000,"nickName":null},"queryFieldList":[{"page":0,"rows":0,"total":null,"userId":589,"fieldEn":"f_td_finalScore","fieldCn":"同盾_评分","fieldTypeId":271,"fieldType":"反欺诈1","valueType":1,"valueTypeName":null,"valueScope":"(0,999999]","isDerivative":0,"isDerivativeName":null,"isOutput":0,"isOutputName":null,"isCommon":1,"formula":"","formulaShow":"","usedFieldId":null,"origFieldId":null,"author":null,"nickName":null,"created":null,"engineId":null,"engineName":null,"status":null,"fieldCondList":[],"fieldRelId":null,"dataSourceId":null,"sqlStatement":null,"useSql":false}],"tableColumnList":[{"page":0,"rows":0,"total":null,"userId":587,"fieldEn":"f_hr_age","fieldCn":"年龄准入","fieldTypeId":270,"fieldType":"准入","valueType":1,"valueTypeName":null,"valueScope":"(-1,999999]","isDerivative":0,"isDerivativeName":null,"isOutput":0,"isOutputName":null,"isCommon":1,"formula":"","formulaShow":"","usedFieldId":null,"origFieldId":null,"author":null,"nickName":null,"created":null,"engineId":null,"engineName":null,"status":null,"fieldCondList":[],"fieldRelId":null,"dataSourceId":null,"sqlStatement":null,"useSql":false},{"page":0,"rows":0,"total":null,"userId":589,"fieldEn":"f_td_finalScore","fieldCn":"同盾_评分","fieldTypeId":271,"fieldType":"反欺诈1","valueType":1,"valueTypeName":null,"valueScope":"(0,999999]","isDerivative":0,"isDerivativeName":null,"isOutput":0,"isOutputName":null,"isCommon":1,"formula":"","formulaShow":"","usedFieldId":null,"origFieldId":null,"author":null,"nickName":null,"created":null,"engineId":null,"engineName":null,"status":null,"fieldCondList":[],"fieldRelId":null,"dataSourceId":null,"sqlStatement":null,"useSql":false}]}}
*/
@RequestMapping(value = "getListDbInfo/{id}", method = RequestMethod.POST)
public ResponseEntityDto<Object> getListDbInfo(@PathVariable long id, @RequestBody Map<String,Object> param) {
Long userId = SessionManager.getLoginAccount().getUserId();
param.put("userId", userId);
param.put("id", id);
ListDb listDb = listDbService.findById(param);
List<Field> fieldList = new ArrayList<Field>();
List<Long> Ids = StringUtil.toLongList(listDb.getTableColumn());
for(Long fieldId :Ids){
HashMap<String, Object> tableColumnMap = new HashMap<String, Object>();
tableColumnMap.put("userId", userId);
tableColumnMap.put("userId", fieldId);
Field field = new Field();
field = fieldService.findByFieldId(tableColumnMap);
fieldList.add(field);
}
List<Field> queryFieldList = new ArrayList<Field>();
List<Long> queryFieldIds = StringUtil.toLongList(listDb.getQueryField());
for(Long queryFieldId : queryFieldIds){
HashMap<String, Object> queryFieldMap = new HashMap<String, Object>();
queryFieldMap.put("userId", userId);
queryFieldMap.put("userId", queryFieldId);
Field queryField = new Field();
queryField = fieldService.findByFieldId(queryFieldMap);
queryFieldList.add(queryField);
}
HashMap<String, Object> modelMap = new HashMap<>();
modelMap.put("listDbInfo", listDb);
modelMap.put("tableColumnList", fieldList);
modelMap.put("queryFieldList", queryFieldList);
return ResponseEntityBuilder.buildNormalResponse(modelMap);
}
/**
* @api {POST} /v2/datamanage/listmanage/update 4.04. 修改黑、白名单库
* @apiGroup listDb
* @apiVersion 2.0.0
* @apiParam {Long} userId 名单库Id
* @apiParam {String} listType 名单库区分,用b表示黑名单,w表示白名单
* @apiParam {String} listName 名单库名称
* @apiParam {Integer} dataSource 数据来源:外部黑(白)名单1、内部黑(白)名单2、待选0
* @apiParam {String} listAttr 名单库属性,用户输入
* @apiParam {String} listDesc 名单库描述
* @apiParam {String} tableColumn 名单库表中列字段字段id逗号分隔
* @apiParam {Integer} matchType 检索匹配类型精确匹配1模糊匹配0
* @apiParam {Integer} queryType 查询字段间逻辑and1or0
* @apiParam {String} queryField 查询主键,字段编号逗号分割
* @apiSuccess {String} status 状态: 1成功, 0失败
* @apiParamExample {json} 请求示例:
* {"userId":117,"listType":"b","listName":"测试-黑名单5","dataSource":1,"listAttr":"666","listDesc":"测试-黑名单555hh","tableColumn":"587,589","matchType":1,"queryType":1,"queryField":"589"}
* @apiSuccessExample {json} 成功返回数据示例:
* {"status":"1","error":"00000000","msg":null,"data":true}
*/
@RequestMapping(value = "update", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_BLACK_OR_WHITE_LIST_DB)
public ResponseEntityDto<Object> update(@RequestBody ListDb listDb) {
HashMap<String, Object> validateMap = new HashMap<>();
validateMap.put("listType", listDb.getListType());
validateMap.put("listName", listDb.getListName());
validateMap.put("listDbId", listDb.getId());
int listDbNum = listNameAjaxValidate(validateMap);
if(listDbNum > 0){
throw new ApiException(ErrorCodeEnum.LIST_DB_NAME_REPEAT.getCode(), ErrorCodeEnum.LIST_DB_NAME_REPEAT.getMessage());
}
Map<String,Object> paramMap = JSONObject.parseObject(JSONObject.toJSONString(listDb));
Long userId = SessionManager.getLoginAccount().getUserId();
paramMap.put("userId", userId);
boolean result = listDbService.updateListDb(paramMap);
// model.addAttribute("listType", paramMap.get("listType"));
return ResponseEntityBuilder.buildNormalResponse(result);
}
/**
* @api {POST} /v2/datamanage/listmanage/updateStatus 4.05. 名单库停用、启用、删除
* @apiGroup listDb
* @apiVersion 2.0.0
* @apiParam {String} ids 名单库Id多个用逗号分隔
* @apiParam {Integer} status 名单库状态 启用1停用0删除-1
* @apiParam {String} listType 名单库区分,用b表示黑名单,w表示白名单
* @apiSuccess {String} status 状态: 1成功, 0失败
* @apiParamExample {json} 请求示例:
* {"ids":"116,117","status":0,"listType":"b"}
* @apiSuccessExample {json} 成功返回数据示例:
* {"status":"1","error":"00000000","msg":null,"data":true}
*/
@RequestMapping(value = "updateStatus", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_BLACK_OR_WHITE_LIST_DB)
public ResponseEntityDto<Object> updateStatus(@RequestBody Map<String,Object> paramMap) {
Long userId = SessionManager.getLoginAccount().getUserId();
paramMap.put("userId", userId);
String idsStr =(String) paramMap.get("ids");
List<Long> Ids = StringUtil.toLongList(idsStr);
paramMap.put("Ids", Ids);
boolean result = listDbService.updateStatus(paramMap);
// model.addAttribute("listType", paramMap.get("listType"));
return ResponseEntityBuilder.buildNormalResponse(result);
}
/**
* @api {POST} /v2/datamanage/listmanage/downTemplate 4.06. 名单库导入模板下载
* @apiGroup listDb
* @apiVersion 2.0.0
*/
@RequestMapping(value = "downTemplate")
public ResponseEntity<byte[]> downExcelTemplate() throws IOException {
ClassPathResource classPathResource = new ClassPathResource("excleTemplate/listDb.xlsx");
InputStream inputStream = classPathResource.getInputStream();
HttpHeaders headers = new HttpHeaders();
String fileName = new String("名单库导入模板.xlsx".getBytes("UTF-8"), "iso-8859-1");//为了解决中文名称乱码问题
headers.setContentDispositionFormData("attachment", fileName);
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
return new ResponseEntity<byte[]>(IOUtils.toByteArray(inputStream), headers, HttpStatus.CREATED);
}
/**
* @api {POST} /v2/datamanage/listmanage/upload/{userId} 4.07. 名单库导入
* @apiGroup listDb
* @apiVersion 2.0.0
*/
@RequestMapping(value = "upload/{id}", method = RequestMethod.POST)
public ResponseEntityDto<Object> upload(HttpServletRequest request, @PathVariable Long id) throws Exception {
//将当前上下文初始化给CommonsMutipartResolver多部分解析器
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
if (!multipartResolver.isMultipart(request)) {
throw new ApiException(ErrorCodeEnum.FILE_UPLOAD_ERROR.getCode(), ErrorCodeEnum.FILE_UPLOAD_ERROR.getMessage());
}
String result = listDbService.upload(request, id);
return ResponseEntityBuilder.buildNormalResponse(result);
}
/**
* @api {POST} /v2/datamanage/listmanage/getListDbData 4.08. 查询名单库数据
* @apiGroup listDb
* @apiVersion 2.0.0
*/
@RequestMapping(value = "getListDbData", method = RequestMethod.POST)
public ResponseEntityDto<Object> getListDbData(@RequestBody ListDbDataParam param) {
Map<String, Object> result = listDbService.getListDbData(param);
return ResponseEntityBuilder.buildNormalResponse(result);
}
}

View File

@@ -0,0 +1,240 @@
package com.fibo.ddp.strategyx.listlibrary.controller;
import com.fibo.ddp.common.model.common.ResponseEntityBuilder;
import com.fibo.ddp.common.model.common.ResponseEntityDto;
import com.fibo.ddp.common.model.common.enums.ErrorCodeEnum;
import com.fibo.ddp.common.model.common.requestParam.QueryListParam;
import com.fibo.ddp.common.model.common.requestParam.UpdateFolderParam;
import com.fibo.ddp.common.model.common.requestParam.UpdateStatusParam;
import com.fibo.ddp.common.model.strategyx.listlibrary.ListDb;
import com.fibo.ddp.common.model.strategyx.listlibrary.request.ListDbDataParam;
import com.fibo.ddp.common.service.monitor.logger.ArchivesLog;
import com.fibo.ddp.common.service.strategyx.listlibrary.ListDbV3Service;
import com.fibo.ddp.common.utils.constant.OpTypeConst;
import com.fibo.ddp.common.utils.exception.ApiException;
import com.fibo.ddp.common.utils.util.ResponseUtil;
import com.github.pagehelper.PageInfo;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;
/**
* @apiDefine listDb 4.黑白名单库管理
*/
@RestController("listDbController")
@RequestMapping("v3/listDb")
public class ListDbV3Controller {
@Autowired
private ListDbV3Service listDbService;
/**
* @api {POST} /v2/datamanage/listmanage/list 4.01. 获取黑、白名单列表
* @apiGroup listDb
* @apiVersion 2.0.0
* @apiParam {String} listType 名单库区分,b表示黑名单,w表示白名单
* @apiParam {Integer} pageNo 第几页
* @apiParam {Integer} pageSize 每页的条数
* @apiSuccess {JSONArray} listDbs 名单库列表
* @apiSuccess (listDbs) {Long} userId 名单库Id
* @apiSuccess (listDbs) {String} listType 名单库区分,用b表示黑名单,w表示白名单
* @apiSuccess (listDbs) {String} listName 名单库名称
* @apiSuccess (listDbs) {Integer} dataSource 数据来源:外部黑(白)名单1、内部黑(白)名单2、待选0
* @apiSuccess (listDbs) {String} listAttr 名单库属性,用户输入
* @apiSuccess (listDbs) {String} listDesc 名单库描述
* @apiSuccess (listDbs) {String} tableColumn 名单库表中列字段字段id逗号分隔
* @apiSuccess (listDbs) {Integer} matchType 检索匹配类型精确匹配1模糊匹配0
* @apiSuccess (listDbs) {Integer} queryType 查询字段间逻辑and1or0
* @apiSuccess (listDbs) {String} queryField 查询主键,字段编号逗号分割
* @apiSuccess (listDbs) {Integer} status 名单库状态 启用1停用0删除-1
* @apiSuccess (listDbs) {String} nickName 创建人
* @apiSuccess (listDbs) {Long} created 创建时间
* @apiSuccess {JSON} pager 分页信息
* @apiParamExample {json} 请求示例:
* {"listType":"b","pageNo":1,"pageSize":2}
* @apiSuccessExample {json} Success-Response:
* {"status":"1","error":"00000000","msg":null,"data":{"pager":{"pageNum":1,"pageSize":2,"size":2,"startRow":1,"endRow":2,"total":5,"pages":3,"list":null,"prePage":0,"nextPage":2,"isFirstPage":true,"isLastPage":false,"hasPreviousPage":false,"hasNextPage":true,"navigatePages":8,"navigatepageNums":[1,2,3],"navigateFirstPage":1,"navigateLastPage":3,"lastPage":3,"firstPage":1},"listDbs":[{"page":0,"rows":0,"total":null,"userId":116,"listType":"b","listName":"测试-黑名单3","dataSource":2,"listAttr":"666","listDesc":"测试-黑名单333","tableColumn":"587","matchType":1,"queryType":1,"queryField":"587","queryFieldCn":null,"organId":46,"status":0,"userId":135,"created":1615952361000,"nickName":"管理员"},{"page":0,"rows":0,"total":null,"userId":117,"listType":"b","listName":"测试-黑名单5","dataSource":1,"listAttr":"666","listDesc":"测试-黑名单555hh","tableColumn":"587,589","matchType":1,"queryType":1,"queryField":"589","queryFieldCn":null,"organId":46,"status":0,"userId":135,"created":1615952361000,"nickName":"管理员"}]}}
*/
@RequestMapping(value = "/list", method = RequestMethod.POST)
public ResponseEntityDto list(@RequestBody QueryListParam<ListDb> param) {
PageInfo pageInfo = listDbService.queryByEntity(param);
Map<String, Object> responseMap = ResponseUtil.getResponseMap(pageInfo);
return ResponseEntityBuilder.buildNormalResponse(responseMap);
}
/**
* @api {POST} /v2/datamanage/listmanage/save 4.02. 添加黑、白名单库
* @apiGroup listDb
* @apiVersion 2.0.0
* @apiParam {String} listType 名单库区分,用b表示黑名单,w表示白名单
* @apiParam {String} listName 名单库名称
* @apiParam {Integer} dataSource 数据来源:外部黑(白)名单1、内部黑(白)名单2、待选0
* @apiParam {String} listAttr 名单库属性,用户输入
* @apiParam {String} listDesc 名单库描述
* @apiParam {String} tableColumn 名单库表中列字段字段id逗号分隔
* @apiParam {Integer} matchType 检索匹配类型精确匹配1模糊匹配0
* @apiParam {Integer} queryType 查询字段间逻辑and1or0
* @apiParam {String} queryField 查询主键,字段编号逗号分割
* @apiSuccess {String} status 状态: 1成功, 0失败
* @apiParamExample {json} 请求示例:
* {"listType":"b","listName":"测试-黑名单5","dataSource":2,"listAttr":"666","listDesc":"测试-黑名单555","tableColumn":"587,589","matchType":1,"queryType":1,"queryField":"589"}
* @apiSuccessExample {json} 成功返回数据示例:
* {"status":"1","error":"00000000","msg":null,"data":true}
*/
@RequestMapping(value = "/save", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.SAVE_BLACK_OR_WHITE_LIST_DB)
public ResponseEntityDto<Object> save(@RequestBody ListDb listDb) {
boolean result = listDbService.addListDb(listDb);
return ResponseEntityBuilder.buildNormalResponse(result);
}
/**
* @api {POST} /v2/datamanage/listmanage/getListDbInfo/{userId} 4.03. 获取黑、白名单库详情
* @apiGroup listDb
* @apiVersion 2.0.0
* @apiParam {JSON} listDbInfo 名单库基础信息
* @apiParam (listDbInfo) {Long} userId 名单库Id
* @apiParam (listDbInfo) {String} listType 名单库区分,用b表示黑名单,w表示白名单
* @apiParam (listDbInfo) {String} listName 名单库名称
* @apiParam (listDbInfo) {Integer} dataSource 数据来源:外部黑(白)名单1、内部黑(白)名单2、待选0
* @apiParam (listDbInfo) {String} listAttr 名单库属性,用户输入
* @apiParam (listDbInfo) {String} listDesc 名单库描述
* @apiParam (listDbInfo) {String} tableColumn 名单库表中列字段字段id逗号分隔
* @apiParam (listDbInfo) {Integer} matchType 检索匹配类型精确匹配1模糊匹配0
* @apiParam (listDbInfo) {Integer} queryType 查询字段间逻辑and1or0
* @apiParam (listDbInfo) {String} queryField 查询主键,字段编号逗号分割
* @apiParam {JSONArray} tableColumnList 名单库表中列字段集合
* @apiParam (tableColumnList) {Long} userId 指标Id
* @apiParam (tableColumnList) {Long} fieldEn 指标英文名
* @apiParam (tableColumnList) {Long} fieldCn 指标中文名
* @apiParam {JSONArray} queryFieldList 查询主键字段集合
* @apiParam (queryFieldList) {Long} userId 指标Id
* @apiParam (queryFieldList) {Long} fieldEn 指标英文名
* @apiParam (queryFieldList) {Long} fieldCn 指标中文名
* @apiSuccess {String} status 状态: 1成功, 0失败
* @apiParamExample {json} 请求示例:
* {"listType":"b"}
* @apiSuccessExample {json} 成功返回数据示例:
* {"status":"1","error":"00000000","msg":null,"data":{"listDbInfo":{"page":0,"rows":0,"total":null,"userId":117,"listType":"b","listName":"测试-黑名单5","dataSource":1,"listAttr":"666","listDesc":"测试-黑名单555hh","tableColumn":"587,589","matchType":1,"queryType":1,"queryField":"589","queryFieldCn":null,"organId":46,"status":1,"userId":135,"created":1615897180000,"nickName":null},"queryFieldList":[{"page":0,"rows":0,"total":null,"userId":589,"fieldEn":"f_td_finalScore","fieldCn":"同盾_评分","fieldTypeId":271,"fieldType":"反欺诈1","valueType":1,"valueTypeName":null,"valueScope":"(0,999999]","isDerivative":0,"isDerivativeName":null,"isOutput":0,"isOutputName":null,"isCommon":1,"formula":"","formulaShow":"","usedFieldId":null,"origFieldId":null,"author":null,"nickName":null,"created":null,"engineId":null,"engineName":null,"status":null,"fieldCondList":[],"fieldRelId":null,"dataSourceId":null,"sqlStatement":null,"useSql":false}],"tableColumnList":[{"page":0,"rows":0,"total":null,"userId":587,"fieldEn":"f_hr_age","fieldCn":"年龄准入","fieldTypeId":270,"fieldType":"准入","valueType":1,"valueTypeName":null,"valueScope":"(-1,999999]","isDerivative":0,"isDerivativeName":null,"isOutput":0,"isOutputName":null,"isCommon":1,"formula":"","formulaShow":"","usedFieldId":null,"origFieldId":null,"author":null,"nickName":null,"created":null,"engineId":null,"engineName":null,"status":null,"fieldCondList":[],"fieldRelId":null,"dataSourceId":null,"sqlStatement":null,"useSql":false},{"page":0,"rows":0,"total":null,"userId":589,"fieldEn":"f_td_finalScore","fieldCn":"同盾_评分","fieldTypeId":271,"fieldType":"反欺诈1","valueType":1,"valueTypeName":null,"valueScope":"(0,999999]","isDerivative":0,"isDerivativeName":null,"isOutput":0,"isOutputName":null,"isCommon":1,"formula":"","formulaShow":"","usedFieldId":null,"origFieldId":null,"author":null,"nickName":null,"created":null,"engineId":null,"engineName":null,"status":null,"fieldCondList":[],"fieldRelId":null,"dataSourceId":null,"sqlStatement":null,"useSql":false}]}}
*/
@RequestMapping(value = "/getListDbInfo/{id}", method = RequestMethod.POST)
public ResponseEntityDto<Object> getListDbInfo(@PathVariable Long id) {
if (id==null){
throw new ApiException(ErrorCodeEnum.PARAMS_EXCEPTION.getCode(),ErrorCodeEnum.PARAMS_EXCEPTION.getMessage());
}
ListDb listDb = listDbService.queryById(id);
return ResponseEntityBuilder.buildNormalResponse(listDb);
}
/**
* @api {POST} /v2/datamanage/listmanage/update 4.04. 修改黑、白名单库
* @apiGroup listDb
* @apiVersion 2.0.0
* @apiParam {Long} userId 名单库Id
* @apiParam {String} listType 名单库区分,用b表示黑名单,w表示白名单
* @apiParam {String} listName 名单库名称
* @apiParam {Integer} dataSource 数据来源:外部黑(白)名单1、内部黑(白)名单2、待选0
* @apiParam {String} listAttr 名单库属性,用户输入
* @apiParam {String} listDesc 名单库描述
* @apiParam {String} tableColumn 名单库表中列字段字段id逗号分隔
* @apiParam {Integer} matchType 检索匹配类型精确匹配1模糊匹配0
* @apiParam {Integer} queryType 查询字段间逻辑and1or0
* @apiParam {String} queryField 查询主键,字段编号逗号分割
* @apiSuccess {String} status 状态: 1成功, 0失败
* @apiParamExample {json} 请求示例:
* {"userId":117,"listType":"b","listName":"测试-黑名单5","dataSource":1,"listAttr":"666","listDesc":"测试-黑名单555hh","tableColumn":"587,589","matchType":1,"queryType":1,"queryField":"589"}
* @apiSuccessExample {json} 成功返回数据示例:
* {"status":"1","error":"00000000","msg":null,"data":true}
*/
@RequestMapping(value = "/update", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_BLACK_OR_WHITE_LIST_DB)
public ResponseEntityDto<Object> update(@RequestBody ListDb listDb) {
boolean result = listDbService.updateListDb(listDb);
return ResponseEntityBuilder.buildNormalResponse(result);
}
/**
* @api {POST} /v2/datamanage/listmanage/updateStatus 4.05. 名单库停用、启用、删除
* @apiGroup listDb
* @apiVersion 2.0.0
* @apiParam {String} ids 名单库Id多个用逗号分隔
* @apiParam {Integer} status 名单库状态 启用1停用0删除-1
* @apiParam {String} listType 名单库区分,用b表示黑名单,w表示白名单
* @apiSuccess {String} status 状态: 1成功, 0失败
* @apiParamExample {json} 请求示例:
* {"ids":"116,117","status":0,"listType":"b"}
* @apiSuccessExample {json} 成功返回数据示例:
* {"status":"1","error":"00000000","msg":null,"data":true}
*/
@RequestMapping(value = "/updateStatus", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_BLACK_OR_WHITE_LIST_DB)
public ResponseEntityDto<Object> updateStatus(@RequestBody UpdateStatusParam param) {
UpdateStatusParam.checkParam(param);
listDbService.updateStatus(param.getList(),param.getStatus());
return ResponseEntityBuilder.buildNormalResponse();
}
@ResponseBody
@RequestMapping(value = "/updateFolder", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_BLACK_OR_WHITE_LIST_DB_FOLDER)
public ResponseEntityDto updateFolder(@RequestBody UpdateFolderParam param) {
UpdateFolderParam.checkNotNull(param);
boolean updateResult = listDbService.updateFolder(param.getIds(), param.getFolderId());
if (updateResult) {
return ResponseEntityBuilder.buildNormalResponse(updateResult);
} else {
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.SERVER_ERROR);
}
}
/**
* @api {POST} /v2/datamanage/listmanage/downTemplate 4.06. 名单库导入模板下载
* @apiGroup listDb
* @apiVersion 2.0.0
*/
@RequestMapping(value = "/downTemplate")
public ResponseEntity<byte[]> downExcelTemplate() throws IOException {
ClassPathResource classPathResource = new ClassPathResource("excleTemplate/listDb.xlsx");
InputStream inputStream = classPathResource.getInputStream();
HttpHeaders headers = new HttpHeaders();
String fileName = new String("名单库导入模板.xlsx".getBytes("UTF-8"), "iso-8859-1");//为了解决中文名称乱码问题
headers.setContentDispositionFormData("attachment", fileName);
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
return new ResponseEntity<byte[]>(IOUtils.toByteArray(inputStream), headers, HttpStatus.CREATED);
}
/**
* @api {POST} /v2/datamanage/listmanage/upload/{userId} 4.07. 名单库导入
* @apiGroup listDb
* @apiVersion 2.0.0
*/
@RequestMapping(value = "/upload/{id}", method = RequestMethod.POST)
public ResponseEntityDto<Object> upload(HttpServletRequest request, @PathVariable Long id) throws Exception {
//将当前上下文初始化给CommonsMutipartResolver多部分解析器
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
if (!multipartResolver.isMultipart(request)) {
throw new ApiException(ErrorCodeEnum.FILE_UPLOAD_ERROR.getCode(), ErrorCodeEnum.FILE_UPLOAD_ERROR.getMessage());
}
String result = listDbService.upload(request, id);
return ResponseEntityBuilder.buildNormalResponse(result);
}
/**
* @api {POST} /v2/datamanage/listmanage/getListDbData 4.08. 查询名单库数据
* @apiGroup listDb
* @apiVersion 2.0.0
*/
@RequestMapping(value = "/getListDbData", method = RequestMethod.POST)
public ResponseEntityDto<Object> getListDbData(@RequestBody ListDbDataParam param) {
Map<String, Object> result = listDbService.getListDbData(param);
return ResponseEntityBuilder.buildNormalResponse(result);
}
}

View File

@@ -0,0 +1,98 @@
package com.fibo.ddp.strategyx.listlibrary.controller;
import com.baomidou.mybatisplus.extension.api.ApiController;
import com.fibo.ddp.common.model.common.ResponseEntityBuilder;
import com.fibo.ddp.common.model.common.ResponseEntityDto;
import com.fibo.ddp.common.model.common.enums.ErrorCodeEnum;
import com.fibo.ddp.common.model.common.requestParam.StatusParam;
import com.fibo.ddp.common.model.strategyx.listlibrary.ListDbVersion;
import com.fibo.ddp.common.service.monitor.logger.ArchivesLog;
import com.fibo.ddp.common.service.strategyx.listlibrary.ListDbVersionService;
import com.fibo.ddp.common.utils.constant.OpTypeConst;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* (ListDbVersion)表控制层
*/
@RestController
@RequestMapping("v3/listDb/version")
public class ListDbVersionController extends ApiController {
/**
* 服务对象
*/
@Resource
private ListDbVersionService versionService;
/**
* 查询指定版本下的内容
*
* @param versionId
* @return
*/
@PostMapping("/getVersionInfo/{versionId}")
public ResponseEntityDto getVersionInfo(@PathVariable Long versionId) {
ListDbVersion version = versionService.queryById(versionId);
return ResponseEntityBuilder.buildNormalResponse(version);
}
/**
* 新增一个版本
*
* @param version
* @return
*/
@PostMapping("/addVersion")
@ArchivesLog(operationType = OpTypeConst.ADD_BLACK_OR_WHITE_LIST_DB_VERSION)
public ResponseEntityDto addVersion(@RequestBody ListDbVersion version) {
boolean b = versionService.addVersion(version);
if (!b) {
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.PARAMS_EXCEPTION);
}
List<ListDbVersion> ruleVersionList = versionService.queryVersionListByListDbId(version.getListDbId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
/**
* 复制版本
*
* @param version
* @return
*/
@PostMapping("/copyVersion")
@ArchivesLog(operationType = OpTypeConst.COPY_BLACK_OR_WHITE_LIST_DB_VERSION)
public ResponseEntityDto copyVersion(@RequestBody ListDbVersion version) {
boolean b = versionService.copyVersion(version);
List<ListDbVersion> ruleVersionList = versionService.queryVersionListByListDbId(version.getListDbId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
/**
* 修改版本
*
* @param version
* @return
*/
@PostMapping("/updateVersion")
public ResponseEntityDto updateVersion(@RequestBody ListDbVersion version) {
boolean b = versionService.updateVersion(version);
List<ListDbVersion> ruleVersionList = versionService.queryVersionListByListDbId(version.getListDbId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
/**
* 修改状态
*
* @param StatusParam
* @return
*/
@RequestMapping(value = "/updateVersionStatus", method = RequestMethod.POST)
public ResponseEntityDto<Object> updateStatus(@RequestBody StatusParam StatusParam) {
versionService.updateStatus(StatusParam);
List<ListDbVersion> ruleVersionList = versionService.queryVersionListByListDbId(StatusParam.getStrategyId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
}

36
ddp-strategyx/pom.xml Normal file
View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ddp</artifactId>
<groupId>com.fibo.ddp</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ddp-strategyx</artifactId>
<packaging>pom</packaging>
<modules>
<module>guide-rule</module>
<module>script-rule</module>
<module>score-card</module>
<module>list-library</module>
<module>ai-model</module>
<module>decision-table</module>
<module>decision-tree</module>
<module>collection-rule</module>
<module>tag</module>
<module>data-clean</module>
</modules>
<dependencies>
<dependency>
<groupId>com.fibo.ddp</groupId>
<artifactId>ddp-common-service</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ddp-strategyx</artifactId>
<groupId>com.fibo.ddp</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ddp-strategyx-score-card</artifactId>
</project>

View File

@@ -0,0 +1,137 @@
package com.fibo.ddp.strategyx.scorecard.controller;
import com.fibo.ddp.common.model.common.ResponseEntityBuilder;
import com.fibo.ddp.common.model.common.ResponseEntityDto;
import com.fibo.ddp.common.model.common.requestParam.UpdateStatusParam;
import com.fibo.ddp.common.model.strategyx.scorecard.Scorecard;
import com.fibo.ddp.common.model.strategyx.scorecard.request.ListParam;
import com.fibo.ddp.common.model.strategyx.scorecard.vo.ScorecardVersionVo;
import com.fibo.ddp.common.model.strategyx.scorecard.vo.ScorecardVo;
import com.fibo.ddp.common.service.monitor.logger.ArchivesLog;
import com.fibo.ddp.common.service.strategyx.scorecard.ScorecardService;
import com.fibo.ddp.common.service.strategyx.scorecard.ScorecardVersionService;
import com.fibo.ddp.common.utils.constant.OpTypeConst;
import com.fibo.ddp.common.utils.util.strategyx.SectionUtils;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 评分卡(Scorecard) Controller
*/
@Controller("ScorecardControllerV3")
@RequestMapping("/v3/scorecard")
@ResponseBody
public class ScorecardController {
@Autowired
private ScorecardService scorecardService;
@Resource
private ScorecardVersionService versionService;
/**
* 查询指定版本下的内容
* @param versionId
* @return
*/
@PostMapping("/getScorecardVersionInfo/{versionId}")
public ResponseEntityDto getVersionInfo(@PathVariable Long versionId) {
ScorecardVersionVo version =versionService.queryById(versionId);
return ResponseEntityBuilder.buildNormalResponse(version);
}
/**
* 查询评分卡基本信息
* @param scorecardId
* @return
*/
@PostMapping("/getScorecardInfo/{scorecardId}")
public ResponseEntityDto getScorecardInfo(@PathVariable Long scorecardId) {
ScorecardVo scorecardVo = scorecardService.getScorecardInfo(scorecardId);
return ResponseEntityBuilder.buildNormalResponse(scorecardVo);
}
// 新增
@RequestMapping(value = "/add", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.SAVE_SCORECARD)
public ResponseEntityDto<Object> add(@RequestBody ScorecardVo scorecardVo) {
Scorecard scorecard = scorecardService.addScorecard(scorecardVo);
return ResponseEntityBuilder.buildNormalResponse(scorecard);
}
// 获取列表(分页信息)
@RequestMapping(value = "/list", method = RequestMethod.POST)
public ResponseEntityDto<Object> list(@RequestBody ListParam listParam) {
if (listParam.getValue() != null) {
listParam.setValue(listParam.getValue().trim()); // 去除 前后空格
}
PageInfo<Scorecard> pageInfo = scorecardService.getScorecardList(listParam);
Map<String, Object> bodyMap = new HashMap<>();
bodyMap.put("scorecardList", pageInfo.getList());
pageInfo.setList(null);
bodyMap.put("pageInfo", pageInfo);
return ResponseEntityBuilder.buildNormalResponse(bodyMap);
}
// 修改
@RequestMapping(value = "/update", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_SCORECARD)
public ResponseEntityDto<Object> update(@RequestBody ScorecardVo scorecardVo) {
Scorecard scorecard = scorecardService.updateScorecard(scorecardVo);
return ResponseEntityBuilder.buildNormalResponse(scorecard);
}
// 修改状态idsstatus
@RequestMapping(value = "/updateStatus", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_SCORECARD_STATUS)
public ResponseEntityDto<Object> updateStatus(@RequestBody UpdateStatusParam param) {
List<Long> ids = new ArrayList<>();
for (String s : param.getIds().split(",")) {
ids.add(Long.valueOf(s));
}
Integer status = param.getStatus();
scorecardService.updateScorecardStatus(ids, status);
return ResponseEntityBuilder.buildNormalResponse(null);
}
/**
* @api {POST} /v2/knowledge/scorecard/section 5.07. 区间校验
* @apiGroup scorecard
* @apiVersion 2.0.0
* @apiSuccess {String} status 状态: 1成功, 0失败
* @apiSuccess {String} data.result 1:区间有效、-1:区间不完整或有重叠
* @apiParamExample {json} 请求示例:
* ["(,1]","(1,6]","(6,15]","(15,20]","(20,)"]
* @apiSuccessExample {json} 成功返回数据示例:
* {"status":"1","error":"00000000","msg":null,"data":{"result":"1","msg":"区间有效!"}}
*/
@RequestMapping(value = "/section", method = RequestMethod.POST)
public ResponseEntityDto<Object> saveEngineNode(@RequestBody List<String> sections) {
// @RequestParam("sections[]") List<String> sections
Map<String, String> resultMap = new HashMap<String, String>();
// 验证区间完整性
if (SectionUtils.checkSectionValid(sections)) {
if (SectionUtils.checkSectionCoincide(sections)) {
resultMap.put("result", "-1");
resultMap.put("msg", "区间有重叠,请核准!");
} else {
resultMap.put("result", "1");
resultMap.put("msg", "区间有效!");
}
} else {
resultMap.put("result", "-1");
resultMap.put("msg", "区间不完整,请核准!");
}
return ResponseEntityBuilder.buildNormalResponse(resultMap);
}
}

View File

@@ -0,0 +1,88 @@
package com.fibo.ddp.strategyx.scorecard.controller;
import com.fibo.ddp.common.model.common.ResponseEntityBuilder;
import com.fibo.ddp.common.model.common.ResponseEntityDto;
import com.fibo.ddp.common.model.common.requestParam.StatusParam;
import com.fibo.ddp.common.model.strategyx.scorecard.vo.ScorecardVersionVo;
import com.fibo.ddp.common.service.monitor.logger.ArchivesLog;
import com.fibo.ddp.common.service.strategyx.scorecard.ScorecardVersionService;
import com.fibo.ddp.common.utils.constant.OpTypeConst;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@Controller("ScorecardVersionController")
@RequestMapping("/v3/scorecardVersion")
@ResponseBody
public class ScorecardVersionController {
@Resource
private ScorecardVersionService versionService;
/**
* 查询指定版本下的内容
* @param versionId
* @return
*/
@PostMapping("/getScorecardVersionInfo/{versionId}")
public ResponseEntityDto getScorecardVersionInfo(@PathVariable Long versionId) {
ScorecardVersionVo version =versionService.queryById(versionId);
return ResponseEntityBuilder.buildNormalResponse(version);
}
/**
* 新增一个版本
* @param version
* @return
*/
@PostMapping("/addScorecardVersion")
@ArchivesLog(operationType = OpTypeConst.ADD_SCORECARD_VERSION)
public ResponseEntityDto addScorecardVersion(@RequestBody ScorecardVersionVo version){
boolean b = versionService.addVersion(version);
List<ScorecardVersionVo> scorecardVersionList = versionService.queryVersionListByScorecardId(version.getScorecardId());
return ResponseEntityBuilder.buildNormalResponse(scorecardVersionList);
}
/**
* 复制版本
* @param version
* @return
*/
@PostMapping("/copyScorecardVersion")
@ArchivesLog(operationType = OpTypeConst.COPY_SCORECARD_VERSION)
public ResponseEntityDto copyScorecardVersion(@RequestBody ScorecardVersionVo version){
boolean b = versionService.copyVersion(version);
List<ScorecardVersionVo> scorecardVersionList = versionService.queryVersionListByScorecardId(version.getScorecardId());
return ResponseEntityBuilder.buildNormalResponse(scorecardVersionList);
}
/**
* 修改版本
* @param version
* @return
*/
@PostMapping("/updateScorecardVersion")
@ArchivesLog(operationType = OpTypeConst.UPDATE_SCORECARD_VERSION)
public ResponseEntityDto updateScorecardVersion(@RequestBody ScorecardVersionVo version){
boolean b = versionService.updateVersion(version);
List<ScorecardVersionVo> scorecardVersionList = versionService.queryVersionListByScorecardId(version.getScorecardId());
return ResponseEntityBuilder.buildNormalResponse(scorecardVersionList);
}
/**
* 修改状态
* @param statusParam
* @return
*/
@RequestMapping(value = "/updateScorecardVersionStatus", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_SCORECARD_VERSION_STATUS)
public ResponseEntityDto<Object> updateStatus(@RequestBody StatusParam statusParam) {
versionService.updateStatus(statusParam);
List<ScorecardVersionVo> scorecardVersionList = versionService.queryVersionListByScorecardId(statusParam.getStrategyId());
return ResponseEntityBuilder.buildNormalResponse(scorecardVersionList);
}
}

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ddp-strategyx</artifactId>
<groupId>com.fibo.ddp</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ddp-strategyx-script-rule</artifactId>
</project>

View File

@@ -0,0 +1,94 @@
package com.fibo.ddp.strategyx.scriptrule.controller;
import com.fibo.ddp.common.model.common.ResponseEntityBuilder;
import com.fibo.ddp.common.model.common.ResponseEntityDto;
import com.fibo.ddp.common.model.common.enums.ErrorCodeEnum;
import com.fibo.ddp.common.model.common.requestParam.StatusParam;
import com.fibo.ddp.common.model.strategyx.scriptrule.RuleScriptVersion;
import com.fibo.ddp.common.service.monitor.logger.ArchivesLog;
import com.fibo.ddp.common.service.strategyx.scriptrule.RuleScriptVersionService;
import com.fibo.ddp.common.utils.constant.OpTypeConst;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* (RuleScriptVersion)表控制层
*/
@RestController
@RequestMapping("/v3/ruleScriptVersion")
public class RuleScriptVersionController {
/**
* 服务对象
*/
@Resource
private RuleScriptVersionService ruleScriptVersionService;
/**
* 查询指定版本下的内容
* @param versionId
* @return
*/
@PostMapping("/getRuleScriptVersion/{versionId}")
public ResponseEntityDto getRuleVersionInfo(@PathVariable Long versionId) {
RuleScriptVersion version = ruleScriptVersionService.queryById(versionId);
return ResponseEntityBuilder.buildNormalResponse(version);
}
/**
* 新增一个版本
* @param version
* @return
*/
@PostMapping("/addRuleScriptVersion")
@ArchivesLog(operationType = OpTypeConst.SAVE_RULE_SCRIPT_VERSION)
public ResponseEntityDto addRuleVersion(@RequestBody RuleScriptVersion version){
boolean b = ruleScriptVersionService.addVersion(version);
if (!b){
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.PARAMS_EXCEPTION);
}
List< RuleScriptVersion> ruleVersionList = ruleScriptVersionService.queryVersionListByRuleId(version.getRuleId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
/**
* 复制版本
* @param version
* @return
*/
@PostMapping("/copyRuleScriptVersion")
@ArchivesLog(operationType = OpTypeConst.COPY_RULE_SCRIPT_VERSION)
public ResponseEntityDto copyRuleVersion(@RequestBody RuleScriptVersion version){
boolean b = ruleScriptVersionService.copyVersion(version);
List< RuleScriptVersion> ruleVersionList = ruleScriptVersionService.queryVersionListByRuleId(version.getRuleId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
/**
* 修改版本
* @param version
* @return
*/
@PostMapping("/updateRuleScriptVersion")
@ArchivesLog(operationType = OpTypeConst.UPDATE_RULE_SCRIPT_VERSION)
public ResponseEntityDto updateRuleVersion(@RequestBody RuleScriptVersion version){
boolean b = ruleScriptVersionService.updateVersion(version);
List<RuleScriptVersion> ruleVersionList = ruleScriptVersionService.queryVersionListByRuleId(version.getRuleId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
/**
* 修改状态
* @param statusParam
* @return
*/
@RequestMapping(value = "/updateRuleScriptVersionStatus", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_RULE_VERSION_SCRIPT_STATUS)
public ResponseEntityDto<Object> updateStatus(@RequestBody StatusParam statusParam) {
ruleScriptVersionService.updateStatus(statusParam);
List<RuleScriptVersion> ruleVersionList = ruleScriptVersionService.queryVersionListByRuleId(statusParam.getStrategyId());
return ResponseEntityBuilder.buildNormalResponse(ruleVersionList);
}
}

15
ddp-strategyx/tag/pom.xml Normal file
View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ddp-strategyx</artifactId>
<groupId>com.fibo.ddp</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ddp-strategyx-tag</artifactId>
</project>

View File

@@ -0,0 +1,94 @@
package com.fibo.ddp.strategyx.tag;
import com.fibo.ddp.common.model.common.ResponseEntityBuilder;
import com.fibo.ddp.common.model.common.ResponseEntityDto;
import com.fibo.ddp.common.model.common.enums.ErrorCodeEnum;
import com.fibo.ddp.common.model.common.requestParam.QueryListParam;
import com.fibo.ddp.common.model.common.requestParam.UpdateFolderParam;
import com.fibo.ddp.common.model.common.requestParam.UpdateStatusParam;
import com.fibo.ddp.common.model.strategyx.tag.Tag;
import com.fibo.ddp.common.service.monitor.logger.ArchivesLog;
import com.fibo.ddp.common.service.strategyx.tag.TagService;
import com.fibo.ddp.common.utils.constant.OpTypeConst;
import com.fibo.ddp.common.utils.exception.ApiException;
import com.fibo.ddp.common.utils.util.ResponseUtil;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
@RestController
@RequestMapping("/v3/strategyx/tag")
public class TagController {
@Autowired
private TagService tagService;
@ResponseBody
@RequestMapping(value = "getTagInfo/{id}", method = RequestMethod.POST)
public ResponseEntityDto<Tag> getTagInfo(@PathVariable Long id) {
if (id == null) {
throw new ApiException(ErrorCodeEnum.PARAMS_EXCEPTION.getCode(), ErrorCodeEnum.PARAMS_EXCEPTION.getMessage());
}
Tag tag = tagService.queryById(id);
ResponseEntityDto<Tag> result = ResponseEntityBuilder.buildNormalResponse(tag);
return result;
}
@ResponseBody
@RequestMapping(value = "getTagList", method = RequestMethod.POST)
public ResponseEntityDto<Tag> getTagList(@RequestBody QueryListParam<Tag> listParam) {
PageInfo pageInfo = tagService.queryByEntity(listParam);
Map<String, Object> responseMap = ResponseUtil.getResponseMap(pageInfo);
ResponseEntityDto ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(responseMap);
return ruleResponseEntityDto;
}
@ResponseBody
@RequestMapping(value = "addTag", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.ADD_TAG)
public ResponseEntityDto<Tag> addTag(@RequestBody Tag tag) {
Tag insert = tagService.insertTag(tag);
ResponseEntityDto<Tag> ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(insert);
return ruleResponseEntityDto;
}
@ResponseBody
@RequestMapping(value = "updateTag", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_TAG)
public ResponseEntityDto<Tag> updateTag(@RequestBody Tag tag) {
Tag update = tagService.updateTag(tag);
ResponseEntityDto<Tag> ruleResponseEntityDto = ResponseEntityBuilder.buildNormalResponse(update);
return ruleResponseEntityDto;
}
@ResponseBody
@RequestMapping(value = "updateTagStatus", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_TAG_STATUS)
public ResponseEntityDto updateStatus(@RequestBody UpdateStatusParam param) {
UpdateStatusParam.checkParam(param);
boolean updateResult = tagService.updateStatus(param.getList(), param.getStatus());
if (updateResult) {
return ResponseEntityBuilder.buildNormalResponse(updateResult);
} else {
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.TAG_UPDATE_ERROR);
}
}
@ResponseBody
@RequestMapping(value = "updateTagFolder", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_TAG_FOLDER)
public ResponseEntityDto updateFolder(@RequestBody UpdateFolderParam param) {
UpdateFolderParam.checkNotNull(param);
boolean updateResult = tagService.updateFolder(param.getIds(), param.getFolderId());
if (updateResult) {
return ResponseEntityBuilder.buildNormalResponse(updateResult);
} else {
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.SERVER_ERROR);
}
}
}

View File

@@ -0,0 +1,95 @@
package com.fibo.ddp.strategyx.tag;
import com.fibo.ddp.common.model.common.ResponseEntityBuilder;
import com.fibo.ddp.common.model.common.ResponseEntityDto;
import com.fibo.ddp.common.model.common.enums.ErrorCodeEnum;
import com.fibo.ddp.common.model.common.requestParam.StatusParam;
import com.fibo.ddp.common.model.strategyx.tag.TagVersion;
import com.fibo.ddp.common.service.monitor.logger.ArchivesLog;
import com.fibo.ddp.common.service.strategyx.tag.TagVersionService;
import com.fibo.ddp.common.utils.constant.OpTypeConst;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("/v3/strategyx/tagVersion")
public class TagVersionController {
/**
* 服务对象
*/
@Resource
private TagVersionService versionService;
/**
* 查询指定版本下的内容
*
* @param versionId
* @return
*/
@PostMapping("/getVersionInfo/{versionId}")
public ResponseEntityDto getVersionInfo(@PathVariable Long versionId) {
TagVersion version = versionService.queryById(versionId);
return ResponseEntityBuilder.buildNormalResponse(version);
}
/**
* 新增一个版本
*
* @param version
* @return
*/
@PostMapping("/addVersion")
@ArchivesLog(operationType = OpTypeConst.ADD_TAG_VERSION)
public ResponseEntityDto addVersion(@RequestBody TagVersion version) {
boolean b = versionService.addVersion(version);
if (!b) {
return ResponseEntityBuilder.buildErrorResponse(ErrorCodeEnum.PARAMS_EXCEPTION);
}
List<TagVersion> versionList = versionService.queryVersionListByTagId(version.getTagId());
return ResponseEntityBuilder.buildNormalResponse(versionList);
}
/**
* 复制版本
*
* @param version
* @return
*/
@PostMapping("/copyVersion")
@ArchivesLog(operationType = OpTypeConst.COPY_TAG_VERSION)
public ResponseEntityDto copyVersion(@RequestBody TagVersion version) {
boolean b = versionService.copyVersion(version);
List<TagVersion> versionList = versionService.queryVersionListByTagId(version.getTagId());
return ResponseEntityBuilder.buildNormalResponse(versionList);
}
/**
* 修改版本
*
* @param version
* @return
*/
@PostMapping("/updateVersion")
@ArchivesLog(operationType = OpTypeConst.UPDATE_TAG_VERSION)
public ResponseEntityDto updateVersion(@RequestBody TagVersion version) {
boolean b = versionService.updateVersion(version);
List<TagVersion> versionList = versionService.queryVersionListByTagId(version.getTagId());
return ResponseEntityBuilder.buildNormalResponse(versionList);
}
/**
* 修改状态
*
* @param statusParam
* @return
*/
@RequestMapping(value = "/updateVersionStatus", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_TAG_VERSION_STATUS)
public ResponseEntityDto<Object> updateStatus(@RequestBody StatusParam statusParam) {
versionService.updateStatus(statusParam);
List<TagVersion> versionList = versionService.queryVersionListByTagId(statusParam.getStrategyId());
return ResponseEntityBuilder.buildNormalResponse(versionList);
}
}