Parcourir la source

编写课程进度接口

honorfire il y a 6 mois
Parent
commit
2da62c3c0a

+ 16 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/CourseInfoController.java

@@ -492,4 +492,20 @@ public class CourseInfoController {
         return CommonResult.ok();
     }
 
+    /**
+     * 课程中心-获取指定课程进度
+     * */
+    @ApiOperationSupport(order = 5)
+    @ApiOperation("课程中心-获取指定课程进度")
+    @SaCheckPermission("/disk/coursecentry/getFinishRate")
+    @GetMapping("/disk/coursecentry/getFinishRate")
+    public CommonResult<Map<String,Object>> getFinishRate(@Valid CourseInfoIdParam courseInfoIdParam, HttpServletRequest req) {
+        Map param =new HashMap();
+        if(StringUtils.isEmpty(req.getParameter("courseId")))return CommonResult.error("课程id不能为空");
+        param.put("courseId", req.getParameter("courseId"));
+        param.put("userId", StpLoginUserUtil.getLoginUser().getId());
+        Map<String,Object> result=courseInfoService.getFinishRate(param);
+        return CommonResult.data(result);
+    }
+
 }

+ 5 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/CourseInfoMapper.java

@@ -59,4 +59,9 @@ public interface CourseInfoMapper extends BaseMapper<CourseInfo> {
      * 课程-当前老师自己所有课程下所有人员
      */
     List<Map<String,Object>> getOpenCourseUserList(Map param);
+
+    /**
+     *  课程信息-获取指定课程进度
+     */
+    Map<String,Object> getFinishRate(Map param);
 }

+ 61 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/CourseInfoMapper.xml

@@ -307,4 +307,65 @@
         </if>
     </select>
 
+    <select id="getFinishRate" resultType="java.util.Map">
+        SELECT
+            z2.courseId AS courseId,
+            TRUNC(z1.alreadyCount * 1.0 / z2.allCount, 2) AS finishRate
+        FROM (
+                SELECT
+                 t1.courseId AS courseId,
+                 IFNULL(COUNT(t1.courseId AS courseId),0) AS alreadyCount
+                from(
+                SELECT
+                    csb.USER_ID AS userId,
+                    cch.ID AS hourId,
+                    cc.ID AS chapterId,
+                    ci.COURSE_ID AS courseId
+                FROM (SELECT csb1.USER_ID,csb1.HOUR_ID FROM COURSE_STUDENT_BURIALPOINT csb1 WHERE csb1.DELETE_FLAG ='NOT_DELETE' AND csb1.FUNC_TYPE='1' AND csb1.TYPE='1' GROUP BY csb1.USER_ID,csb1.HOUR_ID) csb
+                LEFT JOIN COURSE_CLASSHOUR cch ON cch.ID=csb.HOUR_ID AND cch.DELETE_FLAG ='NOT_DELETE'
+                LEFT JOIN COURSE_CHAPTER cc ON cc.ID=cch.CHAPTER_ID AND cc.DELETE_FLAG ='NOT_DELETE'
+                LEFT JOIN COURSE_INFO ci ON ci.COURSE_ID =cc.COURSE_ID AND ci.DELETE_FLAG ='NOT_DELETE'
+                WHERE 1=1
+                )t1
+                WHERE 1=1
+                AND t1.hourId IS NOT NULL
+                AND t1.chapterId IS NOT NULL
+                AND t1.courseId IS NOT NULL
+                <if test="userId != null and userId != ''">
+                    AND t1.userId = #{userId}
+                </if>
+                <if test="courseId != null and courseId != ''">
+                    AND t1.courseId = #{courseId}
+                </if>
+                GROUP BY t1.courseId
+        )z1
+        LEFT JOIN(
+                SELECT
+                    t2.courseId AS courseId,
+                    IFNULL(COUNT(t2.courseId AS courseId),0) AS allCount
+                FROM(
+                    SELECT
+                        cch.ID AS hourId,
+                        cc.ID AS chapterId,
+                        ci.COURSE_ID AS courseId
+                    FROM COURSE_CLASSHOUR cch
+                    LEFT JOIN COURSE_CHAPTER cc ON cc.ID=cch.CHAPTER_ID AND cc.DELETE_FLAG ='NOT_DELETE'
+                    LEFT JOIN COURSE_INFO ci ON ci.COURSE_ID =cc.COURSE_ID AND ci.DELETE_FLAG ='NOT_DELETE'
+                    WHERE cch.DELETE_FLAG ='NOT_DELETE'
+                )t2
+                WHERE 1=1
+                AND t2.hourId IS NOT NULL
+                AND t2.chapterId IS NOT NULL
+                AND t2.courseId IS NOT NULL
+                <if test="courseId != null and courseId != ''">
+                    AND t2.courseId = #{courseId}
+                </if>
+                GROUP BY t2.courseId
+        )z2 ON z1.courseId=z2.courseId
+        where 1=1
+        <if test="courseId != null and courseId != ''">
+            AND z2.courseId = #{courseId}
+        </if>
+    </select>
+
 </mapper>

+ 5 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/CourseInfoService.java

@@ -125,4 +125,9 @@ public interface CourseInfoService extends IService<CourseInfo> {
      * 课程-当前老师自己所有课程下所有人员
      */
     List<Map<String,Object>> getOpenCourseUserList(Map param);
+
+    /**
+     *  课程信息-获取指定课程进度
+     */
+    Map<String,Object> getFinishRate(Map param);
 }

+ 4 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/CourseInfoServiceImpl.java

@@ -177,5 +177,9 @@ public class CourseInfoServiceImpl extends ServiceImpl<CourseInfoMapper, CourseI
     }
 
 
+    @Override
+    public Map<String,Object> getFinishRate(Map param) {
+        return courseInfoMapper.getFinishRate(param);
+    }
 
 }