Bläddra i källkod

feat:看课统计表写入调整、会员详情统计查询优化

caoliqin 3 veckor sedan
förälder
incheckning
deab13dba7

+ 2 - 0
fs-service-system/src/main/java/com/fs/store/mapper/FsUserMapper.java

@@ -219,6 +219,8 @@ public interface FsUserMapper
 
     int getRepeatUserNumber(@Param("userId") Long userId);
 
+    UserDetailsVO getCountWatchCourse (@Param("userId") Long userId, @Param("fsUserId") Long fsUserId, @Param("dateTag") String dateTag);
+
     UserDetailsVO getCountAnswer (@Param("userId") Long userId, @Param("fsUserId") Long fsUserId, @Param("dateTag") String dateTag);
 
     UserDetailsVO getCountRedPacket(@Param("userId") Long userId, @Param("fsUserId") Long fsUserId, @Param("dateTag") String dateTag);

+ 6 - 1
fs-service-system/src/main/java/com/fs/store/service/impl/FsUserServiceImpl.java

@@ -576,11 +576,16 @@ public class FsUserServiceImpl implements IFsUserService
 
     @Override
     public UserDetailsVO getUserDetails(Long userId, Long fsUserId, String dateTag) {
+        UserDetailsVO countWatchCourse = fsUserMapper.getCountWatchCourse(userId, fsUserId, dateTag);
         UserDetailsVO countAnswer = fsUserMapper.getCountAnswer(userId, fsUserId, dateTag);
         UserDetailsVO countRedPacket = fsUserMapper.getCountRedPacket(userId, fsUserId, dateTag);
         UserDetailsVO vo = new UserDetailsVO();
+        if (countWatchCourse != null){
+            BeanUtils.copyProperties(countWatchCourse, vo);
+        }
         if (countRedPacket != null) {
-            BeanUtils.copyProperties(countRedPacket, vo);
+            vo.setAnswerRedPacketTime(countRedPacket.getAnswerRedPacketTime());
+            vo.setAnswerRedPacketAmount(countRedPacket.getAnswerRedPacketAmount());
         }
         if (countAnswer != null) {
             vo.setAnswerTime(countAnswer.getAnswerTime());

+ 1 - 0
fs-service-system/src/main/resources/mapper/store/FsUserCourseCountMapper.xml

@@ -159,6 +159,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 WHEN a.log_type = 3 THEN
                     3
                 END AS STATUS,
+            DATEDIFF(DATE_FORMAT(NOW(),'%Y-%m-%d'),DATE_FORMAT(a.last_heartbeat_time,'%Y-%m-%d')) as stop_watch_days,
             max( CASE WHEN fwl.log_type = 2 THEN fwl.last_heartbeat_time END ) AS completeWatchDate,
             count( CASE WHEN fwl.log_type = 2 THEN fwl.log_id END ) AS completeWatchCount,
             count( CASE WHEN fwl.log_type != 3 THEN fwl.log_id END ) AS watch_times,

+ 38 - 9
fs-service-system/src/main/resources/mapper/store/FsUserMapper.xml

@@ -511,12 +511,12 @@
         <if test="continueMissCourseSort != null and continueMissCourseSort !='' ">
             order by
             <choose>
-                <when test = "continueMissCourseSort == 0">
-                    fs_user_course_count.miss_course_days desc
-                </when>
-                <when test = "continueMissCourseSort == 1">
-                    fs_user_course_count.miss_course_days asc
-                </when>
+<!--                <when test = "continueMissCourseSort == 0">-->
+<!--                    fs_user_course_count.miss_course_days desc-->
+<!--                </when>-->
+<!--                <when test = "continueMissCourseSort == 1">-->
+<!--                    fs_user_course_count.miss_course_days asc-->
+<!--                </when>-->
                 <when test = "continueMissCourseSort == 2">
                     fs_user.create_time desc
                 </when>
@@ -555,6 +555,38 @@
           AND fs_user_company_user.is_repeat_fans = 1 and fs_user.`status` = 1
     </select>
 
+    <select id="getCountWatchCourse" resultType="UserDetailsVO">
+        SELECT
+        ifnull( complete_watch_count, 0 ) AS completeWatchCount ,
+        ifnull( watch_times, 0 ) AS watchTimes,
+        fs_user.user_id
+        FROM
+        fs_user_course_count
+        LEFT JOIN fs_user ON fs_user.user_id = fs_user_course_count.user_id
+        LEFT JOIN company_user ON company_user.user_id = fs_user.company_user_id
+        <where>
+        <if test="dateTag != null and dateTag !='' ">
+            <choose>
+                <when test = "dateTag == '今天'">
+                    and to_days(fs_user_course_count.create_time) = to_days(now())
+                </when>
+                <when test = "dateTag == ' 昨天'">
+                    and to_days(now()) - to_days(fs_user_course_count.create_time) &lt;= 1
+                </when>
+                <when test = "dateTag == '前天'">
+                    and to_days(now()) - to_days(fs_user_course_count.create_time) &lt;= 2
+                </when>
+                <when test = "dateTag == '近七天'">
+                    and DATE_SUB(CURDATE(), INTERVAL 7 DAY) &lt;= date(fs_user_course_count.create_time)
+                </when>
+            </choose>
+        </if>
+        </where>
+        GROUP BY
+        fs_user.user_id
+        HAVING
+        fs_user.user_id = #{fsUserId}
+    </select>
 
     <select id="getCountAnswer" resultType="UserDetailsVO">
         SELECT
@@ -625,14 +657,11 @@
         SELECT
         ifnull( count( DISTINCT log_id ), 0 ) AS answerRedPacketTime,
         ifnull( sum( amount ), 0 ) AS answerRedPacketAmount,
-        ifnull( complete_watch_count, 0 ) AS completeWatchCount ,
-        ifnull( watch_times, 0 ) AS watchTimes,
         fs_user.user_id
         FROM
             fs_course_red_packet_log
                 LEFT JOIN fs_user ON fs_user.user_id = fs_course_red_packet_log.user_id
                 LEFT JOIN company_user ON company_user.user_id = fs_user.company_user_id
-                LEFT JOIN fs_user_course_count ON fs_user_course_count.user_id = fs_user.user_id
         WHERE
             company_user.parent_id = #{userId}
             <if test="dateTag != null and dateTag !='' ">