|
|
@@ -1,7 +1,7 @@
|
|
|
package com.ytpm.lemonios.controller;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
-import cn.hutool.core.date.DateUtil;
|
|
|
+import cn.hutool.core.date.DateTime;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
import com.github.pagehelper.PageInfo;
|
|
|
@@ -28,6 +28,7 @@ import com.ytpm.lemonios.redis.RedisService;
|
|
|
import com.ytpm.risk.enums.BannedTypeEnum;
|
|
|
import com.ytpm.risk.view.RiskConfigView;
|
|
|
import com.ytpm.risk.view.RiskTemplateView;
|
|
|
+import com.ytpm.util.DateUtil;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.validation.Errors;
|
|
|
@@ -79,31 +80,58 @@ public class UserController {
|
|
|
Collectors.groupingBy(YtDyzAdRecord::getUserId));
|
|
|
Map<String, List<YtDyzLoginRecord>> loginMap = dyzLogins.stream().collect(
|
|
|
Collectors.groupingBy(YtDyzLoginRecord::getUserId));
|
|
|
- setUserExtInfo(result,userAdMap,loginMap);
|
|
|
+ setUserExtInfo(result,param, userAdMap,loginMap);
|
|
|
return ResultTable.resultTableOk(new PageInfo<>(result));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 设置视频记录和登录信息
|
|
|
*/
|
|
|
- private void setUserExtInfo(List<YtAppUserListView> result, Map<String, List<YtDyzAdRecord>> userAdMap,Map<String, List<YtDyzLoginRecord>> loginMap) {
|
|
|
+ private void setUserExtInfo(List<YtAppUserListView> result,YtAppUserListParam param,
|
|
|
+ Map<String, List<YtDyzAdRecord>> userAdMap, Map<String, List<YtDyzLoginRecord>> loginMap) {
|
|
|
+ List<YtDyzAdRecord> ytDyzAdRecords;
|
|
|
+ DateTime currentDate = DateUtil.date();
|
|
|
for (YtAppUserListView user : result) {
|
|
|
- if(loginMap.containsKey(user.getUserId())){
|
|
|
+ if (loginMap.containsKey(user.getUserId())) {
|
|
|
user.setLoginRecordList(loginMap.get(user.getUserId()));
|
|
|
}
|
|
|
- //获取今日收益 | 今日视频播放数
|
|
|
+ //获取当日收益收益 | 当日收益视频播放数 = 统计筛选登陆时间段
|
|
|
+ int todayVideo = 0;
|
|
|
+ BigDecimal todayIncome = BigDecimal.ZERO;
|
|
|
if (userAdMap.containsKey(user.getUserId())) {
|
|
|
- List<YtDyzAdRecord> ytDyzAdRecords = userAdMap.get(user.getUserId());
|
|
|
- List<YtDyzAdRecord> collect = ytDyzAdRecords.stream().filter(
|
|
|
- s -> DateUtil.isSameDay(DateUtil.date(),DateUtil.parseDate(s.getFinishTime()))).collect(Collectors.toList());
|
|
|
- BigDecimal todayIncome = collect.stream().map(YtDyzAdRecord::getRevenue).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- user.setTodayVideo((int) collect.stream().filter(
|
|
|
- s->s.getAdSourceType()== AdSourceTypeEnum.rewarded_video.getAdSourceType()).count());
|
|
|
- user.setTodayIncome(todayIncome);
|
|
|
- } else {
|
|
|
- user.setTodayIncome(BigDecimal.ZERO);
|
|
|
- user.setTodayVideo(0);
|
|
|
+ // 默认筛选今日广告记录 并计算前三日收益
|
|
|
+ ytDyzAdRecords = userAdMap.get(user.getUserId()).stream()
|
|
|
+ .filter(s -> DateUtil.isSameDay(currentDate, DateUtil.parseDate(s.getFinishTime())))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ todayIncome = ytDyzAdRecords.stream().map(YtDyzAdRecord::getRevenue)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ // 统计4天-今日收益=前三日收益
|
|
|
+ if (user.getNearlyIncome() != null && user.getNearlyIncome().compareTo(todayIncome) >= 0) {
|
|
|
+ user.setNearlyIncome(user.getNearlyIncome().subtract(todayIncome));
|
|
|
+ }
|
|
|
+ // 如果传递时间段 则按时间段筛选广告记录
|
|
|
+ if(param.getLastLoginTimeBegin() != null || param.getLastLoginTimeEnd() != null) {
|
|
|
+ if (param.getLastLoginTimeEnd() != null) {
|
|
|
+ ytDyzAdRecords = userAdMap.get(user.getUserId()).stream()
|
|
|
+ .filter(record -> DateUtil.afterSameDay(
|
|
|
+ param.getLastLoginTimeEnd(), DateUtil.parseDate(record.getFinishTime())))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ if (param.getLastLoginTimeEnd() != null) {
|
|
|
+ ytDyzAdRecords = ytDyzAdRecords.stream()
|
|
|
+ .filter(record -> DateUtil.beforeSameDay(
|
|
|
+ param.getLastLoginTimeEnd(), DateUtil.parseDate(record.getFinishTime())))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ todayIncome = ytDyzAdRecords.stream().map(YtDyzAdRecord::getRevenue)
|
|
|
+ .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ }
|
|
|
+ todayVideo = (int) ytDyzAdRecords.stream()
|
|
|
+ .filter(record -> record.getAdSourceType() == AdSourceTypeEnum.rewarded_video.getAdSourceType())
|
|
|
+ .count();
|
|
|
}
|
|
|
+ user.setTodayVideo(todayVideo);
|
|
|
+ user.setTodayIncome(todayIncome);
|
|
|
}
|
|
|
}
|
|
|
|