Browse Source

学员列表

change 4 năm trước cách đây
mục cha
commit
ca0cf500c3

+ 28 - 1
zhongzheng-admin/src/main/java/com/zhongzheng/controller/grade/ClassStudentController.java

@@ -15,9 +15,11 @@ import com.zhongzheng.modules.grade.vo.ClassGradeInterfaceVo;
 import com.zhongzheng.modules.grade.vo.ClassGradeSysVo;
 import com.zhongzheng.modules.grade.vo.ClassGradeUserVo;
 import com.zhongzheng.modules.grade.vo.ClassGradeVo;
+import com.zhongzheng.modules.user.bo.SubjectStudyRecordQueryBo;
 import com.zhongzheng.modules.user.bo.UserQueryBo;
 import com.zhongzheng.modules.user.service.IUserStudyRecordService;
 import com.zhongzheng.modules.user.vo.GoodsStudyRecordVo;
+import com.zhongzheng.modules.user.vo.SubjectStudyRecordVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
@@ -50,7 +52,7 @@ public class ClassStudentController extends BaseController {
     private final IUserStudyRecordService iUserStudyRecordService;
 
     /**
-     * 查询班级列表
+     * 查询学员商品学习记录
      */
     @ApiOperation("查询学员商品学习记录")
     @PreAuthorize("@ss.hasPermi('grade:student:list')")
@@ -60,4 +62,29 @@ public class ClassStudentController extends BaseController {
         List<GoodsStudyRecordVo> list = iUserStudyRecordService.queryGoods(bo);
         return getDataTable(list);
     }
+
+
+    /**
+     * 查询学员课程科目学习记录
+     */
+    @ApiOperation("查询学员课程科目学习记录")
+    @PreAuthorize("@ss.hasPermi('grade:student:listSubject')")
+    @GetMapping("/listSubject")
+    public TableDataInfo<SubjectStudyRecordVo> listSubject(SubjectStudyRecordQueryBo bo) {
+        startPage();
+        List<SubjectStudyRecordVo> list = iUserStudyRecordService.listSubject(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询学员课程节学习记录
+     */
+    @ApiOperation("查询学员课程节学习记录")
+    @PreAuthorize("@ss.hasPermi('grade:student:listSection')")
+    @GetMapping("/listSection")
+    public TableDataInfo<SubjectStudyRecordVo> listSection(SubjectStudyRecordQueryBo bo) {
+        startPage();
+        List<SubjectStudyRecordVo> list = iUserStudyRecordService.listSection(bo);
+        return getDataTable(list);
+    }
 }

+ 64 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/SubjectStudyRecordQueryBo.java

@@ -0,0 +1,64 @@
+package com.zhongzheng.modules.user.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 【请填写功能名称】视图对象 mall_package
+ *
+ * @author change
+ * @date 2021-06-24
+ */
+@Data
+@ApiModel("【请填写功能名称】视图对象")
+public class SubjectStudyRecordQueryBo {
+
+    private static final long serialVersionUID = 1L;
+
+    /** 科目ID */
+    @ApiModelProperty("科目ID")
+    private Long subjectId;
+
+    /** 课程ID */
+    @ApiModelProperty("课程ID")
+    private Long courseId;
+
+    /** 学员Id */
+    @ApiModelProperty("学员Id")
+    private Long userId;
+
+    /** 商品ID */
+    @ApiModelProperty("商品ID")
+    private Long goodId;
+
+    /** 科目名称 */
+    @ApiModelProperty("科目名称")
+    private String subjectName;
+
+
+    /** 课程名称 */
+    @ApiModelProperty("课程名称")
+    private String courseName;
+
+    /** 是否开课 1开课 0 未开课 */
+    @ApiModelProperty("是否开课 1开课 0 未开课")
+    private Long beginStatus;
+
+    /** 模块数 */
+    @ApiModelProperty("模块数")
+    private Long moduleNum;
+
+    /** 章数 */
+    @ApiModelProperty("章数")
+    private Long chapterNum;
+
+    /** 节数 */
+    @ApiModelProperty("节数")
+    private Long sectionNum;
+
+    /** 已学节数 */
+    @ApiModelProperty("已学节数")
+    private Long recordNum;
+
+}

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserStudyRecordMapper.java

@@ -1,10 +1,12 @@
 package com.zhongzheng.modules.user.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.user.bo.SubjectStudyRecordQueryBo;
 import com.zhongzheng.modules.user.bo.UserQueryBo;
 import com.zhongzheng.modules.user.bo.UserStudyRecordQueryBo;
 import com.zhongzheng.modules.user.domain.UserStudyRecord;
 import com.zhongzheng.modules.user.vo.GoodsStudyRecordVo;
+import com.zhongzheng.modules.user.vo.SubjectStudyRecordVo;
 import com.zhongzheng.modules.user.vo.UserStudyRecordVo;
 import org.apache.ibatis.annotations.Param;
 
@@ -23,4 +25,8 @@ public interface UserStudyRecordMapper extends BaseMapper<UserStudyRecord> {
     List<UserStudyRecord> selectUserStudy(@Param("userId") Long userId, @Param("courseId") Integer courseId);
 
     List<GoodsStudyRecordVo> queryGoods(UserQueryBo bo);
+
+    List<SubjectStudyRecordVo> listSubject(SubjectStudyRecordQueryBo bo);
+
+    List<SubjectStudyRecordVo> listSection(SubjectStudyRecordQueryBo bo);
 }

+ 6 - 4
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserStudyRecordService.java

@@ -1,12 +1,10 @@
 package com.zhongzheng.modules.user.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.zhongzheng.modules.user.bo.UserQueryBo;
-import com.zhongzheng.modules.user.bo.UserStudyRecordAddBo;
-import com.zhongzheng.modules.user.bo.UserStudyRecordEditBo;
-import com.zhongzheng.modules.user.bo.UserStudyRecordQueryBo;
+import com.zhongzheng.modules.user.bo.*;
 import com.zhongzheng.modules.user.domain.UserStudyRecord;
 import com.zhongzheng.modules.user.vo.GoodsStudyRecordVo;
+import com.zhongzheng.modules.user.vo.SubjectStudyRecordVo;
 import com.zhongzheng.modules.user.vo.UserStudyRecordVo;
 import org.apache.ibatis.annotations.Param;
 
@@ -58,4 +56,8 @@ public interface IUserStudyRecordService extends IService<UserStudyRecord> {
     List<UserStudyRecord> selectUserStudy(Long userId, Integer courseId);
 
 	List<GoodsStudyRecordVo> queryGoods(UserQueryBo bo);
+
+	List<SubjectStudyRecordVo> listSubject(SubjectStudyRecordQueryBo bo);
+
+	List<SubjectStudyRecordVo> listSection(SubjectStudyRecordQueryBo bo);
 }

+ 12 - 4
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserStudyRecordServiceImpl.java

@@ -4,14 +4,12 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.StrUtil;
 import com.zhongzheng.common.utils.DateUtils;
-import com.zhongzheng.modules.user.bo.UserQueryBo;
-import com.zhongzheng.modules.user.bo.UserStudyRecordAddBo;
-import com.zhongzheng.modules.user.bo.UserStudyRecordEditBo;
-import com.zhongzheng.modules.user.bo.UserStudyRecordQueryBo;
+import com.zhongzheng.modules.user.bo.*;
 import com.zhongzheng.modules.user.domain.UserStudyRecord;
 import com.zhongzheng.modules.user.mapper.UserStudyRecordMapper;
 import com.zhongzheng.modules.user.service.IUserStudyRecordService;
 import com.zhongzheng.modules.user.vo.GoodsStudyRecordVo;
+import com.zhongzheng.modules.user.vo.SubjectStudyRecordVo;
 import com.zhongzheng.modules.user.vo.UserStudyRecordVo;
 import com.zhongzheng.modules.user.vo.UserVo;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -134,4 +132,14 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
     public List<GoodsStudyRecordVo> queryGoods(UserQueryBo bo) {
         return baseMapper.queryGoods(bo);
     }
+
+    @Override
+    public List<SubjectStudyRecordVo> listSubject(SubjectStudyRecordQueryBo bo) {
+        return baseMapper.listSubject(bo);
+    }
+
+    @Override
+    public List<SubjectStudyRecordVo> listSection(SubjectStudyRecordQueryBo bo) {
+        return baseMapper.listSection(bo);
+    }
 }

+ 54 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/SectionStudyRecordVo.java

@@ -0,0 +1,54 @@
+package com.zhongzheng.modules.user.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 【请填写功能名称】视图对象 mall_package
+ *
+ * @author change
+ * @date 2021-06-24
+ */
+@Data
+@ApiModel("【请填写功能名称】视图对象")
+public class SectionStudyRecordVo {
+
+    private static final long serialVersionUID = 1L;
+
+    /** 节ID */
+    @ApiModelProperty("节ID")
+    private Long sectionId;
+
+    /** 模块名称 */
+    @ApiModelProperty("模块名称")
+    private String moduleName;
+
+    /** 章名称 */
+    @ApiModelProperty("章名称")
+    private String chapterName;
+
+    /** 节名称 */
+    @ApiModelProperty("节名称")
+    private String sectionName;
+
+
+    /** 节时长 */
+    @ApiModelProperty("节时长")
+    private Long durationTime;
+
+    /** 开始学习时间 */
+    @ApiModelProperty("开始学习时间")
+    private Long startTime;
+
+    /** 结束学习时间 */
+    @ApiModelProperty("结束学习时间")
+    private Long endTime;
+
+    /** 是否完成 1完成 0 未完成 */
+    @ApiModelProperty("是否完成 1完成 0 未完成")
+    private Long status;
+
+
+
+}

+ 60 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/SubjectStudyRecordVo.java

@@ -0,0 +1,60 @@
+package com.zhongzheng.modules.user.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 【请填写功能名称】视图对象 mall_package
+ *
+ * @author change
+ * @date 2021-06-24
+ */
+@Data
+@ApiModel("【请填写功能名称】视图对象")
+public class SubjectStudyRecordVo {
+
+    private static final long serialVersionUID = 1L;
+
+    /** 科目ID */
+    @ApiModelProperty("科目ID")
+    private Long subjectId;
+
+    /** 课程ID */
+    @ApiModelProperty("课程ID")
+    private Long courseId;
+
+    /** 学员Id */
+    @ApiModelProperty("学员Id")
+    private Long userId;
+
+    /** 科目名称 */
+    @ApiModelProperty("科目名称")
+    private String subjectName;
+
+
+    /** 课程名称 */
+    @ApiModelProperty("课程名称")
+    private String courseName;
+
+    /** 是否开课 1开课 0 未开课 */
+    @ApiModelProperty("是否开课 1开课 0 未开课")
+    private Long beginStatus;
+
+    /** 模块数 */
+    @ApiModelProperty("模块数")
+    private Long moduleNum;
+
+    /** 章数 */
+    @ApiModelProperty("章数")
+    private Long chapterNum;
+
+    /** 节数 */
+    @ApiModelProperty("节数")
+    private Long sectionNum;
+
+    /** 已学节数 */
+    @ApiModelProperty("已学节数")
+    private Long recordNum;
+
+}

+ 73 - 1
zhongzheng-system/src/main/resources/mapper/modules/user/UserStudyRecordMapper.xml

@@ -38,6 +38,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="endTime" column="end_time"/>
     </resultMap>
 
+    <resultMap type="com.zhongzheng.modules.user.vo.SubjectStudyRecordVo" id="SubjectStudyRecordVoResult">
+        <result property="userId" column="user_id"/>
+        <result property="subjectId" column="subject_id"/>
+        <result property="courseId" column="course_id"/>
+        <result property="subjectName" column="subject_name"/>
+        <result property="courseName" column="course_name"/>
+        <result property="beginStatus" column="begin_status"/>
+        <result property="moduleNum" column="module_num"/>
+        <result property="chapterNum" column="chapter_num"/>
+        <result property="sectionNum" column="section_num"/>
+        <result property="recordNum" column="record_num"/>
+    </resultMap>
+
+    <resultMap type="com.zhongzheng.modules.user.vo.SectionStudyRecordVo" id="SectionStudyRecordVoResult">
+        <result property="sectionId" column="section_id"/>
+        <result property="moduleName" column="module_name"/>
+        <result property="chapterName" column="chapter_name"/>
+        <result property="sectionName" column="section_name"/>
+        <result property="durationTime" column="duration_time"/>
+        <result property="startTime" column="start_time"/>
+        <result property="endTime" column="end_time"/>
+        <result property="status" column="status"/>
+    </resultMap>
+
     <select id="selectList" parameterType="com.zhongzheng.modules.user.bo.UserStudyRecordQueryBo"  resultMap="UserStudyRecordResult">
         SELECT DISTINCT
         temp.course_id,
@@ -81,7 +105,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             (SELECT s.school_name FROM school s  where s.id = g.school_id) as school_name,
             (SELECT e.education_name FROM course_education_type e  where e.id = g.education_type_id) as education_name,
             (SELECT r.start_time FROM user_study_record r LEFT JOIN goods_course c on r.course_id= c.course_id where 1=1 AND g.goods_id=c.goods_id ORDER BY r.start_time ASC) as start_time,
-            (SELECT r.end_time FROM user_study_record r LEFT JOIN goods_course c on r.course_id= c.course_id where 1=1 AND g.goods_id=c.goods_id ORDER BY r.start_time ASC) as end_time
+            (SELECT r.end_time FROM user_study_record r LEFT JOIN goods_course c on r.course_id= c.course_id where 1=1 AND g.goods_id=c.goods_id ORDER BY r.star t_time ASC) as end_time
         FROM
             class_grade_user u
                 LEFT JOIN class_grade_goods d ON u.grade_id = d.grade_id
@@ -91,4 +115,52 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             and u.user_id = #{userId}
         </if>
     </select>
+
+
+    <select id="listSubject" parameterType="com.zhongzheng.modules.user.bo.SubjectStudyRecordQueryBo"  resultMap="SubjectStudyRecordVoResult">
+        SELECT
+        u.user_id,
+        r.subject_id,
+        r.course_id,
+        r.course_name,
+        (SELECT subject_name FROM course_subject s where  s.id = r.subject_id) as subject_name,
+        (CASE WHEN (SELECT COUNT(id) FROM course_menu m where  m.course_id = r.course_id and m.type in(1,2,3))> 0 THEN '1' ELSE '0' END) as begin_status,
+        (SELECT COUNT(id) FROM course_menu m where  m.course_id = r.course_id and m.type in(1)) as module_num,
+        (SELECT COUNT(id)+(SELECT COUNT(p.id) FROM course_module_chapter p LEFT JOIN course_menu m  on m.menu_id = p.module_id where  m.course_id = r.course_id and m.type in(1)) FROM course_menu m where  m.course_id = r.course_id and m.type in(2)) as chapter_num,
+        (SELECT COUNT(id)+(SELECT COUNT(n.id) FROM course_chapter_section n LEFT JOIN course_module_chapter p on n.chapter_id = p.chapter_id LEFT JOIN course_menu m on m.menu_id = p.module_id where m.course_id =  r.course_id and m.type in(1))+(SELECT COUNT(n.id) FROM course_chapter_section n  LEFT JOIN course_menu m on m.menu_id = n.chapter_id where m.course_id = r.course_id and m.type in(2)) FROM course_menu m where  m.course_id = r.course_id and m.type in(3)) as section_num,
+        (select COUNT(DISTINCT record_id) FROM user_study_record c where c.course_id = r.course_id and c.status = 1) as record_num
+        FROM
+        goods_course c
+        LEFT JOIN course r ON c.course_id = r.course_id
+        LEFT JOIN user_study_record u on u.course_id = r.course_id
+        where 1=1
+        <if test="userId != null and userId !=''">
+            and u.user_id = #{userId}
+        </if>
+        <if test="goodId != null and goodId !=''">
+            and c.goods_id =#{goodId}
+        </if>
+    </select>
+
+    <select id="listSection" parameterType="com.zhongzheng.modules.user.bo.SubjectStudyRecordQueryBo"  resultMap="SectionStudyRecordVoResult">
+        SELECT
+        DISTINCT r.section_id,
+        (select m.module_name FROM course_module m where r.module_id = m.module_id) as module_name,
+        (select m.name FROM course_chapter m where r.chapter_id = m.chapter_id) as chapter_name,
+        (select m.`name` FROM course_section m where r.section_id = m.section_id) as section_name,
+        (select m.duration_time FROM course_section m where r.section_id = m.section_id) as duration_time,
+        (select i.start_time FROM user_study_record i where r.section_id = i.section_id ORDER BY i.start_time ASC LIMIT 1) as start_time,
+        (select i.end_time FROM user_study_record i where r.section_id = i.section_id ORDER BY i.start_time DESC LIMIT 1) as end_time,
+        r.status
+        FROM
+        user_study_record r
+        LEFT JOIN course c ON c.course_id = r.course_id
+        where 1=1
+        <if test="userId != null and userId !=''">
+            and r.user_id = #{userId}
+        </if>
+        <if test="courseId != null and courseId !=''">
+            and r.course_id =#{courseId}
+        </if>
+    </select>
 </mapper>