Quellcode durchsuchen

风控优化,触发风控规则时保存记录
由于app观看广告记录独立事务,那746规则触发时无需计算用户价值直接获取广告记录即可

marxjaw vor 4 Monaten
Ursprung
Commit
18db8641fb

+ 4 - 8
yt-risk/risk-manage/src/main/java/com/ytpm/service/impl/RiskServiceImpl.java

@@ -478,33 +478,29 @@ public class RiskServiceImpl extends ReflectUtil implements RiskService {
         RiskTemplateView ecpmLimit= configMapper.getByCode("742");
         checkRisk742(ecpmLimit,userId,records);
         //校验风控746规则
-        checkRisk746(userId,records,userRevenue);
+        if(!records.isEmpty() && records.size()>1){
+            checkRisk746(userId,records);
+        }
         return Result.resultOk(RepMessage.QUERY_SUCCESS);
     }
 
     /**
      * 校验默认风控规则746
      */
-    private void checkRisk746(String userId, List<YtDyzAdRecord> records, BigDecimal userRevenue) {
+    private void checkRisk746(String userId, List<YtDyzAdRecord> records) {
         RiskTemplateView revenue = configMapper.getByCode("746");
         Map<String, String> revenueMap = revenue.getConfigList().stream().collect(
                 Collectors.toMap(RiskConfigView::getFieldName, RiskConfigView::getConfigVal));
         List<YtDyzAdRecord> revenues = records.stream().filter(
                 s -> Objects.nonNull(s.getRevenue())&&(s.getRevenue().compareTo(BigDecimal.ZERO)) > 0).collect(Collectors.toList());
         int incomeCount = 0;
-
         incomeCount = revenues.isEmpty()?incomeCount:records.size();
-
-        if(userRevenue.compareTo(BigDecimal.ZERO) > 0){
-            ++incomeCount;
-        }
         //判断当日获得收益的广告达到预设数值,触发风控规则
         int rewardCount = Integer.parseInt(revenueMap.get("rewardCount"));
         if(incomeCount>=rewardCount){
             BigDecimal income = new BigDecimal(revenueMap.get("income"));
             //获取最先的两条
             BigDecimal reduce = revenues.stream().map(YtDyzAdRecord::getRevenue).reduce(BigDecimal.ZERO, BigDecimal::add);
-            reduce = reduce.add(userRevenue);
             if(reduce.compareTo(income)<0){
                 riskLockUser(userId, "746","系统判定小于最低收益限制","用户已被风控,风控编码:746");
             }