Forráskód Böngészése

参与记录查询调整

Long 1 hónapja
szülő
commit
a5d70525ae

+ 2 - 2
fs-company-app/src/main/java/com/fs/app/controller/FsUserCourseVideoController.java

@@ -94,14 +94,14 @@ public class FsUserCourseVideoController extends AppBaseController {
     @Login
     @ApiOperation("参与记录")
     @GetMapping("/participationRecord")
-    public ResponseResult<Object> participationRecord(@RequestParam Long courseId,
+    public ResponseResult<Object> participationRecord(@RequestParam Long videoId,
                                                       @RequestParam Integer type,
                                                       @RequestParam(required = false) String keyword,
                                                       @RequestParam(required = false, defaultValue = "1") Integer pageNum,
                                                       @RequestParam(required = false, defaultValue = "10") Integer pageSize) {
         log.debug("参与记录 keyword: {}, pageNum: {}, pageSize: {}", keyword, pageNum, pageSize);
         Map<String, Object> params = new HashMap<>();
-        params.put("courseId", courseId);
+        params.put("videoId", videoId);
         params.put("type", type);
         params.put("keyword", keyword);
 

+ 3 - 3
fs-service-system/src/main/java/com/fs/course/mapper/FsCourseAnswerLogsMapper.java

@@ -134,9 +134,9 @@ public interface FsCourseAnswerLogsMapper
      * 查询领取次数
      *
      * @param userId   用户ID
-     * @param courseId 课程ID
+     * @param videoId  小节ID
      * @return count
      */
-    @Select("select count(log_id) from fs_course_red_packet_log where user_id = #{userId} and course_id = #{courseId}")
-    Long selectRedStatus(@Param("userId") Long userId, @Param("courseId") Long courseId);
+    @Select("select count(log_id) from fs_course_red_packet_log where user_id = #{userId} and video_id = #{videoId}")
+    Long selectRedStatus(@Param("userId") Long userId, @Param("videoId") Long videoId);
 }

+ 3 - 3
fs-service-system/src/main/java/com/fs/course/mapper/FsCourseWatchLogMapper.java

@@ -309,9 +309,9 @@ public interface FsCourseWatchLogMapper extends BaseMapper<FsCourseWatchLog> {
      * 聚合查询
      *
      * @param userId   用户ID
-     * @param courseId 课程ID
+     * @param videoId  小节ID
      * @return map
      */
-    @Select("select count(log_id) AS watchCount, count(case when log_type = 2 then log_id end) AS finishCount, sum(duration) AS watchTime from fs_course_watch_log where user_id = #{userId} and course_id = #{courseId}")
-    Map<String, Long> selectSumByUserIdAndCourseId(@Param("userId") Long userId, @Param("courseId") Long courseId);
+    @Select("select count(log_id) AS watchCount, count(case when log_type = 2 then log_id end) AS finishCount, sum(duration) AS watchTime from fs_course_watch_log where user_id = #{userId} and video_id = #{videoId}")
+    Map<String, Object> selectSumByUserIdAndVideoId(@Param("userId") Long userId, @Param("videoId") Long videoId);
 }

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

@@ -417,18 +417,18 @@ public class FsUserCourseServiceImpl implements IFsUserCourseService
             List<CompanyTag> companyTags = companyTagMapper.selectCompanyTagListByUserId(recordVO.getUserId());
             recordVO.setTags(companyTags);
 
-            Map<String, Long> sumMap = fsCourseWatchLogMapper.selectSumByUserIdAndCourseId(recordVO.getUserId(), recordVO.getCourseId());
+            Map<String, Object> sumMap = fsCourseWatchLogMapper.selectSumByUserIdAndVideoId(recordVO.getUserId(), recordVO.getVideoId());
             // 观看次数
-            recordVO.setWatchCount(sumMap.getOrDefault("watchCount", 0L).intValue());
+            recordVO.setWatchCount((Long) sumMap.getOrDefault("watchCount", 0L));
 
             // 完播次数
-            recordVO.setFinishCount(sumMap.getOrDefault("finishCount", 0L).intValue());
+            recordVO.setFinishCount((Long) sumMap.getOrDefault("finishCount", 0L));
 
             // 观看时长
-            recordVO.setWatchTime(sumMap.getOrDefault("watchTime", 0L).intValue());
+            recordVO.setWatchTime((BigDecimal) sumMap.getOrDefault("watchTime", BigDecimal.ZERO));
 
             // 领取状态
-            Long count = fsCourseAnswerLogsMapper.selectRedStatus(recordVO.getUserId(), recordVO.getCourseId());
+            Long count = fsCourseAnswerLogsMapper.selectRedStatus(recordVO.getUserId(), recordVO.getVideoId());
             if (Objects.nonNull(count) && count > 0) {
                 recordVO.setRedStatus(1);
             } else {

+ 6 - 5
fs-service-system/src/main/java/com/fs/course/vo/FsUserCourseParticipationRecordVO.java

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fs.company.domain.CompanyTag;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.List;
 
@@ -14,9 +15,9 @@ public class FsUserCourseParticipationRecordVO {
      */
     private Long userId;
     /**
-     * 课程ID
+     * 小节D
      */
-    private Long courseId;
+    private Long videoId;
     /**
      * 用户昵称
      */
@@ -41,15 +42,15 @@ public class FsUserCourseParticipationRecordVO {
     /**
      * 观看次数
      */
-    private Integer watchCount;
+    private Long watchCount;
     /**
      * 完播次数
      */
-    private Integer finishCount;
+    private Long finishCount;
     /**
      * 累计时长
      */
-    private Integer watchTime;
+    private BigDecimal watchTime;
     /**
      * 红包领取状态
      */

+ 7 - 6
fs-service-system/src/main/resources/mapper/course/FsUserCourseMapper.xml

@@ -256,19 +256,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <!-- 查询用户参与记录 -->
     <select id="getParticipationRecordByMap" resultType="com.fs.course.vo.FsUserCourseParticipationRecordVO">
-        select distinct
+        select
             fu.user_id,
-            fuc.course_id,
+            fucv.video_id,
             fu.nickname as nickName,
             fu.username as userName,
             fu.avatar,
             fu.phone as phoneNumber,
             fu.create_time,
             max(fcwl.create_time) as watchDate
-        from fs_user_course fuc
-        inner join fs_course_watch_log fcwl on fcwl.course_id = fuc.course_id
+        from fs_user_course_video fucv
+        inner join fs_course_watch_log fcwl on fcwl.video_id = fucv.video_id
         inner join fs_user fu on fu.user_id = fcwl.user_id
-        where fuc.course_id = #{params.courseId}
+        where fucv.video_id = #{params.videoId}
         <if test="params.keyword != null and params.keyword != ''">
             and (
                 fu.user_id = #{params.keyword}
@@ -282,7 +282,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 and (
                     select count(log_id) as count
                     from fs_course_answer_logs
-                    where user_id = fu.user_id and course_id = fuc.course_id and is_right = 1
+                    where user_id = fu.user_id and fcwl.video_id = fucv.video_id and is_right = 1
                 ) > 0
             </when>
             <when test="params.type == 1">
@@ -295,6 +295,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 and fcwl.log_type = 3
             </otherwise>
         </choose>
+        group by fu.user_id, fucv.video_id, fu.nickname, fu.username, fu.avatar, fu.phone, fu.create_time
     </select>
     <select id="selectFsUserCourseListCompanyPVO" resultType="com.fs.course.vo.FsUserCourseListPVO">
         select c.*,cc.cate_name,ucc.cate_name as sub_cate_name from fs_user_course  c