|
|
@@ -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);
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 修改用户信息
|
|
|
*/
|