Bladeren bron

feat: 添加风险规则新增,查询功能

zhaomuran 7 maanden geleden
bovenliggende
commit
0e3ca19bf3

+ 51 - 0
bound-link-api/blink-management/src/main/java/com/cloud/sa/management/controller/BlinkRiskRuleController.java

@@ -0,0 +1,51 @@
+package com.cloud.sa.management.controller;
+
+import com.cloud.sa.base.common.domain.ResponseDTO;
+import com.cloud.sa.management.domain.dto.BlinkRiskRuleCategoryDTO;
+import com.cloud.sa.management.domain.dto.BlinkRiskRuleDTO;
+import com.cloud.sa.management.domain.form.BlinkRiskRuleForm;
+import com.cloud.sa.management.service.BlinkRiskRuleService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+
+@RestController
+@Tag(name = "风险规则")
+public class BlinkRiskRuleController {
+
+    @Resource
+    private BlinkRiskRuleService blinkRiskRuleService;
+
+    @Operation(summary = "新增风险")
+    @PostMapping("/supports/risk/add")
+    public ResponseDTO<String> addBlinkRiskRule(@RequestBody @Valid BlinkRiskRuleForm blinkRiskRuleForm){
+        return blinkRiskRuleService.add(blinkRiskRuleForm);
+    }
+
+    @Operation(summary = "查询所有风险分类")
+    @GetMapping("/supports/risk/selectAllCategory")
+    public ResponseDTO<List<BlinkRiskRuleCategoryDTO>> selectAllCategory(){
+        return blinkRiskRuleService.selectAllCategory();
+    }
+
+    @Operation(summary = "通过风险维度查询风险")
+    @GetMapping("/supports/risk/selectBy/{riskDimension}")
+    public ResponseDTO<List<BlinkRiskRuleDTO>> selectBlinkRiskRule(@PathVariable("riskDimension") String riskDimension){
+        return blinkRiskRuleService.selectList(riskDimension);
+    }
+
+    @Operation(summary = "查询单个风险规则")
+    @GetMapping("/supports/risk/selectOne/{id}")
+    public ResponseDTO<BlinkRiskRuleDTO> selectPage(@PathVariable("id") Integer riskId) {
+        return blinkRiskRuleService.selectOne(riskId);
+    }
+
+
+
+
+
+}

+ 137 - 0
bound-link-api/blink-management/src/main/java/com/cloud/sa/management/domain/dataobject/BlinkRiskRuleDO.java

@@ -0,0 +1,137 @@
+package com.cloud.sa.management.domain.dataobject;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.cloud.sa.base.common.annoation.DataAdaptorMapping;
+import com.cloud.sa.base.common.json.deserializer.DictValueVoDeserializer;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import lombok.Data;
+
+@Data
+@TableName("blink_risk_rule")
+public class BlinkRiskRuleDO {
+
+    /**
+     * risk_id
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer riskId;
+
+    /**
+     * 风险维度
+     */
+    @JsonDeserialize(using = DictValueVoDeserializer.class)
+    @DataAdaptorMapping(type = "dict", value = "BLINK_RISK_DIMENSION")
+    private String riskDimension;
+
+    /**
+     * 风险模板
+     */
+    @JsonDeserialize(using = DictValueVoDeserializer.class)
+    @DataAdaptorMapping(type = "dict", value = "BLINK_RISK_MODEL")
+    private String riskModel;
+
+    /**
+     * 风险指标
+     */
+    private String riskMetrics;
+
+    /**
+     * 指标定义
+     */
+    private String definedMetrics;
+
+    /**
+     *条件运算符
+     */
+    @JsonDeserialize(using = DictValueVoDeserializer.class)
+    @DataAdaptorMapping(type = "dict", value = "BLINK_CONDITIONAL_OPERATORS")
+    private String operator;
+
+    /**
+     *条件值
+     */
+    private String conditionalValue;
+
+    /**
+     *提醒方式
+     */
+    @JsonDeserialize(using = DictValueVoDeserializer.class)
+    @DataAdaptorMapping(type = "dict", value = "BLINK_REMIND_WAY")
+    private String remindWay;
+
+    /**
+     *提醒时间
+     */
+    private String remindTime;
+
+    /**
+     *风险等级
+     */
+    @JsonDeserialize(using = DictValueVoDeserializer.class)
+    @DataAdaptorMapping(type = "dict", value = "BLINK_RISK_GRADE")
+    private String riskGrade;
+
+    /**
+     *是否启用(1:启用、2:不启用)
+     */
+    private String isEnable;
+
+    /**
+     *提醒人
+     */
+    private String remindPeople;
+
+    /**
+     *风险标题
+     */
+    private String riskTitle;
+
+    /**
+     *风险描述
+     */
+    private String riskDescription;
+
+    /**
+     *是否显示门户页面
+     */
+    private String isPortalPage;
+
+    /**
+     *显示门户页面
+     */
+    @JsonDeserialize(using = DictValueVoDeserializer.class)
+    @DataAdaptorMapping(type = "dict", value = "BLINK_PORTAL_PAGE")
+    private String portalPage;
+
+    /**
+     *统计数据
+     */
+    @JsonDeserialize(using = DictValueVoDeserializer.class)
+    @DataAdaptorMapping(type = "dict", value = "BLINK_COUNT_DATA")
+    private String countData;
+
+    /**
+     *显示单位
+     */
+    @JsonDeserialize(using = DictValueVoDeserializer.class)
+    @DataAdaptorMapping(type = "dict", value = "BLINK_DISPLAY_UNIT")
+    private String unit;
+
+    /**
+     *统计字段
+     */
+    private String countField;
+
+    /**
+     *是否发起风险任务
+     */
+    private String isLaunchRiskTask;
+
+    /**
+     *任务整改期限(天)
+     */
+    private Integer term;
+
+}

+ 24 - 0
bound-link-api/blink-management/src/main/java/com/cloud/sa/management/domain/dto/BlinkRiskRuleCategoryDTO.java

@@ -0,0 +1,24 @@
+package com.cloud.sa.management.domain.dto;
+
+import com.cloud.sa.base.common.annoation.DataAdaptorMapping;
+import com.cloud.sa.base.common.json.deserializer.DictValueVoDeserializer;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import lombok.Data;
+
+import java.util.List;
+/**
+ * 树状结构返回
+ * */
+@Data
+public class BlinkRiskRuleCategoryDTO {
+
+    /**
+     * 风险维度
+     */
+    @JsonDeserialize(using = DictValueVoDeserializer.class)
+    @DataAdaptorMapping(type = "dict", value = "BLINK_RISK_DIMENSION")
+    private String parent;
+
+    private List<BlinkRiskRuleDTO> sonList;
+
+}

+ 57 - 0
bound-link-api/blink-management/src/main/java/com/cloud/sa/management/domain/dto/BlinkRiskRuleDTO.java

@@ -0,0 +1,57 @@
+package com.cloud.sa.management.domain.dto;
+
+import lombok.Data;
+
+@Data
+public class BlinkRiskRuleDTO {
+
+    /**
+     * risk_id
+     */
+    private Integer riskId;
+
+    /**
+     * 风险维度
+     */
+    private String riskDimension;
+
+    /**
+     * 风险指标
+     */
+    private String riskMetrics;
+
+    /**
+     * 指标定义
+     */
+    private String definedMetrics;
+
+    /**
+     *条件运算符
+     */
+    private String operator;
+
+    /**
+     *条件值
+     */
+    private String conditionalValue;
+
+    /**
+     *提醒方式
+     */
+    private String remindWay;
+
+    /**
+     *提醒时间
+     */
+    private String remindTime;
+
+    /**
+     *风险等级
+     */
+    private String riskGrade;
+
+    /**
+     *是否启用(1:启用、2:不启用)
+     */
+    private String isEnable;
+}

+ 126 - 0
bound-link-api/blink-management/src/main/java/com/cloud/sa/management/domain/form/BlinkRiskRuleForm.java

@@ -0,0 +1,126 @@
+package com.cloud.sa.management.domain.form;
+
+import com.cloud.sa.base.common.annoation.DataAdaptorMapping;
+import com.cloud.sa.base.common.json.deserializer.DictValueVoDeserializer;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import lombok.Data;
+
+@Data
+public class BlinkRiskRuleForm {
+
+    /**
+     * 风险维度
+     */
+    @JsonDeserialize(using = DictValueVoDeserializer.class)
+    @DataAdaptorMapping(type = "dict", value = "BLINK_RISK_DIMENSION")
+    private String riskDimension;
+
+    /**
+     * 风险模板
+     */
+    @JsonDeserialize(using = DictValueVoDeserializer.class)
+    @DataAdaptorMapping(type = "dict", value = "BLINK_RISK_MODEL")
+    private String riskModel;
+
+    /**
+     * 风险指标
+     */
+    private String riskMetrics;
+
+    /**
+     * 指标定义
+     */
+    private String definedMetrics;
+
+    /**
+     *条件运算符
+     */
+    @JsonDeserialize(using = DictValueVoDeserializer.class)
+    @DataAdaptorMapping(type = "dict", value = "BLINK_CONDITIONAL_OPERATORS")
+    private String operator;
+
+    /**
+     *条件值
+     */
+    private String conditionalValue;
+
+    /**
+     *提醒方式
+     */
+    @JsonDeserialize(using = DictValueVoDeserializer.class)
+    @DataAdaptorMapping(type = "dict", value = "BLINK_REMIND_WAY")
+    private String remindWay;
+
+    /**
+     *提醒时间
+     */
+    private String remindTime;
+
+    /**
+     *风险等级
+     */
+    @JsonDeserialize(using = DictValueVoDeserializer.class)
+    @DataAdaptorMapping(type = "dict", value = "BLINK_RISK_GRADE")
+    private String riskGrade;
+
+    /**
+     *是否启用(true:启用、false:不启用)
+     */
+    private String isEnable;
+
+    /**
+     *提醒人
+     */
+    private String remindPeople;
+
+    /**
+     *风险标题
+     */
+    private String riskTitle;
+
+    /**
+     *风险描述
+     */
+    private String riskDescription;
+
+    /**
+     *是否显示门户页面
+     */
+    private String isPortalPage;
+
+    /**
+     *显示门户页面
+     */
+    @JsonDeserialize(using = DictValueVoDeserializer.class)
+    @DataAdaptorMapping(type = "dict", value = "BLINK_PORTAL_PAGE")
+    private String portalPage;
+
+    /**
+     *统计数据
+     */
+    @JsonDeserialize(using = DictValueVoDeserializer.class)
+    @DataAdaptorMapping(type = "dict", value = "BLINK_COUNT_DATA")
+    private String countData;
+
+    /**
+     *显示单位
+     */
+    @JsonDeserialize(using = DictValueVoDeserializer.class)
+    @DataAdaptorMapping(type = "dict", value = "BLINK_DISPLAY_UNIT")
+    private String unit;
+
+    /**
+     *统计字段
+     */
+    private String countField;
+
+    /**
+     *是否发起风险任务
+     */
+    private String isLaunchRiskTask;
+
+    /**
+     *任务整改期限(天)
+     */
+    private Integer term;
+}

+ 107 - 0
bound-link-api/blink-management/src/main/java/com/cloud/sa/management/manager/BlinkRiskRuleServiceImpl.java

@@ -0,0 +1,107 @@
+package com.cloud.sa.management.manager;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.cloud.sa.base.common.code.UserErrorCode;
+import com.cloud.sa.base.common.domain.ResponseDTO;
+import com.cloud.sa.management.domain.dataobject.BlinkRiskRuleDO;
+import com.cloud.sa.management.domain.dto.BlinkRiskRuleCategoryDTO;
+import com.cloud.sa.management.domain.dto.BlinkRiskRuleDTO;
+import com.cloud.sa.management.domain.form.BlinkRiskRuleForm;
+import com.cloud.sa.management.objectmapper.BlinkRiskRuleMapper;
+import com.cloud.sa.management.repository.BlinkRiskRuleRepository;
+import com.cloud.sa.management.service.BlinkRiskRuleService;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+@Service
+public class BlinkRiskRuleServiceImpl implements BlinkRiskRuleService {
+
+
+    @Resource
+    private BlinkRiskRuleRepository blinkRiskRuleRepository;
+
+    @Resource
+    private BlinkRiskRuleMapper riskMapper;
+
+
+    @Override
+    public ResponseDTO<String> add(BlinkRiskRuleForm blinkRiskRuleForm) {
+        QueryWrapper<BlinkRiskRuleDO> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("risk_metrics", blinkRiskRuleForm.getRiskMetrics());
+        BlinkRiskRuleDO result = blinkRiskRuleRepository.selectOne(queryWrapper);
+        if (null != result){
+            return ResponseDTO.error(UserErrorCode.ALREADY_EXIST);
+        }
+
+        BlinkRiskRuleDO blinkRiskRuleDO = new BlinkRiskRuleDO();
+
+        riskMapper.blinkRiskRuleFormCopyBlinkRiskRuleDO(blinkRiskRuleForm, blinkRiskRuleDO);
+        blinkRiskRuleRepository.insert(blinkRiskRuleDO);
+        return ResponseDTO.ok();
+    }
+
+    @Override
+    public ResponseDTO<List<BlinkRiskRuleDTO>> selectList(String riskDimension) {
+        QueryWrapper<BlinkRiskRuleDO> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("risk_dimension", riskDimension);
+        List<BlinkRiskRuleDO> blinkRiskRuleDOList = blinkRiskRuleRepository.selectList(queryWrapper);
+        if (null == blinkRiskRuleDOList){
+            return ResponseDTO.error(UserErrorCode.ALREADY_NOT_EXIST);
+        }
+
+        List<BlinkRiskRuleDTO> blinkRiskRuleDTOList = new ArrayList<>();
+        for (BlinkRiskRuleDO blinkRiskRuleDO : blinkRiskRuleDOList){
+            BlinkRiskRuleDTO blinkRiskRuleDTO = new BlinkRiskRuleDTO();
+            riskMapper.blinkRiskRuleDOCopyBlinkRiskRuleDTO(blinkRiskRuleDO, blinkRiskRuleDTO);
+            blinkRiskRuleDTOList.add(blinkRiskRuleDTO);
+        }
+        return ResponseDTO.ok(blinkRiskRuleDTOList);
+    }
+
+    @Override
+    public ResponseDTO<List<BlinkRiskRuleCategoryDTO>> selectAllCategory() {
+        List<BlinkRiskRuleDO> blinkRiskRuleDOList = blinkRiskRuleRepository.selectList(null);
+        if (null == blinkRiskRuleDOList){
+            return ResponseDTO.error(UserErrorCode.ALREADY_NOT_EXIST);
+        }
+
+        Set<String> riskDimensions = blinkRiskRuleDOList.stream().map(b -> b.getRiskDimension()).collect(Collectors.toSet());
+
+        List<BlinkRiskRuleCategoryDTO> blinkRiskRuleCategoryDTOList = new ArrayList<>();
+        for (String riskDimension : riskDimensions){
+            BlinkRiskRuleCategoryDTO blinkRiskRuleCategoryDTO = new BlinkRiskRuleCategoryDTO();
+            blinkRiskRuleCategoryDTO.setParent(riskDimension);
+            QueryWrapper<BlinkRiskRuleDO> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("risk_dimension", riskDimension);
+            List<BlinkRiskRuleDO> result = blinkRiskRuleRepository.selectList(queryWrapper);
+            List<BlinkRiskRuleDTO> blinkRiskRuleDTOList = new ArrayList<>();
+            for (BlinkRiskRuleDO blinkRiskRuleDO : result){
+                BlinkRiskRuleDTO blinkRiskRuleDTO = new BlinkRiskRuleDTO();
+                riskMapper.blinkRiskRuleDOCopyBlinkRiskRuleDTO(blinkRiskRuleDO, blinkRiskRuleDTO);
+                blinkRiskRuleDTOList.add(blinkRiskRuleDTO);
+            }
+            blinkRiskRuleCategoryDTO.setSonList(blinkRiskRuleDTOList);
+            blinkRiskRuleCategoryDTOList.add(blinkRiskRuleCategoryDTO);
+        }
+        return ResponseDTO.ok(blinkRiskRuleCategoryDTOList);
+
+    }
+
+    @Override
+    public ResponseDTO<BlinkRiskRuleDTO> selectOne(Integer riskId) {
+        QueryWrapper<BlinkRiskRuleDO> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("risk_id", riskId);
+        BlinkRiskRuleDO blinkRiskRuleDO = blinkRiskRuleRepository.selectOne(queryWrapper);
+        if (null == blinkRiskRuleDO){
+            return ResponseDTO.error(UserErrorCode.ALREADY_NOT_EXIST);
+        }
+
+        BlinkRiskRuleDTO blinkRiskRuleDTO = new BlinkRiskRuleDTO();
+        riskMapper.blinkRiskRuleDOCopyBlinkRiskRuleDTO(blinkRiskRuleDO, blinkRiskRuleDTO);
+        return ResponseDTO.ok(blinkRiskRuleDTO);
+    }
+}

+ 18 - 0
bound-link-api/blink-management/src/main/java/com/cloud/sa/management/objectmapper/BlinkRiskRuleMapper.java

@@ -0,0 +1,18 @@
+package com.cloud.sa.management.objectmapper;
+
+import com.cloud.sa.management.domain.dataobject.BlinkRiskRuleDO;
+import com.cloud.sa.management.domain.dto.BlinkRiskRuleDTO;
+import com.cloud.sa.management.domain.form.BlinkRiskRuleForm;
+import org.mapstruct.Mapper;
+import org.mapstruct.MappingTarget;
+
+@Mapper(componentModel = "spring")
+public interface BlinkRiskRuleMapper {
+
+
+    void blinkRiskRuleFormCopyBlinkRiskRuleDO(BlinkRiskRuleForm blinkRiskRuleForm,
+                                    @MappingTarget BlinkRiskRuleDO blinkRiskRuleDO);
+
+    void blinkRiskRuleDOCopyBlinkRiskRuleDTO(BlinkRiskRuleDO blinkRiskRuleDO,
+                                             @MappingTarget BlinkRiskRuleDTO blinkRiskRuleDTO);
+}

+ 11 - 0
bound-link-api/blink-management/src/main/java/com/cloud/sa/management/repository/BlinkRiskRuleRepository.java

@@ -0,0 +1,11 @@
+package com.cloud.sa.management.repository;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cloud.sa.management.domain.dataobject.BlinkRiskRuleDO;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Component;
+
+@Mapper
+@Component
+public interface BlinkRiskRuleRepository extends BaseMapper<BlinkRiskRuleDO> {
+}

+ 20 - 0
bound-link-api/blink-management/src/main/java/com/cloud/sa/management/service/BlinkRiskRuleService.java

@@ -0,0 +1,20 @@
+package com.cloud.sa.management.service;
+
+import com.cloud.sa.base.common.domain.ResponseDTO;
+import com.cloud.sa.management.domain.dto.BlinkRiskRuleCategoryDTO;
+import com.cloud.sa.management.domain.dto.BlinkRiskRuleDTO;
+import com.cloud.sa.management.domain.form.BlinkRiskRuleForm;
+
+import java.util.List;
+
+public interface BlinkRiskRuleService {
+
+    ResponseDTO<String> add(BlinkRiskRuleForm blinkRiskRuleForm);
+
+    ResponseDTO<List<BlinkRiskRuleDTO>> selectList(String riskDimension);
+
+    ResponseDTO<List<BlinkRiskRuleCategoryDTO>> selectAllCategory();
+
+    ResponseDTO<BlinkRiskRuleDTO> selectOne(Integer riskId);
+
+}