소스 검색

feat: 修改风控配置增加留痕记录

hidewnd 1 개월 전
부모
커밋
e2f9e88916

+ 18 - 0
yt-agent/agent-service/src/main/java/com/ytpm/dao/RiskMapper.java

@@ -6,13 +6,16 @@ import com.ytpm.agent.model.YtPlatformDeblocking;
 import com.ytpm.agent.view.AgentAppClassView;
 import com.ytpm.risk.model.YtRiskConfig;
 import com.ytpm.risk.model.YtRiskTemplate;
+import com.ytpm.risk.model.YtRiskTemplateLog;
 import com.ytpm.risk.param.RiskBannedListParam;
 import com.ytpm.risk.param.RiskConfigParam;
 import com.ytpm.risk.param.RiskDeblockingListParam;
 import com.ytpm.risk.param.RiskRelativeAppParam;
+import com.ytpm.risk.param.RiskTemplateLogParam;
 import com.ytpm.risk.view.RiskBannedListView;
 import com.ytpm.risk.view.RiskConfigListView;
 import com.ytpm.risk.view.RiskDeblockingListView;
+import com.ytpm.risk.view.RiskTemplateLogView;
 import com.ytpm.risk.view.RiskTemplateView;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -113,4 +116,19 @@ public interface RiskMapper {
      * 根据APP 查询当月的封禁数据
      */
     List<YtPlatformBanned> queryMonthBanned(@Param("appIdList") List<String> appIdList);
+
+    /**
+     * 根据模板ID查询模板配置信息
+     */
+    List<YtRiskConfig> selectRiskConfig(@Param("templateId") String templateId);
+
+    /**
+     * 新增模板配置修改记录
+     */
+    void addRiskTemplateLog(@Param("logs") List<YtRiskTemplateLog> logs);
+
+    /**
+     * 查询风控配置修改记录
+     */
+    List<RiskTemplateLogView> selectTemplateLog(RiskTemplateLogParam param);
 }

+ 20 - 4
yt-agent/agent-service/src/main/java/com/ytpm/service/impl/RiskServiceImpl.java

@@ -23,9 +23,7 @@ import com.ytpm.app.param.AppUserParam;
 import com.ytpm.custom.CustomField;
 import com.ytpm.dao.AgentAppMapper;
 import com.ytpm.dao.AgentDictMapper;
-import com.ytpm.dao.AppMapper;
 import com.ytpm.dao.RiskMapper;
-import com.ytpm.general.PageMeta;
 import com.ytpm.general.RepMessage;
 import com.ytpm.general.Result;
 import com.ytpm.general.ResultTable;
@@ -33,6 +31,7 @@ import com.ytpm.handle.CustomerException;
 import com.ytpm.risk.enums.BannedTypeEnum;
 import com.ytpm.risk.model.YtRiskConfig;
 import com.ytpm.risk.model.YtRiskTemplate;
+import com.ytpm.risk.model.YtRiskTemplateLog;
 import com.ytpm.risk.param.RiskBannedListParam;
 import com.ytpm.risk.param.RiskBannedParam;
 import com.ytpm.risk.param.RiskConfigListParam;
@@ -50,13 +49,11 @@ import com.ytpm.util.RedisService;
 import com.ytpm.utils.FeignClientInvoker;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.extern.slf4j.Slf4j;
-import org.aspectj.weaver.loadtime.Agent;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.lang.reflect.Field;
-import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -272,9 +269,15 @@ public class RiskServiceImpl implements RiskService {
         if(Objects.isNull(old)){
             return Result.resultErr(RepMessage.OBJECT_NOT_EXIST);
         }
+        // 获取原有配置信息
+        List<YtRiskConfig> configs = riskMapper.selectRiskConfig(param.getTemplateId());
+        Map<String, String> valueMap = configs.stream().collect(Collectors.toMap(
+                YtRiskConfig::getConfigId, YtRiskConfig::getConfigVal,
+                (o1, o2) -> o2));
         //修改配置值
         List<RiskConfigListParam> configList = param.getConfigList();
         StringBuilder content = new StringBuilder();
+        List<YtRiskTemplateLog> logs = new ArrayList<>();
         for (RiskConfigListParam listParam : configList) {
             YtRiskConfig config = new YtRiskConfig();
             config.setConfigId(listParam.getConfigId());
@@ -284,6 +287,18 @@ public class RiskServiceImpl implements RiskService {
             if(CharSequenceUtil.isNotBlank(format)){
                 content.append(format).append(",");
             }
+            String oldValue = valueMap.get(listParam.getConfigId());
+            if (!StrUtil.emptyIfNull(oldValue).equals(StrUtil.emptyIfNull(listParam.getConfigVal()))) {
+                YtRiskTemplateLog log = new  YtRiskTemplateLog();;
+                log.setTemplateId(old.getTemplateId());
+                log.setTemplateCode(old.getTemplateCode());
+                log.setConfigId(listParam.getConfigId());
+                log.setOldValue(oldValue);
+                log.setNewValue(listParam.getConfigVal());
+                log.setOperator(param.getChannelId());
+                log.setOperatorName(param.getChannelId());
+                logs.add(log);
+            }
         }
         //同步修改配置模版内容
         YtRiskTemplate template = new YtRiskTemplate();
@@ -292,6 +307,7 @@ public class RiskServiceImpl implements RiskService {
         template.setUpdateTime(new Date());
         template.setUpdateUserId(param.getChannelId());
         riskMapper.updateByTempId(template);
+        riskMapper.addRiskTemplateLog(logs);
         return Result.resultOk(RepMessage.MODIFY_SUCCESS);
     }
 

+ 57 - 0
yt-agent/agent-service/src/main/resources/mapper/RiskMapper.xml

@@ -312,6 +312,32 @@
             )
         </foreach>
     </insert>
+    <insert id="addRiskTemplateLog">
+        insert into yt_risk_template_log
+        (
+        template_id,
+        config_id,
+        template_code,
+        old_value,
+        new_value,
+        operator,
+        operator_time,
+        operator_name
+        )
+        values
+        <foreach collection="logs" item="item" separator="," index="index">
+        (
+            #{item.templateId},
+            #{item.configId},
+            #{item.templateCode},
+            #{item.oldValue},
+            #{item.newValue},
+            #{item.operator},
+            now(),
+            #{item.operatorName}
+        )
+        </foreach>
+    </insert>
 
     <select id="selectOneTemplate" resultType="com.ytpm.risk.model.YtRiskTemplate">
         select
@@ -432,4 +458,35 @@
             </if>
         </where>
     </select>
+    <select id="selectRiskConfig" resultType="com.ytpm.risk.model.YtRiskConfig">
+        SELECT
+            rt.template_id,
+            rt.template_code,
+            rt.template_name,
+            rt.template_content,
+            rt.effect_node,
+            rt.enabled,
+            rc.config_id,
+            rc.field_name,
+            rc.field_desc,
+            rc.config_type,
+            rc.config_val,
+            rc.multy
+        FROM yt_risk_template rt
+        LEFT JOIN yt_risk_template_config rtc ON rt.template_id = rtc.template_id
+        LEFT JOIN yt_risk_config rc ON rtc.config_id = rc.config_id
+        WHERE rt.template_id = #{templateId}
+    </select>
+    <select id="selectTemplateLog" resultType="com.ytpm.risk.view.RiskTemplateLogView">
+        select config_id, template_code, old_value, new_value, operator, operator_time, operator_name
+        from yt_risk_template_log
+        where template_id = #{templateId}
+        <if test="configId != null">
+            and config_id = #{configId}
+        </if>
+        <if test="operator != null">
+            and operator = #{operator}
+        </if>
+        order by operator_time desc
+    </select>
 </mapper>

+ 45 - 0
yt-common/src/main/java/com/ytpm/risk/model/YtRiskTemplateLog.java

@@ -0,0 +1,45 @@
+package com.ytpm.risk.model;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+/**
+ * @author lih
+ * @date 2025-09-18 17:30
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel("风控配置修改记录表")
+public class YtRiskTemplateLog {
+
+    @ApiModelProperty("模板ID")
+    private String templateId;
+
+    @ApiModelProperty("配置ID")
+    private String configId;
+
+    @ApiModelProperty("风控编码")
+    private String templateCode;
+
+    @ApiModelProperty("原风控值")
+    private String oldValue;
+
+    @ApiModelProperty("修改后风控值")
+    private String newValue;
+
+    @ApiModelProperty("操作人")
+    private String operator;
+
+    @ApiModelProperty("操作人姓名")
+    private String operatorName;
+
+    @ApiModelProperty("操作时间")
+    private Date operatorTime;
+}

+ 36 - 0
yt-common/src/main/java/com/ytpm/risk/param/RiskTemplateLogParam.java

@@ -0,0 +1,36 @@
+package com.ytpm.risk.param;
+
+
+import com.ytpm.general.PageMeta;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @author lih
+ * @date 2025-09-19 11:09
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel("风控配置修改记录入参")
+@EqualsAndHashCode(callSuper = true)
+public class RiskTemplateLogParam extends PageMeta implements Serializable {
+
+    @ApiModelProperty("模板ID")
+    private String templateId;
+
+    @ApiModelProperty("配置ID")
+    private String configId;
+
+    @ApiModelProperty("是否查询自身记录 (1是 0 否)")
+    private Integer querySelf;
+
+    @ApiModelProperty("操作人Id")
+    private String operator;
+}

+ 44 - 0
yt-common/src/main/java/com/ytpm/risk/view/RiskTemplateLogView.java

@@ -0,0 +1,44 @@
+package com.ytpm.risk.view;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author lih
+ * @date 2025-09-19 11:06
+ */
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel("易推风控配置修改记录")
+public class RiskTemplateLogView implements Serializable {
+
+    @ApiModelProperty("配置ID")
+    private String configId;
+
+    @ApiModelProperty("风控编码")
+    private String templateCode;
+
+    @ApiModelProperty("原风控值")
+    private String oldValue;
+
+    @ApiModelProperty("修改后风控值")
+    private String newValue;
+
+    @ApiModelProperty("操作人")
+    private String operator;
+
+    @ApiModelProperty("操作人姓名")
+    private String operatorName;
+
+    @ApiModelProperty("操作时间")
+    private Date operatorTime;
+}