he2802 3 роки тому
батько
коміт
70f445ab26

+ 13 - 10
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml

@@ -312,23 +312,17 @@
         cg.class_name,
         cgu.period_plush,
         cgu.period_status_num,
-        (SELECT
-        COUNT( m.id )
-        FROM
-        goods_course c  LEFT JOIN  course_menu_exam m ON m.course_id = c.course_id
-        where
-        m.type = 1
-        and c.goods_id = cgg.goods_id) as exam_num,
+        IFNULL(ge.exam_num,0) as exam_num,
         <if test="userPhoto != null and userPhoto == 1">
-        up.key_value,
+            up.key_value,
         </if>
         cgu.period_time as end_time,
         (SELECT og.service_start_time FROM order_goods og  where og.order_goods_id = cgu.order_goods_id ) as service_start_time,
         (SELECT og.service_end_time FROM order_goods og  where og.order_goods_id = cgu.order_goods_id ) as service_end_time,
         (SELECT COUNT(DISTINCT ubr.module_id,ubr.chapter_id,ubr.exam_id) FROM user_bank_record ubr  where ubr.`status`=1 and ubr.report_status=1 and ubr.grade_id = cgu.grade_id and ubr.user_id = cgu.user_id and ubr.current_status = 1) as record_num
         <if test="userPhoto == null">
-      ,(select COUNT(up.id) from user_period up LEFT JOIN user_period_status ups on up.id=ups.period_id where up.goods_id = (SELECT cgg.goods_id FROM class_grade_goods cgg where cg.grade_id=cgg.grade_id) and up.grade_id = cgu.grade_id and up.user_id = u.user_id
-        and ups.period_status=0 and ups.`status`=0 and (SELECT COUNT(upss.id) from user_period_status upss where upss.id = ups.id and upss.period_status = 1 and upss.`status` = 2) > 0 ) as rebuild_num
+            ,(select COUNT(up.id) from user_period up LEFT JOIN user_period_status ups on up.id=ups.period_id where up.goods_id = (SELECT cgg.goods_id FROM class_grade_goods cgg where cg.grade_id=cgg.grade_id) and up.grade_id = cgu.grade_id and up.user_id = u.user_id
+            and ups.period_status=0 and ups.`status`=0 and (SELECT COUNT(upss.id) from user_period_status upss where upss.id = ups.id and upss.period_status = 1 and upss.`status` = 2) > 0 ) as rebuild_num
         </if>
         FROM
         class_grade_user cgu
@@ -337,6 +331,15 @@
         LEFT JOIN `user` u ON u.user_id = cgu.user_id
         LEFT JOIN user_profile up on u.user_id =up.user_id and up.goods_id = cgg.goods_id and cgu.order_goods_id = up.order_goods_id and up.type_status=1 and up.current_status = 1
         LEFT JOIN goods g on cgg.goods_id = g.goods_id
+        LEFT JOIN (SELECT
+        COUNT( m.id ) AS exam_num,
+        c.goods_id
+        FROM
+        course_menu_exam m
+        LEFT JOIN goods_course c ON m.course_id = c.course_id
+        where
+        m.type = 1
+        GROUP BY c.goods_id ) ge on cgg.goods_id = ge.goods_id
         where 1=1
         and cgu.`status` =1
         <if test="periodPlush != null and periodPlush != ''">