前后端分目录
This commit is contained in:
14
ddp/ddp-strategyx/ai-model/pom.xml
Normal file
14
ddp/ddp-strategyx/ai-model/pom.xml
Normal 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>
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
15
ddp/ddp-strategyx/collection-rule/pom.xml
Normal file
15
ddp/ddp-strategyx/collection-rule/pom.xml
Normal 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>
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
15
ddp/ddp-strategyx/data-clean/pom.xml
Normal file
15
ddp/ddp-strategyx/data-clean/pom.xml
Normal 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>
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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";
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
15
ddp/ddp-strategyx/decision-table/pom.xml
Normal file
15
ddp/ddp-strategyx/decision-table/pom.xml
Normal 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>
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
15
ddp/ddp-strategyx/decision-tree/pom.xml
Normal file
15
ddp/ddp-strategyx/decision-tree/pom.xml
Normal 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>
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
15
ddp/ddp-strategyx/guide-rule/pom.xml
Normal file
15
ddp/ddp-strategyx/guide-rule/pom.xml
Normal 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>
|
||||
@@ -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] 状态id(0 :停用 ,1 : 启用,-1:删除)
|
||||
* @apiParam (ruleInfo) {Integer} [type] 规则类型(0 : 系统的规则 1:组织的规则 2: 引擎的规则)
|
||||
* @apiParam (ruleInfo) {Integer} [isNon] 逻辑关系“非”,0:否 ,1:是
|
||||
* @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] 状态id(0 :停用 ,1 : 启用,-1:删除)默认启用
|
||||
* @apiParam {Integer} [type] 规则类型(0 : 系统的规则 1:组织的规则 2: 引擎的规则)默认组织规则
|
||||
* @apiParam {Integer} [isNon] 逻辑关系“非”,0:否 ,1:是
|
||||
* @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 状态id(0 :停用 ,1 : 启用,-1:删除)
|
||||
* @apiParam {Integer} type 规则类型(0 : 系统的规则 1:组织的规则 2: 引擎的规则)
|
||||
* @apiParam {Integer} [isNon] 逻辑关系“非”,0:否 ,1:是
|
||||
* @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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
15
ddp/ddp-strategyx/list-library/pom.xml
Normal file
15
ddp/ddp-strategyx/list-library/pom.xml
Normal 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>
|
||||
@@ -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 查询字段间逻辑,and(1),or(0)
|
||||
* @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 查询字段间逻辑,and(1),or(0)
|
||||
* @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 查询字段间逻辑,and(1),or(0)
|
||||
* @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 查询字段间逻辑,and(1),or(0)
|
||||
* @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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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 查询字段间逻辑,and(1),or(0)
|
||||
* @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 查询字段间逻辑,and(1),or(0)
|
||||
* @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 查询字段间逻辑,and(1),or(0)
|
||||
* @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 查询字段间逻辑,and(1),or(0)
|
||||
* @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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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/ddp-strategyx/pom.xml
Normal file
36
ddp/ddp-strategyx/pom.xml
Normal 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>
|
||||
15
ddp/ddp-strategyx/score-card/pom.xml
Normal file
15
ddp/ddp-strategyx/score-card/pom.xml
Normal 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>
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
// 修改状态(ids,status)
|
||||
@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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
15
ddp/ddp-strategyx/script-rule/pom.xml
Normal file
15
ddp/ddp-strategyx/script-rule/pom.xml
Normal 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>
|
||||
@@ -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/ddp-strategyx/tag/pom.xml
Normal file
15
ddp/ddp-strategyx/tag/pom.xml
Normal 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>
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user