Ver código fonte

feat: 优化会员看课统计优化

caoliqin 3 dias atrás
pai
commit
f4b2eb8f0f

+ 17 - 0
fs-service-system/src/main/java/com/fs/course/service/impl/FsUserWatchCourseStatisticsServiceImpl.java

@@ -1,5 +1,6 @@
 package com.fs.course.service.impl;
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -142,26 +143,42 @@ public class FsUserWatchCourseStatisticsServiceImpl extends ServiceImpl<FsUserWa
             FsUserWatchCourseStatistics answerLogData = answerLogMap.get(key);
             FsUserWatchCourseStatistics userTotalData = userTotalMap.get(data.getCompanyUserId());
             BeanUtils.copyProperties(data, vo);
+
+            // 单独一个一个set,不用copy,避免copy出来的结果被前面的覆盖
             if(userTotalData != null){
                 vo.setUserNum(userTotalData.getUserNum());
                 vo.setNewUserNum(userTotalData.getNewUserNum());
+            } else {
+                vo.setUserNum(0);
+                vo.setNewUserNum(0);
             }
 
             if(watchLogData != null) {
                 vo.setWatchNum(watchLogData.getWatchNum());
                 vo.setCompleteWatchNum(watchLogData.getCompleteWatchNum());
                 vo.setCompleteWatchRate(watchLogData.getCompleteWatchRate());
+            } else {
+                vo.setWatchNum(0);
+                vo.setCompleteWatchNum(0);
+                vo.setCompleteWatchRate(BigDecimal.ZERO);
             }
 
             if(redPacketLogData != null) {
                 vo.setRedPacketNum(redPacketLogData.getRedPacketNum());
                 vo.setRedPacketAmount(redPacketLogData.getRedPacketAmount());
+            } else {
+                vo.setRedPacketNum(0);
+                vo.setRedPacketAmount(BigDecimal.ZERO);
             }
 
             if(answerLogData != null) {
                 vo.setAnswerNum(answerLogData.getAnswerNum());
                 vo.setAnswerRightNum(answerLogData.getAnswerRightNum());
                 vo.setAnswerRightRate(answerLogData.getAnswerRightRate());
+            } else {
+                vo.setAnswerNum(0);
+                vo.setAnswerRightNum(0);
+                vo.setAnswerRightRate(BigDecimal.ZERO);
             }
 
             vo.setCreateTime(new Date());

+ 7 - 5
fs-service-system/src/main/java/com/fs/course/service/impl/FsUserWatchStatisticsServiceImpl.java

@@ -1,5 +1,6 @@
 package com.fs.course.service.impl;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -146,11 +147,12 @@ public class FsUserWatchStatisticsServiceImpl extends ServiceImpl<FsUserWatchSta
 //        }).collect(Collectors.toList());
         for (FsUserWatchStatistics courseWatchStatistic : courseWatchStatistics) {
             FsUserWatchStatistics count = watchStatisticsMap.getOrDefault(courseWatchStatistic.getPeriodId(), courseWatchStatistic);
-            courseWatchStatistic.setUserNum(userTotalStatistics.getUserNum());
-            courseWatchStatistic.setNewUserNum(userTotalStatistics.getNewUserNum());
-            courseWatchStatistic.setWatchNum(count.getWatchNum());
-            courseWatchStatistic.setCompleteWatchNum(count.getCompleteWatchNum());
-            courseWatchStatistic.setCompleteWatchRate(count.getCompleteWatchRate());
+            // 单独set,不用copy,避免copy出来的结果被前面的覆盖
+            courseWatchStatistic.setUserNum(userTotalStatistics.getUserNum() != null ? userTotalStatistics.getUserNum():0);
+            courseWatchStatistic.setNewUserNum(userTotalStatistics.getNewUserNum() != null ? userTotalStatistics.getNewUserNum():0);
+            courseWatchStatistic.setWatchNum(count.getWatchNum() !=null ? count.getWatchNum():0);
+            courseWatchStatistic.setCompleteWatchNum(count.getCompleteWatchNum() != null ? count.getCompleteWatchNum():0);
+            courseWatchStatistic.setCompleteWatchRate(count.getCompleteWatchRate() != null ? count.getCompleteWatchRate(): BigDecimal.ZERO);
             courseWatchStatistic.setCreateTime(new Date());
             courseWatchStatistic.setUpdateTime(new Date());
         }