Ver código fonte

feat: 小说服务/答题服务 调整

hidewnd 3 semanas atrás
pai
commit
c25cae734c

+ 6 - 0
yt-common/src/main/java/com/ytpm/app/model/YtDyzUser.java

@@ -1,6 +1,8 @@
 package com.ytpm.app.model;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.DateSerializer;
 import com.ytpm.app.enums.LoginType;
 import com.ytpm.custom.CustomField;
 import com.ytpm.handle.BigDecimalSerialize;
@@ -38,9 +40,13 @@ public class YtDyzUser extends YtUser {
     /** 注册时间 */
     @CustomField(node = 1)
     @ApiModelProperty("注册时间")
+    @JsonSerialize(using = DateSerializer.class)
+    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:dd")
     private Date registryTime;
     /** 最新登录时间 */
     @ApiModelProperty("最新登录时间")
+    @JsonSerialize(using = DateSerializer.class)
+    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:dd")
     private Date lastLoginTime;
     /** 注册时间 */
     @CustomField(node = 1)

+ 3 - 7
yt-common/src/main/java/com/ytpm/app/model/YtNovelUser.java

@@ -23,22 +23,18 @@ public class YtNovelUser extends YtUser {
     @ApiModelProperty("总观看视频数")
     private Integer totalVideo;
 
-
-    @ApiModelProperty("红包余额")
-    private BigDecimal redPacketBalance;
-
-    @ApiModelProperty("红包总额")
-    private BigDecimal redPacketAmount;
-
     @CustomField(node = 1)
     @ApiModelProperty("积分余额")
+    @JsonSerialize(using = BigDecimalSerialize.class)
     private BigDecimal pointsBalance;
 
     @ApiModelProperty("积分总额")
+    @JsonSerialize(using = BigDecimalSerialize.class)
     private BigDecimal pointsTotal;
 
     @CustomField(node = 1)
     @ApiModelProperty("提现总额")
+    @JsonSerialize(using = BigDecimalSerialize.class)
     private BigDecimal withdrawTotal;
 
     @ApiModelProperty("体力")

+ 7 - 4
yt-common/src/main/java/com/ytpm/app/model/YtUser.java

@@ -136,7 +136,9 @@ public class YtUser extends PageMeta {
     @ApiModelProperty(value = "今日收益")
     private BigDecimal todayIncome;
 
-    /** 红包余额 */
+    /**
+     * 红包余额
+     */
     @CustomField(node = 1)
     @ApiModelProperty("红包余额")
     @JsonSerialize(using = BigDecimalSerialize.class)
@@ -147,13 +149,14 @@ public class YtUser extends PageMeta {
     @JsonSerialize(using = BigDecimalSerialize.class)
     private BigDecimal todayRedPacketBalance;
 
-    /** 红包总金额 */
+    /**
+     * 红包总金额
+     */
     @ApiModelProperty("红包总金额")
     @JsonSerialize(using = BigDecimalSerialize.class)
     private BigDecimal redPacketAmount;
 
 
-
     /**
      * 登录历史记录
      */
@@ -161,7 +164,7 @@ public class YtUser extends PageMeta {
     private List<YtDyzLoginRecord> loginRecordList;
 
     @ApiModelProperty(value = "登陆前三条广告记录")
-    List<YtDyzAdRecord> preAdRecordList;
+    private List<YtDyzAdRecord> preAdRecordList;
 
 
     // feign传参

+ 1 - 1
yt-common/src/main/java/com/ytpm/app/view/YtAppUserListView.java

@@ -87,7 +87,7 @@ public class YtAppUserListView extends PageMeta {
     private Integer deviceRepeatCount;
     @ApiModelProperty("通信运营商")
     private String communicationOperator;
-    @ApiModelProperty("日收益")
+    @ApiModelProperty("日收益")
     private BigDecimal todayIncome;
 
     @ApiModelProperty("前三日总收益")

+ 37 - 1
yt-common/src/main/java/com/ytpm/util/DateUtil.java

@@ -7,7 +7,7 @@ import java.time.format.DateTimeFormatter;
 import java.util.Calendar;
 import java.util.Date;
 
-public class DateUtil {
+public class DateUtil extends cn.hutool.core.date.DateUtil {
 
     /**
      * 获取日期数字
@@ -60,6 +60,7 @@ public class DateUtil {
         ).atTime(23, 59, 59);
         return localDateTimeToDate(monthEnd);
     }
+
     // 获取本周周一
     public static Date getWeekStart() {
         Calendar calendar = Calendar.getInstance();
@@ -79,4 +80,39 @@ public class DateUtil {
     }
 
 
+    /**
+     * 判断date1的日期(yyyy-MM-dd)是否在date2之前或相等
+     *
+     * @param date1 第一个日期
+     * @param date2 第二个日期
+     * @return 若date1在date2之前或相等则返回true,否则返回false(任意日期为null时返回false)
+     */
+    public static boolean beforeSameDay(Date date1, Date date2) {
+        if (date1 != null && date2 != null) {
+            // 获取两个日期的当天起始时间(00:00:00),忽略时分秒
+            Date beginOfDate1 = DateUtil.beginOfDay(date1);
+            Date beginOfDate2 = DateUtil.beginOfDay(date2);
+            // 比较起始时间:<= 表示date1在date2之前或同一天
+            return beginOfDate1.compareTo(beginOfDate2) <= 0;
+        }
+        return false;
+    }
+
+    /**
+     * 判断date1的日期(yyyy-MM-dd)是否在date2之后或相等
+     *
+     * @param date1 第一个日期
+     * @param date2 第二个日期
+     * @return 若date1在date2之后或相等则返回true,否则返回false(任意日期为null时返回false)
+     */
+    public static boolean afterSameDay(Date date1, Date date2) {
+        if (date1 != null && date2 != null) {
+            // 获取两个日期的当天起始时间(00:00:00),忽略时分秒
+            Date beginOfDate1 = DateUtil.beginOfDay(date1);
+            Date beginOfDate2 = DateUtil.beginOfDay(date2);
+            // 比较起始时间:>= 表示date1在date2之后或同一天
+            return beginOfDate1.compareTo(beginOfDate2) >= 0;
+        }
+        return false;
+    }
 }

+ 2 - 1
yt-common/src/main/java/com/ytpm/util/NumberUtils.java

@@ -34,6 +34,7 @@ public class NumberUtils extends NumberUtil {
             numStr = StrUtil.trim(str.replace("%", ""));
         }
         return toBigDecimal(numStr)
-                .divide(new BigDecimal("100"), scale, roundingMode);
+                .divide(new BigDecimal("100"), scale, roundingMode)
+                .stripTrailingZeros();
     }
 }

+ 2 - 1
yt-novel/yt-novel-service/src/main/java/com/ytpm/novel/controller/NovelController.java

@@ -5,6 +5,7 @@ import com.ytpm.app.model.YtNovelChapter;
 import com.ytpm.novel.model.dto.YtNovelCategoryDto;
 import com.ytpm.general.Result;
 import com.ytpm.general.ResultTable;
+import com.ytpm.novel.model.dto.YtNovelChapterDto;
 import com.ytpm.novel.model.dto.YtNovelDto;
 import com.ytpm.novel.model.param.NovelPageParam;
 import com.ytpm.novel.model.param.NovelRecordParam;
@@ -44,7 +45,7 @@ public class NovelController {
 
     @ApiOperation("获取小说章节列表")
     @PostMapping("/chapter/page")
-    public ResultTable<YtNovelChapter> queryNovelCategoryList(@RequestBody NovelPageParam param) {
+    public ResultTable<YtNovelChapterDto> queryNovelCategoryList(@RequestBody NovelPageParam param) {
         return ResultTable.resultTableOk(novelService.selectNovelChapterPage(param));
     }
 

+ 2 - 1
yt-novel/yt-novel-service/src/main/java/com/ytpm/novel/dao/NovelMapper.java

@@ -6,6 +6,7 @@ import com.ytpm.app.model.YtNovelChapter;
 import com.ytpm.app.model.YtNovelShelf;
 import com.ytpm.app.model.YtNovelReadRecord;
 import com.ytpm.novel.model.dto.YtNovelCategoryDto;
+import com.ytpm.novel.model.dto.YtNovelChapterDto;
 import com.ytpm.novel.model.dto.YtNovelDto;
 import com.ytpm.novel.model.param.NovelPageParam;
 import org.apache.ibatis.annotations.Mapper;
@@ -28,7 +29,7 @@ public interface NovelMapper {
     /**
      * 分页查询小说章节
      */
-    List<YtNovelChapter> selectNovelChapterPage(@Param("param") NovelPageParam param);
+    List<YtNovelChapterDto> selectNovelChapterPage(@Param("param") NovelPageParam param);
 
     /**
      * 根据小说ID查询小说信息

+ 0 - 3
yt-novel/yt-novel-service/src/main/java/com/ytpm/novel/model/dto/YtNovelDto.java

@@ -42,9 +42,6 @@ public class YtNovelDto implements Serializable {
     @ApiModelProperty("连载状态|0连载中|1完结")
     private Integer state;
 
-    @ApiModelProperty("是否已在书架|0否|1是")
-    private Integer ifSelfShelf;
-
     @ApiModelProperty("最后阅读章节ID")
     private String lastReadChapterId;
     @ApiModelProperty("最后阅读章节")

+ 2 - 2
yt-novel/yt-novel-service/src/main/java/com/ytpm/novel/service/NovelService.java

@@ -2,8 +2,8 @@ package com.ytpm.novel.service;
 
 
 import com.github.pagehelper.PageInfo;
-import com.ytpm.app.model.YtNovelChapter;
 import com.ytpm.novel.model.dto.YtNovelCategoryDto;
+import com.ytpm.novel.model.dto.YtNovelChapterDto;
 import com.ytpm.novel.model.dto.YtNovelDto;
 import com.ytpm.novel.model.param.NovelPageParam;
 import com.ytpm.novel.model.param.NovelRecordParam;
@@ -27,7 +27,7 @@ public interface NovelService {
      * 分页查询小说章节<br>
      * 查询参数: 小说ID
      */
-    PageInfo<YtNovelChapter> selectNovelChapterPage(NovelPageParam param);
+    PageInfo<YtNovelChapterDto> selectNovelChapterPage(NovelPageParam param);
 
     /**
      * 获取小说详情

+ 2 - 2
yt-novel/yt-novel-service/src/main/java/com/ytpm/novel/service/impl/NovelServiceImpl.java

@@ -55,12 +55,12 @@ public class NovelServiceImpl implements NovelService {
     }
 
     @Override
-    public PageInfo<YtNovelChapter> selectNovelChapterPage(NovelPageParam param) {
+    public PageInfo<YtNovelChapterDto> selectNovelChapterPage(NovelPageParam param) {
         PageHelper.startPage(param.getPage(), param.getLimit());
         if (StrUtil.isEmpty(param.getNovelId())) {
             throw new CustomerException("小说ID不能为空");
         }
-        List<YtNovelChapter> list = new ArrayList<>();
+        List<YtNovelChapterDto> list = new ArrayList<>();
         if (param.getNovelId() != null) {
             list = novelMapper.selectNovelChapterPage(param);
         }

+ 36 - 15
yt-novel/yt-novel-service/src/main/java/com/ytpm/novel/service/impl/UserServiceImpl.java

@@ -2,7 +2,7 @@ package com.ytpm.novel.service.impl;
 
 
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.date.DateTime;
 import com.github.pagehelper.PageHelper;
 import com.ytpm.advertise.enums.AdSourceTypeEnum;
 import com.ytpm.agent.enums.UserStatusEnum;
@@ -25,6 +25,7 @@ import com.ytpm.novel.service.UserService;
 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.stereotype.Service;
 
@@ -68,7 +69,7 @@ public class UserServiceImpl implements UserService {
                 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 result;
     }
@@ -76,29 +77,49 @@ public class UserServiceImpl implements UserService {
     /**
      * 设置视频记录和登录信息
      */
-    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 = com.ytpm.util.DateUtil.date();
         for (YtAppUserListView user : result) {
             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);
+                // 默认筛选今日广告记录 并计算前三日收益
+                ytDyzAdRecords = userAdMap.get(user.getUserId()).stream()
+                        .filter(s -> com.ytpm.util.DateUtil.isSameDay(currentDate, com.ytpm.util.DateUtil.parseDate(s.getFinishTime())))
+                        .collect(Collectors.toList());
+                todayIncome = ytDyzAdRecords.stream().map(YtDyzAdRecord::getRevenue).reduce(BigDecimal.ZERO, BigDecimal::add);
                 // 统计4天-今日收益=前三日收益
                 if (user.getNearlyIncome() != null && user.getNearlyIncome().compareTo(todayIncome) >= 0) {
                     user.setNearlyIncome(user.getNearlyIncome().subtract(todayIncome));
                 }
-            } else {
-                user.setTodayIncome(BigDecimal.ZERO);
-                user.setTodayVideo(0);
+                // 如果传递时间段 则按时间段筛选广告记录
+                if (param.getLastLoginTimeBegin() != null || param.getLastLoginTimeEnd() != null) {
+                    if (param.getLastLoginTimeEnd() != null) {
+                        ytDyzAdRecords = userAdMap.get(user.getUserId()).stream()
+                                .filter(record -> com.ytpm.util.DateUtil.afterSameDay(
+                                        param.getLastLoginTimeEnd(), com.ytpm.util.DateUtil.parseDate(record.getFinishTime())))
+                                .collect(Collectors.toList());
+                    }
+                    if (param.getLastLoginTimeEnd() != null) {
+                        ytDyzAdRecords = ytDyzAdRecords.stream()
+                                .filter(record -> com.ytpm.util.DateUtil.beforeSameDay(
+                                        param.getLastLoginTimeEnd(), DateUtil.parseDate(record.getFinishTime())))
+                                .collect(Collectors.toList());
+                    }
+                    todayIncome = ytDyzAdRecords.stream().map(YtDyzAdRecord::getRevenue).reduce(BigDecimal.ZERO, BigDecimal::add);
+                }
+                todayVideo = (int) ytDyzAdRecords.stream()
+                        .filter(record -> record.getAdSourceType() == AdSourceTypeEnum.rewarded_video.getAdSourceType())
+                        .count();
             }
+            user.setTodayVideo(todayVideo);
+            user.setTodayIncome(todayIncome);
         }
     }
 

+ 2 - 2
yt-novel/yt-novel-service/src/main/java/com/ytpm/novel/service/impl/VisitorLoginServiceImpl.java

@@ -122,12 +122,12 @@ public class VisitorLoginServiceImpl extends AbstractLoginService {
         // 唯一性判断
         YtNovelUser ytNovelUser = appUserMapper.getByDeviceAndDitch(loginParam.getDeviceId(), loginParam.getDitchId());
         if (ytNovelUser == null) {
-            log.warn(StrUtil.format("visitor register[ deviceId:{}, ditchId: {}]",
+            log.info(StrUtil.format("visitor register[ deviceId:{}, ditchId: {}]",
                     loginParam.getDeviceId(), loginParam.getDitchId()));
             beforeRegistryUser(loginParam, paramMap);
             ytNovelUser = registryUser(loginParam, paramMap);
         } else {
-            log.warn(StrUtil.format("visitor login[ deviceId:{}, ditchId: {}]",
+            log.info(StrUtil.format("visitor login[ deviceId:{}, ditchId: {}]",
                     loginParam.getDeviceId(), loginParam.getDitchId()));
             //当前渠道已有用户,校验用户是否处于风控中 & 更新用户信息
             beforeDeadWithUserCrud(loginParam, ytNovelUser, paramMap);

+ 0 - 2
yt-novel/yt-novel-service/src/main/resources/bootstrap.yml

@@ -7,8 +7,6 @@ spring:
   profiles:
     # 当前为本地模式
     active: local
-server:
-  port: 25829
 yt:
   port: 8848
   file-extension: yml

+ 1 - 1
yt-novel/yt-novel-service/src/main/resources/mapper/AppUserMapper.xml

@@ -493,7 +493,7 @@
         select
             user_id,phone,device_id, head_img, nick_name, registry_time, last_login_time, last_login_ip, login_days,
             total_video, total_income, nearly_income, red_packet_balance, red_packet_amount, points_balance, points_total,
-            withdraw_total, sign_days, user_status, risk_reason, wx_open_id, ditch_id, app_id, platform_id, power,unlock_timer
+            withdraw_total, sign_days, user_status, risk_reason, wx_open_id, ditch_id, app_id, platform_id, power
         from yt_dyz_user
         where wx_open_id = #{openid}
     </select>

+ 2 - 2
yt-novel/yt-novel-service/src/main/resources/mapper/NovelMapper.xml

@@ -43,7 +43,7 @@
         where user_id =#{userId} and deleted =0;
     </update>
 
-    <select id="selectByPrimaryKey" resultType="com.ytpm.novel.model.dto.YtNovelDto">
+    <select id="selectByPrimaryKey" resultType="com.ytpm.app.model.YtNovel">
         select novel_id,
                category_id,
                novel_name,
@@ -200,7 +200,7 @@
         order by read_time desc
         limit 1
     </select>
-    <select id="selectNovelChapterPage" resultType="com.ytpm.app.model.YtNovelChapter">
+    <select id="selectNovelChapterPage" resultType="com.ytpm.novel.model.dto.YtNovelChapterDto">
         select chapter_id,
                novel_id,
                chapter,

+ 37 - 16
yt-question/yt-question-service/src/main/java/com/ytpm/question/controller/UserController.java

@@ -2,7 +2,7 @@ package com.ytpm.question.controller;
 
 import cn.hutool.core.bean.BeanUtil;
 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 cn.hutool.extra.qrcode.QrCodeUtil;
 import com.alibaba.fastjson.JSONObject;
@@ -38,10 +38,11 @@ import com.ytpm.question.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.apache.commons.codec.binary.Base64;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cloud.context.config.annotation.RefreshScope;
-import org.apache.commons.codec.binary.Base64;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -114,36 +115,56 @@ 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())) {
                 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);
+                // 默认筛选今日广告记录 并计算前三日收益
+                ytDyzAdRecords = userAdMap.get(user.getUserId()).stream()
+                        .filter(s -> DateUtil.isSameDay(currentDate, DateUtil.parseDate(s.getFinishTime())))
+                        .collect(Collectors.toList());
+                todayIncome = ytDyzAdRecords.stream().map(YtDyzAdRecord::getRevenue).reduce(BigDecimal.ZERO, BigDecimal::add);
                 // 统计4天-今日收益=前三日收益
                 if (user.getNearlyIncome() != null && user.getNearlyIncome().compareTo(todayIncome) >= 0) {
                     user.setNearlyIncome(user.getNearlyIncome().subtract(todayIncome));
                 }
-            } else {
-                user.setTodayIncome(BigDecimal.ZERO);
-                user.setTodayVideo(0);
+                // 如果传递时间段 则按时间段筛选广告记录
+                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).reduce(BigDecimal.ZERO, BigDecimal::add);
+                }
+                todayVideo = (int) ytDyzAdRecords.stream()
+                        .filter(record -> record.getAdSourceType() == AdSourceTypeEnum.rewarded_video.getAdSourceType())
+                        .count();
             }
+            user.setTodayVideo(todayVideo);
+            user.setTodayIncome(todayIncome);
         }
     }