Ver Fonte

fix: 修改风控规则缺陷

hidewnd há 2 meses atrás
pai
commit
62fcec32c9

+ 2 - 0
yt-nofeeds/nofeeds-service/src/main/java/com/ytpm/nofeeds/dao/AppUserMapper.java

@@ -90,6 +90,8 @@ public interface AppUserMapper {
      */
     WxDefaultConfig getDefaultConfig(@Param("appType") int appType);
 
+    WxDefaultConfig getDefaultConfigByAppId(@Param("appId") String appId);
+
     /**
      * 根据微信openid查询用户
      */

+ 11 - 2
yt-nofeeds/nofeeds-service/src/main/java/com/ytpm/nofeeds/service/impl/AdServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.RandomUtil;
+import cn.hutool.core.util.StrUtil;
 import com.ytpm.advertise.enums.AdPlatformTypeEnum;
 import com.ytpm.advertise.enums.AdSourceTypeEnum;
 import com.ytpm.agent.enums.UserStatusEnum;
@@ -12,6 +13,7 @@ import com.ytpm.agent.view.AgentTopCountView;
 import com.ytpm.app.model.YtDyzAdRecord;
 import com.ytpm.app.model.YtDyzUser;
 import com.ytpm.app.param.DyzAdRecordParam;
+import com.ytpm.app.view.WxDefaultConfig;
 import com.ytpm.feign.RiskFeign;
 import com.ytpm.general.RepMessage;
 import com.ytpm.general.Result;
@@ -79,9 +81,16 @@ public class AdServiceImpl implements AdService {
         saveRecordAndChangeUser(param, user);
         //调用风控广告校验
         if(AdSourceTypeEnum.rewarded_video.getAdSourceType() == param.getAdSourceType()){
+            WxDefaultConfig config = appUserMapper.getDefaultConfigByAppId(user.getAppId());
+            String format = StrUtil.emptyToDefault(config.getTaskLimitTip(), "当前设备完成任务次数过多,请{}后重试!");
+            user.setPowerLimitTip(format);
             Result<?> result = riskFeign.checkAdRisk(user);
-            if(result.getCode()!=200){
-                return new Result<>(StatusCode.ACCESS_ERR, getTipsMsg());
+            if (result.getCode() != 200) {
+                Result<Object> resultObj = new Result<>(StatusCode.ACCESS_ERR, getTipsMsg());
+                if("766".contains(result.getMessage())){
+                    resultObj.setData(result.getMessage());
+                }
+                return resultObj;
             }
         }
         return Result.resultOk(RepMessage.SAVE_SUCCESS);

+ 25 - 6
yt-nofeeds/nofeeds-service/src/main/resources/mapper/AppUserMapper.xml

@@ -428,15 +428,31 @@
     </select>
     <select id="getDefaultConfig" resultType="com.ytpm.app.view.WxDefaultConfig">
         select
-            config_id, config_name, open_id appId, secret, app_id platformAppId, app_key platformAppSecret, app_type,user_path,login_path,ad_path,answer_path,power_path
-             ,taku_app_id,taku_key,taku_banner_pid,taku_interstitial_pid,taku_reward_pid,taku_native_pid,can_use_adb,can_accumulation,can_use_float,can_use_root,can_simulator,ditch_id,power_wait_time,interstitial_interval_time
-             ,low_value_tip, brush_tip
+            config_id, config_name, open_id, secret, app_id, app_key, app_type,user_path,login_path,ad_path,
+            answer_path,power_path,can_simulator, taku_app_id, taku_key, taku_banner_pid, taku_native_pid,
+            taku_reward_pid, taku_interstitial_pid, can_use_root, can_use_adb, can_use_float, can_accumulation,
+            ditch_id, power_wait_time, interstitial_interval_time,
+            low_value_tip, brush_tip,flow_interval_time,task_limit_tip
         from yt_app_default_config
         where app_type = #{appType}
     </select>
+    <select id="getDefaultConfigByAppId" resultType="com.ytpm.app.view.WxDefaultConfig">
+        select
+            config_id, config_name, open_id, secret, app_id, app_key, app_type,user_path,login_path,ad_path,
+            answer_path,power_path,can_simulator, taku_app_id, taku_key, taku_banner_pid, taku_native_pid,
+            taku_reward_pid, taku_interstitial_pid, can_use_root, can_use_adb, can_use_float, can_accumulation,
+            ditch_id, power_wait_time, interstitial_interval_time,
+            low_value_tip, brush_tip,flow_interval_time,task_limit_tip
+        from yt_app_default_config
+        where app_id = #{appId}
+    </select>
     <select id="getSecretByAppId" resultType="java.lang.String">
         select
-           secret
+            config_id, config_name, open_id, secret, app_id, app_key, app_type,user_path,login_path,ad_path,
+            answer_path,power_path,can_simulator, taku_app_id, taku_key, taku_banner_pid, taku_native_pid,
+            taku_reward_pid, taku_interstitial_pid, can_use_root, can_use_adb, can_use_float, can_accumulation,
+            ditch_id, power_wait_time, interstitial_interval_time,
+            low_value_tip, brush_tip, flow_interval_time,task_limit_tip
         from yt_app_default_config
         where app_id = #{appId}
     </select>
@@ -456,8 +472,11 @@
     </select>
     <select id="getConfigByIds" resultType="com.ytpm.app.view.WxDefaultConfig">
         select
-            config_id, config_name, open_id, secret, app_id, app_key, app_type, user_path, login_path, ad_path, answer_path, power_path
-             , taku_app_id, taku_key, taku_banner_pid, taku_native_pid, taku_reward_pid, taku_interstitial_pid, can_use_root, can_use_adb, can_use_float, can_accumulation,can_simulator, ditch_id, power_wait_time, interstitial_interval_time
+            config_id, config_name, open_id, secret, app_id, app_key, app_type, user_path, login_path, ad_path,
+            answer_path, power_path,taku_app_id, taku_key, taku_banner_pid, taku_native_pid, taku_reward_pid,
+            taku_interstitial_pid, can_use_root, can_use_adb, can_use_float, can_accumulation,can_simulator,
+            ditch_id, power_wait_time, interstitial_interval_time,
+            low_value_tip, brush_tip, flow_interval_time,task_limit_tip
         from yt_app_default_config
         where app_id in
         <foreach collection="appIds.split(',')" item="item" separator="," open="(" close=")">

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

@@ -587,11 +587,8 @@ public class RiskServiceImpl implements RiskService {
                     .filter(item -> DateUtil.parse(item.getFinishTime()).after(limitStartDate))
                     .collect(Collectors.toList());
             if (revenues.size() > hourTaskLimit) {
-                if (dyzUser.getIosId() != null) {
-                    riskLockUserForIos(dyzUser, "768", "系统判定重复刷单用户限制", getTipsMsg());
-                } else {
-                    riskLockUser(dyzUser, "768", "系统判定重复刷单用户限制", getTipsMsg());
-                }
+                String format = StrUtil.emptyToDefault(dyzUser.getPowerLimitTip(), "当前设备完成任务次数过多,请{}后重试!");
+                throw new CommonException(StrUtil.format(format,StrUtil.format("{}小时", hourCount)));
             }
         }
     }
@@ -613,11 +610,8 @@ public class RiskServiceImpl implements RiskService {
                     .filter(item -> DateUtil.parse(item.getFinishTime()).after(limitStartDate))
                     .collect(Collectors.toList());
             if (revenues.size() > monthTaskLimit) {
-                if (dyzUser.getIosId() != null) {
-                    riskLockUserForIos(dyzUser, "767", "系统判定重复刷单用户限制", getTipsMsg());
-                } else {
-                    riskLockUser(dyzUser, "767", "系统判定重复刷单用户限制", getTipsMsg());
-                }
+                String format = StrUtil.emptyToDefault(dyzUser.getPowerLimitTip(), "当前设备完成任务次数过多,请{}后重试!");
+                throw new CommonException(StrUtil.format(format,StrUtil.format("{}月", monthCount)));
             }
         }
     }
@@ -1136,7 +1130,7 @@ public class RiskServiceImpl implements RiskService {
     private BigDecimal getLimitValue(RiskTemplateView view, String configCode){
         List<RiskConfigView> configList = view == null ? Collections.emptyList() : view.getConfigList();
         Map<String, String> configMap = configList.stream()
-                .filter(item -> item.getMulty() != null && item.getMulty() == 4)
+                .filter(item -> item.getMulty() != null)
                 .collect(Collectors.toMap(RiskConfigView::getFieldName, RiskConfigView::getConfigVal,
                         (o1,o2)-> o2));
         return new BigDecimal(configMap.getOrDefault(configCode, "0"));