Ver código fonte

fix: 修改广告风控规则校验

hidewnd 2 meses atrás
pai
commit
7b7481bc5b

+ 9 - 20
yt-middle/middle-platform/src/main/java/com/ytpm/middle/service/impl/ApkServiceImpl.java

@@ -298,11 +298,11 @@ public class ApkServiceImpl implements ApkService {
         String agentId = param.getUserId();
         List<YtRiskConfig> configs = new ArrayList<>();
         YtRiskConfig riskConfig = createRiskConfig(param.getUserId(), "revenueLimit",
-                StrUtil.format("开屏广告、横幅、原生(信息流)总预估收益>{},", initVisitorRevenueLimit), initVisitorRevenueLimit, 3);
+                StrUtil.format("开屏广告、横幅、原生(信息流)总预估收益<{},", initVisitorRevenueLimit), initVisitorRevenueLimit, 4);
         configs.add(riskConfig);
         String templateId = IdUtil.getSnowflakeNextIdStr();
         YtRiskTemplate template = new YtRiskTemplate(templateId, "游客用户总预估收益限制",
-                StrUtil.format("开屏广告、横幅、原生(信息流)总预估收益>{},", initVisitorRevenueLimit),
+                StrUtil.format("开屏广告、横幅、原生(信息流)总预估收益<{},", initVisitorRevenueLimit),
                 appId + "-344", agentId, 2, appId,
                 new Date(), loginUser.getUserId(), null, null,
                 1, 1, 1);
@@ -319,7 +319,7 @@ public class ApkServiceImpl implements ApkService {
         String agentId = param.getUserId();
         List<YtRiskConfig> configs = new ArrayList<>();
         YtRiskConfig riskConfig = createRiskConfig(param.getUserId(), "ecpmLimit",
-                StrUtil.format("开屏广告、横幅、原生(信息流)总ecpm<{},", initVisitorEcpmLimit), initVisitorEcpmLimit, 3);
+                StrUtil.format("开屏广告、横幅、原生(信息流)总ecpm<{},", initVisitorEcpmLimit), initVisitorEcpmLimit, 4);
         configs.add(riskConfig);
         String templateId = IdUtil.getSnowflakeNextIdStr();
         YtRiskTemplate template = new YtRiskTemplate(templateId, "游客用户总ecpm限制",
@@ -334,19 +334,8 @@ public class ApkServiceImpl implements ApkService {
         riskMapper.relativeApp(appId, param.getAppName(), template.getTemplateId(), loginUser.getNickName(), loginUser.getUserId());
     }
 
-    private void createTemp344ByAdType(AppParam param, List<YtRiskConfig> configs, String adSourceType, String typeName){
-        YtRiskConfig riskConfig;
-        riskConfig = createRiskConfig(param.getUserId(), StrUtil.format("ecpmLimit_{}", adSourceType),
-                StrUtil.format("{}累计ecpm<{},", typeName, initVisitorEcpmLimit), initVisitorEcpmLimit, 4);
-        configs.add(riskConfig);
-        riskConfig = createRiskConfig(param.getUserId(),  StrUtil.format("revenueLimit_{}", adSourceType),
-                StrUtil.format("预估收益<{};", initVisitorRevenueLimit), initVisitorRevenueLimit, 4);
-        configs.add(riskConfig);
-    }
-
-
     private void addTemp768(AppParam param, MiddleUserInfo loginUser) {
-        // 每{}小时用户获得完成{}个获得奖励的激励视频
+        // {}小时内,获得奖励的激励视频数>{}
         String appId = param.getAppId();
         String agentId = param.getUserId();
         Date currentDate = new Date();
@@ -356,11 +345,11 @@ public class ApkServiceImpl implements ApkService {
                 StrUtil.format("{}小时内,", initHourCount), initHourCount, 2);
         configs.add(riskConfig);
         riskConfig = createRiskConfig(agentId, "hourTaskLimit",
-                StrUtil.format("获得奖励的激励视频数<{}", initHourTaskLimit), initHourTaskLimit, 2);
+                StrUtil.format("获得奖励的激励视频数>{}", initHourTaskLimit), initHourTaskLimit, 3);
         configs.add(riskConfig);
         String templateId = IdUtil.getSnowflakeNextIdStr();
         YtRiskTemplate template = new YtRiskTemplate(templateId,"小时区间任务数完成限制",
-                StrUtil.format("{}小时内,获得奖励的激励视频数<{}", initHourCount, initHourTaskLimit),
+                StrUtil.format("{}小时内,获得奖励的激励视频数>{}", initHourCount, initHourTaskLimit),
                 appId + "-768", agentId, 2, appId,
                 currentDate, loginUser.getUserId(),null, null,
                 1,1,1);
@@ -372,7 +361,7 @@ public class ApkServiceImpl implements ApkService {
     }
 
     private void addTemp767(AppParam param, MiddleUserInfo loginUser) {
-        // 风控规则 每{}月用户获得{}个获得奖励的激励视频
+        // 风控规则 {}月内,获得奖励的激励视频数>{}
         String appId = param.getAppId();
         String agentId = param.getUserId();
         Date currentDate = new Date();
@@ -382,11 +371,11 @@ public class ApkServiceImpl implements ApkService {
                 StrUtil.format("{}月内", initMonthCount), initMonthCount, 2);
         configs.add(riskConfig);
         riskConfig = createRiskConfig(agentId, "monthTaskLimit",
-                StrUtil.format("获得奖励的激励视频数<{}", initMonthTaskLimit), initMonthTaskLimit, 2);
+                StrUtil.format("获得奖励的激励视频数>{}", initMonthTaskLimit), initMonthTaskLimit, 3);
         configs.add(riskConfig);
         String templateId = IdUtil.getSnowflakeNextIdStr();
         YtRiskTemplate template = new YtRiskTemplate(templateId,"月区间任务完成数限制",
-                StrUtil.format("{}月内,获得奖励的激励视频数<{}", initMonthCount, initMonthTaskLimit),
+                StrUtil.format("{}月内,获得奖励的激励视频数>{}", initMonthCount, initMonthTaskLimit),
                 appId + "-767", agentId, 2, appId,
                 currentDate, loginUser.getUserId(),null, null,
                 1,1,1);

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

@@ -571,22 +571,22 @@ public class RiskServiceImpl implements RiskService {
 
     /**
      * 校验默认风控规则768
-     * 每{}小时用户获得完成{}个获得奖励的激励视频
+     * {hourCount}小时内,获得奖励的激励视频数>{hourTaskLimit}
      */
     private void checkRisk768(YtDyzUser dyzUser, List<YtDyzAdRecord> adRecords) {
         RiskTemplateView riskTempView = configMapper.getByCode(dyzUser.getAppId() + "-768");
         if (riskTempView == null || riskTempView.getEnabled() != 1) return;
         Map<String, String> riskConfigMap = getRsihConfigMap(riskTempView);
         int hourCount = Integer.parseInt(riskConfigMap.getOrDefault("hourCount", "0"));
-        int hourTaskLimit = Integer.parseInt(riskConfigMap.getOrDefault("monthTaskLimit", "0"));
+        int hourTaskLimit = Integer.parseInt(riskConfigMap.getOrDefault("hourTaskLimit", "0"));
         if (hourCount > 0 && hourTaskLimit > 0) {
-            Date limitStartDate = DateUtil.offset(new Date(), DateField.HOUR, -hourTaskLimit);
+            Date limitStartDate = DateUtil.offset(new Date(), DateField.HOUR, -hourCount);
             List<YtDyzAdRecord> revenues = adRecords.stream()
                     .filter(
                             s -> Objects.nonNull(s.getRevenue()) && (s.getRevenue().compareTo(BigDecimal.ZERO)) > 0)
                     .filter(item -> DateUtil.parse(item.getFinishTime()).after(limitStartDate))
                     .collect(Collectors.toList());
-            if (revenues.size() < hourTaskLimit) {
+            if (revenues.size() > hourTaskLimit) {
                 if (dyzUser.getIosId() != null) {
                     riskLockUserForIos(dyzUser, "768", "系统判定重复刷单用户限制", getTipsMsg());
                 } else {
@@ -598,7 +598,7 @@ public class RiskServiceImpl implements RiskService {
 
     /**
      * 校验默认风控规则767
-     *  过去{}月用户获得奖励的激励视频
+     * {monthCount}月内,获得奖励的激励视频数>{monthTaskLimit}
      */
     private void checkRisk767(YtDyzUser dyzUser, List<YtDyzAdRecord> adRecords) {
         RiskTemplateView riskTempView = configMapper.getByCode(dyzUser.getAppId() + "-767");
@@ -612,7 +612,7 @@ public class RiskServiceImpl implements RiskService {
                             s -> Objects.nonNull(s.getRevenue()) && (s.getRevenue().compareTo(BigDecimal.ZERO)) > 0)
                     .filter(item -> DateUtil.parse(item.getFinishTime()).after(limitStartDate))
                     .collect(Collectors.toList());
-            if (revenues.size() < monthTaskLimit) {
+            if (revenues.size() > monthTaskLimit) {
                 if (dyzUser.getIosId() != null) {
                     riskLockUserForIos(dyzUser, "767", "系统判定重复刷单用户限制", getTipsMsg());
                 } else {