|
|
@@ -464,8 +464,14 @@ public class RiskServiceImpl extends ReflectUtil implements RiskService {
|
|
|
public Result<?> checkAdRisk(String userId,BigDecimal userRevenue) {
|
|
|
ResultTable<YtDyzAdRecord> table = appFeign.adRecords(userId);
|
|
|
List<YtDyzAdRecord> records = table.getData();
|
|
|
+ if(records.isEmpty()){
|
|
|
+ return Result.resultOk(RepMessage.QUERY_SUCCESS);
|
|
|
+ }
|
|
|
//校验风控742规则
|
|
|
RiskTemplateView ecpmLimit= configMapper.getByCode("742");
|
|
|
+ records = records.stream().filter(s->
|
|
|
+ DateUtil.isSameDay(DateUtil.parse(s.getFinishTime()), new Date())
|
|
|
+ ).collect(Collectors.toList());
|
|
|
checkRisk742(ecpmLimit,userId,records);
|
|
|
//校验风控746规则
|
|
|
checkRisk746(userId,records,userRevenue);
|
|
|
@@ -480,7 +486,7 @@ public class RiskServiceImpl extends ReflectUtil implements RiskService {
|
|
|
Map<String, String> revenueMap = revenue.getConfigList().stream().collect(
|
|
|
Collectors.toMap(RiskConfigView::getFieldName, RiskConfigView::getConfigVal));
|
|
|
List<YtDyzAdRecord> revenues = records.stream().filter(
|
|
|
- s -> s.getRevenue().compareTo(BigDecimal.ZERO) > 0).collect(Collectors.toList());
|
|
|
+ s -> Objects.nonNull(s.getRevenue())&&(s.getRevenue().compareTo(BigDecimal.ZERO)) > 0).collect(Collectors.toList());
|
|
|
int incomeCount = 0;
|
|
|
|
|
|
incomeCount = revenues.isEmpty()?incomeCount:records.size();
|
|
|
@@ -494,6 +500,7 @@ public class RiskServiceImpl extends ReflectUtil implements RiskService {
|
|
|
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");
|
|
|
}
|
|
|
@@ -515,7 +522,7 @@ public class RiskServiceImpl extends ReflectUtil implements RiskService {
|
|
|
//过滤出ecpm值小于预设值的视频数
|
|
|
int ecpm = Integer.parseInt(limitMap.get("ecpm"));
|
|
|
long count = records.stream().filter(
|
|
|
- s -> (s.getEcpm().compareTo(BigDecimal.valueOf(ecpm))) < 0).count();
|
|
|
+ s -> Objects.nonNull(s.getEcpm())&&(s.getEcpm().compareTo(BigDecimal.valueOf(ecpm))) < 0).count();
|
|
|
int exact = Math.toIntExact(count);
|
|
|
//判断小于预设值的视频数超出预设次数
|
|
|
int haveCount = Integer.parseInt(limitMap.get("haveCount"));
|