소스 검색

fix 系统选新班

he2802 3 년 전
부모
커밋
7ea40ed469

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserBankRecordAddBo.java

@@ -63,4 +63,5 @@ public class UserBankRecordAddBo {
     /** grade_id */
     @ApiModelProperty("班级ID")
     private Long gradeId;
+
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserStudyRecordAddBo.java

@@ -62,4 +62,10 @@ public class UserStudyRecordAddBo {
     /** 照片添加 */
     @ApiModelProperty("照片添加")
     private String photo;
+    /** 视频当前播放时刻 */
+    @ApiModelProperty("视频当前播放时刻")
+    private Long videoCurrentTime;
+    /** 用户初次学习开始时间 */
+    @ApiModelProperty("用户初次学习开始时间")
+    private Long firstStartTime;
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserStudyRecordEditBo.java

@@ -70,6 +70,12 @@ public class UserStudyRecordEditBo {
     @ApiModelProperty("班级ID")
     private Long gradeId;
 
+    /** 视频当前播放时刻 */
+    @ApiModelProperty("视频当前播放时刻")
+    private Long videoCurrentTime;
 
+    /** 用户初次学习开始时间 */
+    @ApiModelProperty("用户初次学习开始时间")
+    private Long firstStartTime;
 
 }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/UserStudyRecord.java

@@ -57,6 +57,10 @@ private static final long serialVersionUID=1L;
 
     /** 绑定计划ID */
     private Long planId;
+    /** 视频当前播放时刻 */
+    private Long videoCurrentTime;
+    /** 用户初次学习开始时间 */
+    private Long firstStartTime;
 
 
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserStudyRecordService.java

@@ -23,6 +23,8 @@ public interface IUserStudyRecordService extends IService<UserStudyRecord> {
 	 */
 	UserStudyRecordVo queryById(Long recordId);
 
+	UserStudyRecordVo queryFirst(UserStudyRecordQueryBo bo);
+
 	UserStudyRecordVo queryLast(UserStudyRecordQueryBo bo);
 
 	/**

+ 24 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserStudyRecordServiceImpl.java

@@ -110,6 +110,22 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
         return BeanUtil.toBean(db, UserStudyRecordVo.class);
     }
 
+    @Override
+    public UserStudyRecordVo queryFirst(UserStudyRecordQueryBo bo) {
+        LambdaQueryWrapper<UserStudyRecord> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getUserId() != null, UserStudyRecord::getUserId, bo.getUserId());
+        lqw.eq(bo.getCourseId() != null, UserStudyRecord::getCourseId, bo.getCourseId());
+        lqw.eq(bo.getSectionId() != null, UserStudyRecord::getSectionId, bo.getSectionId());
+        lqw.eq(bo.getGoodsId() != null, UserStudyRecord::getGoodsId, bo.getGoodsId());
+        lqw.eq(bo.getModuleId() != null, UserStudyRecord::getModuleId, bo.getModuleId());
+        lqw.eq(bo.getGradeId() != null, UserStudyRecord::getGradeId, bo.getGradeId());
+        UserStudyRecord last = this.getOne(lqw.ge(UserStudyRecord::getFirstStartTime,0).last("limit 1"));
+        if(Validator.isEmpty(last)){
+            return null;
+        }
+        return BeanUtil.toBean(last, UserStudyRecordVo.class);
+    }
+
     @Override
     public UserStudyRecordVo queryLast(UserStudyRecordQueryBo bo) {
         LambdaQueryWrapper<UserStudyRecord> lqw = Wrappers.lambdaQuery();
@@ -118,6 +134,7 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
         lqw.eq(bo.getSectionId() != null, UserStudyRecord::getSectionId, bo.getSectionId());
         lqw.eq(bo.getGoodsId() != null, UserStudyRecord::getGoodsId, bo.getGoodsId());
         lqw.eq(bo.getModuleId() != null, UserStudyRecord::getModuleId, bo.getModuleId());
+        lqw.eq(bo.getGradeId() != null, UserStudyRecord::getGradeId, bo.getGradeId());
         lqw.orderByDesc(UserStudyRecord::getRecordId);
         UserStudyRecord last = this.getOne(lqw.last("limit 1"));
         if(Validator.isNotEmpty(last)&&Validator.isNotEmpty(last.getStatus())&&last.getStatus()==1){
@@ -181,12 +198,19 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
         if(courseSectionVo.getSectionType()==2&&Validator.isNotEmpty(bo.getPhoto())){  //直播有拍照即学完
             bo.setStatus(1);
         }
+        UserStudyRecordQueryBo userStudyRecordQueryBo = BeanUtil.toBean(bo, UserStudyRecordQueryBo.class);
+        UserStudyRecordVo first = queryFirst(userStudyRecordQueryBo);
         UserStudyRecord add = BeanUtil.toBean(bo, UserStudyRecord.class);
         validEntityBeforeSave(add);
         add.setCreateTime(DateUtils.getNowTime());
         add.setUpdateTime(DateUtils.getNowTime());
         add.setStartTime(DateUtils.getNowTime() - add.getStudyDuration());
         add.setEndTime(DateUtils.getNowTime());
+        if(Validator.isNotEmpty(first)&&Validator.isNotEmpty(first.getFirstStartTime())){
+            add.setFirstStartTime(first.getFirstStartTime());
+        }else{
+            add.setFirstStartTime(add.getStartTime());
+        }
         this.save(add);
         //新增学时记录,照片
         userPeriodSave(add, bo);

+ 8 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserStudyRecordVo.java

@@ -78,5 +78,12 @@ public class UserStudyRecordVo {
 	private String realname;
 	@ApiModelProperty("视频标题")
 	private String title;
-
+	/** 视频当前播放时刻 */
+	@Excel(name = "视频当前播放时刻")
+	@ApiModelProperty("视频当前播放时刻")
+	private Long videoCurrentTime;
+	/** 用户初次学习开始时间 */
+	@Excel(name = "用户初次学习开始时间")
+	@ApiModelProperty("用户初次学习开始时间")
+	private Long firstStartTime;
 }

+ 23 - 14
zhongzheng-system/src/main/resources/mapper/modules/user/UserStudyRecordMapper.xml

@@ -16,6 +16,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="endTime" column="end_time"/>
         <result property="coverUrl" column="cover_url"/>
         <result property="courseName" column="course_name"/>
+        <result property="videoCurrentTime" column="video_current_time"/>
+        <result property="firstStartTime" column="first_start_time"/>
     </resultMap>
 
     <resultMap type="com.zhongzheng.modules.user.vo.GoodsStudyRecordVo" id="GoodsStudyRecordVoResult">
@@ -36,6 +38,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="educationName" column="education_name"/>
         <result property="startTime" column="start_time"/>
         <result property="endTime" column="end_time"/>
+
     </resultMap>
 
     <resultMap type="com.zhongzheng.modules.user.vo.SubjectStudyRecordVo" id="SubjectStudyRecordVoResult">
@@ -180,24 +183,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             NULL as chapter_name,
             NULL as module_name,
             s.duration_time,
-            (select i.start_time FROM user_study_record i where m.menu_id = i.section_id
-        <if test="userId != null and userId !=''">
-            and i.user_id = #{userId}
-        </if>
-            ORDER BY i.start_time ASC LIMIT 1) as start_time,
-            (select i.end_time FROM user_study_record i where m.menu_id = i.section_id
+        usr1.start_time,
+        usr1.end_time,
+        usr1.`status`,
+        usr1.video_current_time
+        FROM
+            course_menu m
+            LEFT JOIN course_section s ON m.menu_id = s.section_id
+        LEFT JOIN (SELECT
+        any_value ( usr.first_start_time ) start_time,
+        any_value ( usr.video_current_time ) video_current_time,
+        any_value ( usr.end_time ) end_time,
+        any_value ( usr.`status` ) `status`,
+        any_value ( usr.section_id ) section_id
+        FROM
+        ( SELECT * FROM user_study_record WHERE 1=1
         <if test="userId != null and userId !=''">
-            and i.user_id = #{userId}
+                AND user_id = #{userId}
         </if>
-            ORDER BY i.start_time DESC LIMIT 1) as end_time,
-            (select i.`status` FROM user_study_record i where m.menu_id = i.section_id
         <if test="userId != null and userId !=''">
-            and i.user_id = #{userId}
+            AND goods_id = #{goodsId}
         </if>
-        LIMIT 1) as `status`
-        FROM
-            course_menu m
-            LEFT JOIN course_section s ON m.menu_id = s.section_id
+                 AND course_id = #{courseId} ORDER BY record_id DESC LIMIT 9999 ) usr
+        GROUP BY
+        usr.section_id) usr1 on m.menu_id = usr1.section_id
         WHERE
             m.type =3
         <if test="courseId != null and courseId !=''">