|
|
@@ -3,6 +3,7 @@ package com.ytpm.lemonios.controller;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.date.DateTime;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
import com.github.pagehelper.PageInfo;
|
|
|
@@ -24,6 +25,7 @@ import com.ytpm.app.param.AppUserTodayBannedParam;
|
|
|
import com.ytpm.app.param.LoginRiskYtDyzUserParam;
|
|
|
import com.ytpm.app.param.YtAppUserListParam;
|
|
|
import com.ytpm.app.view.HourCountView;
|
|
|
+import com.ytpm.app.view.IpAdRecordView;
|
|
|
import com.ytpm.app.view.RiskYtDyzUserView;
|
|
|
import com.ytpm.app.view.YtAppUserListView;
|
|
|
import com.ytpm.general.RepMessage;
|
|
|
@@ -55,6 +57,7 @@ import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.Calendar;
|
|
|
import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Objects;
|
|
|
@@ -119,6 +122,13 @@ public class UserController {
|
|
|
// 今日答题记录
|
|
|
Map<String, Long> todayAnswerMap = answerRecords.stream().collect(
|
|
|
Collectors.groupingBy(YtDyzAnswerRecord::getUserId, Collectors.counting()));
|
|
|
+ Map<String, Long> ipAdRecordMap = new HashMap<>();
|
|
|
+ // 查询该IP是否有激励视频已达要求的用户
|
|
|
+ if (StrUtil.isNotEmpty(param.getLastLoginIp()) && param.getVideoThreshold() != null) {
|
|
|
+ ipAdRecordMap = adRecordMapper.queryGroupByIpSourceType(param)
|
|
|
+ .stream().collect(Collectors.toMap(IpAdRecordView::getUserId, IpAdRecordView::getAdCount,
|
|
|
+ (o1, o2) -> o2));
|
|
|
+ }
|
|
|
for (YtAppUserListView user : result) {
|
|
|
if (loginMap.containsKey(user.getUserId())) {
|
|
|
user.setLoginRecordList(loginMap.get(user.getUserId()));
|
|
|
@@ -138,7 +148,12 @@ public class UserController {
|
|
|
user.setNearlyIncome(user.getNearlyIncome() == null ? nearlyRevenue : user.getNearlyIncome().add(nearlyRevenue));
|
|
|
}
|
|
|
}
|
|
|
+ user.setMaybeDone(0);
|
|
|
user.setTodayAnswer(Math.toIntExact(todayAnswerMap.getOrDefault(user.getUserId(), 0L)));
|
|
|
+ if (StrUtil.equals(param.getLastLoginIp(), user.getLastLoginIp()) && param.getVideoThreshold() != null
|
|
|
+ && ipAdRecordMap.get(user.getUserId()) != null && param.getVideoThreshold() <= ipAdRecordMap.get(user.getUserId())) {
|
|
|
+ user.setMaybeDone(1);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -385,10 +400,11 @@ public class UserController {
|
|
|
@PostMapping("/queryUserByParam")
|
|
|
public RiskYtDyzUserView queryUserByParam(@RequestBody LoginRiskYtDyzUserParam param) {
|
|
|
RiskYtDyzUserView riskYtDyzUserView = new RiskYtDyzUserView();
|
|
|
+ Calendar instance = Calendar.getInstance();
|
|
|
+ Date currentDate = new Date();
|
|
|
// 查询指定时间内同ip登陆用户数
|
|
|
if (StringUtils.isNotEmpty(param.getLastLoginIp()) && param.getLimitHour() != null) {
|
|
|
- Calendar instance = Calendar.getInstance();
|
|
|
- instance.setTime(new Date());
|
|
|
+ instance.setTime(currentDate);
|
|
|
instance.add(Calendar.HOUR_OF_DAY, -param.getLimitHour());
|
|
|
Date startTime = instance.getTime();
|
|
|
Long userCount = appUserMapper.queryCountByIpTime(param.getLastLoginIp(), startTime);
|
|
|
@@ -401,14 +417,32 @@ public class UserController {
|
|
|
}
|
|
|
// 查询指定地区的的所有登陆用户
|
|
|
if (StringUtils.isNotEmpty(param.getLimitCity()) && param.getLimitHour335() != null) {
|
|
|
- List<String> cityList = Arrays.asList(paramx.getLimitCity().split(","));
|
|
|
- Calendar instance = Calendar.getInstance();
|
|
|
- instance.setTime(new Date());
|
|
|
+ List<String> cityList = Arrays.asList(param.getLimitCity().split(","));
|
|
|
+ instance.setTime(currentDate);
|
|
|
instance.add(Calendar.HOUR_OF_DAY, -param.getLimitHour());
|
|
|
Date startTime = instance.getTime();
|
|
|
Long userCount = appUserMapper.queryCountByIpRegion(cityList, startTime);
|
|
|
riskYtDyzUserView.setCityUserCount(Math.toIntExact(userCount));
|
|
|
}
|
|
|
+ // 查询三天内 该渠道 相同IP 相同设备应用列表的用户数
|
|
|
+ if (StrUtil.isNotEmpty(param.getLastLoginIp()) && StrUtil.isNotEmpty(param.getPhoneJson())) {
|
|
|
+ JSONObject phoneJson = JSONObject.parseObject(param.getPhoneJson());
|
|
|
+ String appList = phoneJson.get("appList") == null ? null : phoneJson.getString("appList");
|
|
|
+ if ("[]".equals(appList)) {
|
|
|
+ appList = "";
|
|
|
+ }
|
|
|
+ if (StrUtil.isNotEmpty(appList)) {
|
|
|
+ String lastLoginIp = param.getLastLoginIp();
|
|
|
+ Date startTime = null;
|
|
|
+ if (param.getLimitDays322() != null) {
|
|
|
+ instance.setTime(currentDate);
|
|
|
+ instance.add(Calendar.DAY_OF_MONTH, -param.getLimitDays322());
|
|
|
+ startTime = instance.getTime();
|
|
|
+ }
|
|
|
+ Long count = appUserMapper.countUserByLastLoginIpAndAppList(lastLoginIp, appList, startTime);
|
|
|
+ riskYtDyzUserView.setSameDeviceCount(count);
|
|
|
+ }
|
|
|
+ }
|
|
|
return riskYtDyzUserView;
|
|
|
}
|
|
|
|