Bläddra i källkod

Merge remote-tracking branch 'refs/remotes/origin/master' into lih

hidewnd 1 månad sedan
förälder
incheckning
921b0ae302

+ 1 - 0
yt-agent/agent-service/src/main/java/com/ytpm/controller/AgentDitchController.java

@@ -61,6 +61,7 @@ public class AgentDitchController {
     @PostMapping("/updateOne")
     public Result<?> updateOne(@RequestBody AgentDitchParam param){
         YtDitch ytDitch = new YtDitch();
+        ytDitch.setAppType(param.getDitchType());
         ytDitch.setDitchName(param.getDitchName());
         ytDitch.setDitchId(param.getDitchId());
         return agentDitchService.updateOne(ytDitch);

+ 3 - 0
yt-agent/agent-service/src/main/resources/mapper/AgentDitchMapper.xml

@@ -30,6 +30,9 @@
             <if test="ditchName !=null">
                 ditch_name = #{ditchName},
             </if>
+            <if test="appType  !=null">
+                app_type = #{appType},
+            </if>
             <if test="isDelete !=null">
                 is_delete = #{isDelete}
             </if>

+ 11 - 8
yt-ios-lemon/lemon-ios-service/src/main/java/com/ytpm/lemonios/controller/WxController.java

@@ -99,15 +99,18 @@ public class WxController {
     public Result<YtDyzUser> iosLogin(@RequestBody IosLoginParam param, HttpServletRequest request) {
         //根据应用ID获取配置调用接口登录
         WxDefaultConfig defaultConfig = appUserMapper.getDefaultConfigByDitchId(param.getDitchId());
-        if(Objects.isNull(defaultConfig)){
+
+        // 当默认配置不存在时,尝试通过渠道信息获取备用配置
+        if (Objects.isNull(defaultConfig)) {
+            // 1. 检查渠道是否存在(提前拦截无效情况)
             YtDitch ditch = ditchMapper.selectById(param.getDitchId());
-            if (ditch != null){
-                WxDefaultConfig defaultConfig1 = appUserMapper.getByAppId(ditch.getAppId());
-                if (Objects.isNull(defaultConfig1)){
-                    return new Result<>(StatusCode.ACCESS_ERR,"登录失败,未找到相应配置!");
-                }
-            } else {
-                return new Result<>(StatusCode.ACCESS_ERR,"登录失败,未找到相应配置!");
+            if (ditch == null) {
+                return new Result<>(StatusCode.ACCESS_ERR, "登录失败,未找到相应配置!");
+            }
+            // 2. 通过渠道的appId获取备用配置
+            defaultConfig = appUserMapper.getByAppId(ditch.getAppId());
+            if (Objects.isNull(defaultConfig)) {
+                return new Result<>(StatusCode.ACCESS_ERR, "登录失败,未找到相应配置!");
             }
         }
         IosUserInfo userInfo = setIosUserInfo(param);

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

@@ -395,11 +395,7 @@ public class RiskServiceImpl implements RiskService {
         if(1==view.getEnabled()){
             checkDefaultRiskConfig(dyzUser, view.getConfigList());
         }
-        if (dyzUser.getIosId()!=null) {
-            checkRisk322ForIos(dyzUser);
-        } else {
-            checkRisk322(dyzUser);
-        }
+        checkRisk322(dyzUser);
         //查询用户所在app是否配置其他风控规则
 //        checkCustomRisk(dyzUser,EffectNodeEnum.LOGIN.getNode(),null);
         return Result.resultOk(RepMessage.QUERY_SUCCESS);
@@ -417,37 +413,12 @@ public class RiskServiceImpl implements RiskService {
         //根据用户所属应用查询该应用母包openid查询用户信息
         YtApp ytApp = appMapper.selectRiskApp(dyzUser.getAppId());
         YtPlatformUserApp userApp =  appMapper.selectParentApp(ytApp.getSuperiorId());
-        Object o = feignInvoker.invoke(userApp.getServiceName(),"queryByOpenid",dyzUser.getWxOpenId());
-        List<YtDyzUser> dyzUsers = JSONArray.parseArray(JSON.toJSONString(o), YtDyzUser.class);
-
-        List<RiskConfigView> configList = view.getConfigList();
-        Map<String, String> configMap = configList.stream().collect(
-                Collectors.toMap(RiskConfigView::getFieldName, RiskConfigView::getConfigVal));
-        //判断同应用 UID生成数如果不小于配置数则触发规则校验
-        int uidCount = Integer.parseInt(configMap.get("uidCount"));
-        int days = Integer.parseInt(configMap.get("days"));
-        //过滤该用户注册时间在三天内的渠道数
-        long ditchCount = dyzUsers.stream().filter(
-                s->(days>DateUtil.between(new Date(), s.getRegistryTime(),DateUnit.DAY))
-        ).count();
-        //三天内注册的渠道数小于预设的渠道数通过校验,否则风控锁定用户
-        if(ditchCount<uidCount)return;
-        if (dyzUser.getIosId()!=null) {
-            riskLockUserForIos(dyzUser,"322","系统判定重复刷单用户限制",getTipsMsg());
-        }  else {
-            riskLockUser(dyzUser,"322","系统判定重复刷单用户限制",getTipsMsg());
+        Object o;
+        if (dyzUser.getIosId() != null) {
+            o = feignInvoker.invoke(userApp.getServiceName(),"queryByIosId",dyzUser.getIosId());
+        } else {
+            o = feignInvoker.invoke(userApp.getServiceName(),"queryByOpenid",dyzUser.getWxOpenId());
         }
-    }
-
-    /**
-     * 校验风控规则322
-     */
-    private void checkRisk322ForIos(YtDyzUser dyzUser) {
-        RiskTemplateView view = configMapper.getByCode("322");
-        //根据用户所属应用查询该应用母包openid查询用户信息
-        YtApp ytApp = appMapper.selectRiskApp(dyzUser.getAppId());
-        YtPlatformUserApp userApp =  appMapper.selectParentApp(ytApp.getSuperiorId());
-        Object o = feignInvoker.invoke(userApp.getServiceName(),"queryByIosId",dyzUser.getIosId());
         List<YtDyzUser> dyzUsers = JSONArray.parseArray(JSON.toJSONString(o), YtDyzUser.class);
 
         List<RiskConfigView> configList = view.getConfigList();
@@ -462,11 +433,7 @@ public class RiskServiceImpl implements RiskService {
         ).count();
         //三天内注册的渠道数小于预设的渠道数通过校验,否则风控锁定用户
         if(ditchCount<uidCount)return;
-        if (dyzUser.getIosId()!=null) {
-            riskLockUserForIos(dyzUser,"322","系统判定重复刷单用户限制",getTipsMsg());
-        }  else {
-            riskLockUser(dyzUser,"322","系统判定重复刷单用户限制",getTipsMsg());
-        }
+        riskLockUser(dyzUser,"322","系统判定重复刷单用户限制",getTipsMsg());
     }
 
     /**
@@ -500,11 +467,7 @@ public class RiskServiceImpl implements RiskService {
         }
         int ipSameCount = Integer.parseInt(configMap.get("ipSameCount"));
         if(intCount > ipSameCount){//校验同IP登录次数大于预设值,锁定用户
-            if (dyzUser.getIosId()!=null) {
-                riskLockUserForIos(dyzUser,dyzUser.getRiskCode(),"系统判定重复刷单用户限制",getTipsMsg());
-            }  else {
-                riskLockUser(dyzUser,dyzUser.getRiskCode(),"系统判定重复刷单用户限制",getTipsMsg());
-            }
+            riskLockUser(dyzUser,dyzUser.getRiskCode(),"系统判定重复刷单用户限制",getTipsMsg());
         }
     }
 
@@ -716,11 +679,7 @@ public class RiskServiceImpl implements RiskService {
             BigDecimal reduce = revenues.stream().map(YtDyzAdRecord::getRevenue).reduce(BigDecimal.ZERO, BigDecimal::add);
             if(reduce.compareTo(income)<0){
                 log.warn(StrUtil.format("[risk 746] reduce{}  income {}", reduce, income));
-                if (dyzUser.getIosId()!=null) {
-                    riskLockUserForIos(dyzUser,"746","系统判定小于最低收益限制",getTipsMsg());
-                }  else {
-                    riskLockUser(dyzUser, "746","系统判定小于最低收益限制",getTipsMsg());
-                }
+                riskLockUser(dyzUser, "746","系统判定小于最低收益限制",getTipsMsg());
             }
         }
     }
@@ -748,11 +707,7 @@ public class RiskServiceImpl implements RiskService {
             int haveCount = Integer.parseInt(limitMap.get("haveCount"));
             if(exact>haveCount){
                 log.warn(StrUtil.format("[risk 742] exact{} > haveCount {}", exact, haveCount));
-                if (dyzUser.getIosId()!=null) {
-                    riskLockUserForIos(dyzUser,"742","系统判定激励视频ecpm值过低",getTipsMsg());
-                }  else {
-                    riskLockUser(dyzUser,"742","系统判定激励视频ecpm值过低",getTipsMsg());
-                }
+                riskLockUser(dyzUser,"742","系统判定激励视频ecpm值过低",getTipsMsg());
             }
         }
     }
@@ -790,39 +745,6 @@ public class RiskServiceImpl implements RiskService {
         throw new CustomerException(errMsg);
     }
 
-    /**
-     * 风控锁定用户
-     */
-    private void riskLockUserForIos(YtDyzUser dyzUser,String riskCode, String tempName, String errMsg) {
-        //增加用户风控记录
-        RiskBannedParam param = new RiskBannedParam();
-        param.setUserId(dyzUser.getUserId());
-        param.setAppId(dyzUser.getAppId());
-        param.setDitChId(dyzUser.getDitchId());
-        param.setBannedLimit(1*24);
-        param.setOperator("系统风控");
-        param.setBannedReason(tempName);
-        param.setOperatorName("系统风控");
-        param.setAgentId(configMapper.getApplicationOwner(dyzUser.getAppId()));
-        addBannedRecord(Collections.singletonList(dyzUser.getUserId()),param);
-
-        YtPlatformUserApp appInfo = appMapper.selectParentApp(dyzUser.getAppId());
-
-        ScheduledExecutorService scheduled  = Executors.newSingleThreadScheduledExecutor();
-        scheduled.schedule(()->{
-            YtDyzUser next = new YtDyzUser();
-            next.setUserId(dyzUser.getUserId());
-            next.setUserStatus(UserStatusEnum.LOCK.getCode());
-            next.setRiskCode(riskCode);
-            next.setRiskReason(tempName);
-            feignInvoker.invoke(appInfo.getServiceName(), "updateUserInfo",next);
-        },300, TimeUnit.MILLISECONDS);
-        //修改为解锁用户存入redis 24小时后进行解锁
-        redisService.setTimeOutHoursStr("unlock_"+dyzUser.getUserId(),dyzUser.getAppId(), 24);
-        scheduled.shutdown();
-        throw new CustomerException(errMsg);
-    }
-
     /**
      * 修改用户信息
      */