Переглянути джерело

update 学生增加服务指标,运营指标标记

周箭河 5 роки тому
батько
коміт
2cb91e45af

+ 9 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleEvaluateDao.java

@@ -119,10 +119,9 @@ public interface CourseScheduleEvaluateDao extends BaseDAO<Long, CourseScheduleE
     /**
      * 网管课体验人数
      *
-     * @param studentIds
      * @return
      */
-    List<Practice4OrganDto> getPracticeTryNums(@Param("studentIds") int[] studentIds);
+    List<Practice4OrganDto> getPracticeTryNums();
 
     /**
      * vip课体验人数
@@ -135,10 +134,9 @@ public interface CourseScheduleEvaluateDao extends BaseDAO<Long, CourseScheduleE
      * 网管课转化人数
      *
      * @param classDate
-     * @param studentIds
      * @return
      */
-    List<Practice4OrganDto> getPracticeBuyNums(@Param("classDate") Date classDate, @Param("endDate") Date endDate, @Param("studentIds") int[] studentIds);
+    List<Practice4OrganDto> getPracticeBuyNums(@Param("classDate") Date classDate, @Param("endDate") Date endDate);
 
     /**
      * VIP课转化人数
@@ -150,9 +148,16 @@ public interface CourseScheduleEvaluateDao extends BaseDAO<Long, CourseScheduleE
 
     /**
      * 网管课和vip课同事存在的人数
+     *
      * @param classDate
      * @param endDate
      * @return
      */
     List<Practice4OrganDto> getPracticeAndVipNums(@Param("classDate") Date classDate, @Param("endDate") Date endDate);
+
+    /**
+     * 禁止中vip和网管同时存在人数
+     * @return
+     */
+    List<Practice4OrganDto> getPracticeAndVipTryNums();
 }

+ 47 - 32
mec-biz/src/main/resources/config/mybatis/CourseScheduleEvaluateMapper.xml

@@ -331,45 +331,54 @@
     <select id="getPracticeTryNums" resultMap="practice4Organ">
         SELECT pg.organ_id_, count(distinct pg.student_id_) try_num_
         FROM practice_group pg
-        LEFT JOIN student s ON s.user_id_ = pg.student_id_
+                 LEFT JOIN student s ON s.user_id_ = pg.student_id_
         WHERE pg.group_status_ IN ('NORMAL', 'FINISH')
-        <if test="studentIds != null">
-            AND pg.student_id_ IN
-            <foreach collection="studentIds" item="studentId" open="(" separator="," close=")">
-                #{studentId}
-            </foreach>
-        </if>
-        AND pg.buy_months_ >=1
-        AND s.operating_tag_ = 0
+          AND pg.buy_months_ >= 1
+          AND s.operating_tag_ = 0
         GROUP BY pg.organ_id_
     </select>
 
     <!-- vip体验人数(禁止的) -->
     <select id="getVipTryNums" resultMap="practice4Organ">
-        SELECT vg.organ_id_, COUNT(DISTINCT cssp.user_id_) try_num_, GROUP_CONCAT(distinct cssp.user_id_) student_ids_
+        SELECT vg.organ_id_, COUNT(DISTINCT cssp.user_id_) try_num_
         FROM course_schedule_student_payment cssp
                  LEFT JOIN vip_group vg ON cssp.music_group_id_ = vg.id_ AND cssp.group_type_ = 'VIP'
                  LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_ AND cs.teach_mode_ = 'ONLINE'
                  LEFT JOIN student s ON s.user_id_ = cssp.user_id_
-        WHERE vg.organ_id_ >= 1
-          AND s.operating_tag_ = 0
+        WHERE vg.id_ >= 1
+          AND cs.id_ >= 1
           AND (cs.is_lock_ IS NULL OR cs.is_lock_ = 0)
-          AND cs.teach_mode_ = 'ONLINE'
+          AND s.operating_tag_ = 0
         GROUP BY vg.organ_id_
     </select>
 
+    <select id="getPracticeAndVipTryNums" resultMap="practice4Organ">
+        SELECT pg.organ_id_, COUNT(DISTINCT pg.user_id_) try_num_
+        FROM practice_group pg
+                 LEFT JOIN course_schedule_student_payment cssp
+                           ON cssp.user_id_ = pg.student_id_ AND cssp.group_type_ = 'VIP'
+                 LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_ AND cs.teach_mode_ = 'ONLINE'
+                 LEFT JOIN student s ON s.user_id_ = cssp.user_id_
+        WHERE pg.group_status_ IN ('NORMAL', 'FINISH')
+          AND pg.buy_months_ >= 1
+          AND cs.id_ >= 1
+          AND (cs.is_lock_ IS NULL OR cs.is_lock_ = 0)
+          AND s.operating_tag_ = 0
+        GROUP BY pg.organ_id_
+    </select>
+
     <select id="getVipBuyNums" resultMap="practice4Organ">
-        SELECT vg.organ_id_, COUNT(DISTINCT cssp.user_id_) vip_num_, GROUP_CONCAT(DISTINCT cssp.user_id_) student_ids_
+        SELECT vg.organ_id_, COUNT(DISTINCT cssp.user_id_) vip_num_
         FROM course_schedule_student_payment cssp
         LEFT JOIN vip_group vg ON cssp.music_group_id_ = vg.id_ AND cssp.group_type_ = 'VIP'
         LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_ AND cs.teach_mode_ = 'ONLINE'
-        WHERE vg.organ_id_ >= 1
+        WHERE vg.id_ >= 1
+        AND cs.id_ >=1
         AND CONCAT(cs.class_date_, ' ', cs.end_class_time_) >= #{classDate}
         <if test="endDate != null">
             <![CDATA[AND CONCAT(cs.class_date_, ' ', cs.end_class_time_) < #{endDate}]]>
         </if>
         AND (cs.is_lock_ IS NULL OR cs.is_lock_=0)
-        AND cs.teach_mode_ = 'ONLINE'
         GROUP BY vg.organ_id_
     </select>
 
@@ -378,30 +387,36 @@
         FROM course_schedule_student_payment cssp
         LEFT JOIN practice_group pg ON cssp.music_group_id_ = pg.id_ AND cssp.group_type_ = 'PRACTICE'
         LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
-        WHERE pg.organ_id_ >= 1
+        WHERE pg.id_ >= 1
+        AND cs.id_ >=1
+        AND (cs.is_lock_ IS NULL OR cs.is_lock_=0)
         AND CONCAT(cs.class_date_, ' ', cs.end_class_time_) >= #{classDate}
         <if test="endDate != null">
             <![CDATA[AND CONCAT(cs.class_date_, ' ', cs.end_class_time_) < #{endDate}]]>
         </if>
-        <if test="studentIds != null">
-            AND cssp.user_id_ IN
-            <foreach collection="studentIds" item="studentId" open="(" separator="," close=")">
-                #{studentId}
-            </foreach>
-        </if>
         AND pg.buy_months_ >= 1
-        AND (cs.is_lock_ IS NULL OR cs.is_lock_=0)
         GROUP BY pg.organ_id_
     </select>
 
     <select id="getPracticeAndVipNums" resultMap="practice4Organ">
-        SELECT pg.organ_id_, COUNT(DISTINCT cssp.user_id_) practice_num_
-        FROM course_schedule_student_payment cssp
-                 LEFT JOIN course_schedule_student_payment cssp2
-                           ON cssp.user_id_ = cssp2.user_id_ AND cssp2.group_type_ = 'VIP'
-                 LEFT JOIN practice_group pg ON cssp.music_group_id_ = pg.id_ AND cssp.group_type_ = 'PRACTICE'
-                 LEFT JOIN course_schedule cs ON cs.id_ = cssp2.course_schedule_id_ AND cs.teach_mode_ = 'ONLINE'
-        WHERE cssp.group_type_ = 'PRACTICE'
-        GROUP by pg.organ_id_
+        SELECT pg.organ_id_,COUNT(DISTINCT pg.student_id_) practice_num_
+        FROM practice_group pg
+        LEFT JOIN course_schedule_student_payment vcssp ON vcssp.user_id_ = pg.student_id_ AND vcssp.group_type_='VIP'
+        LEFT JOIN course_schedule_student_payment pcssp ON pcssp.user_id_ = pg.student_id_ AND
+        pcssp.group_type_='PRACTICE'
+        LEFT JOIN course_schedule vcs ON vcs.id_=vcssp.course_schedule_id_ AND vcs.teach_mode_='ONLINE'
+        LEFT JOIN course_schedule pcs ON pcs.id_=pcssp.course_schedule_id_
+        WHERE vcs.id_ >=1
+        AND pcs.id_ >= 1
+        AND (vcs.is_lock_ IS NULL OR vcs.is_lock_=0)
+        AND (pcs.is_lock_ IS NULL OR pcs.is_lock_=0)
+        AND CONCAT(vcs.class_date_, ' ', vcs.end_class_time_) >= #{classDate}
+        AND CONCAT(pcs.class_date_, ' ', pcs.end_class_time_) >= #{classDate}
+        <if test="endDate != null">
+            <![CDATA[AND CONCAT(vcs.class_date_, ' ', vcs.end_class_time_) < #{endDate}
+            AND CONCAT(pcs.class_date_, ' ', pcs.end_class_time_) < #{endDate}]]>
+        </if>
+        AND pg.buy_months_ >= 1
+        GROUP BY pg.organ_id_
     </select>
 </mapper>

+ 8 - 46
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -497,31 +497,13 @@ public class StudentOrderController extends BaseController {
         List<Organization> organs = organizationDao.findAllOrgans();
         //除去禁止的体验人数
         List<Practice4OrganDto> organTryNums = courseScheduleEvaluateDao.getTryNums();
-        List<Practice4OrganDto> organPracticeTryNums = courseScheduleEvaluateDao.getPracticeTryNums(null);
+        List<Practice4OrganDto> organPracticeTryNums = courseScheduleEvaluateDao.getPracticeTryNums();
         List<Practice4OrganDto> organVipTryNums = courseScheduleEvaluateDao.getVipTryNums();
-        String studentIds = organVipTryNums.stream().map(Practice4OrganDto::getStudentIds).collect(Collectors.joining(","));
-        List<Practice4OrganDto> organPracticeAndVipTryNums = new ArrayList<>();
-        if(!studentIds.isEmpty()) {
-            String[] studentIdsArr = studentIds.split(",");
-            int[] userIds = new int[studentIdsArr.length];
-            for (int i = 0; i < studentIdsArr.length; i++) {
-                userIds[i] = Integer.parseInt(studentIdsArr[i]);
-            }
-            organPracticeAndVipTryNums = courseScheduleEvaluateDao.getPracticeTryNums(userIds);
-        }
-        List<Practice4OrganDto> practiceBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(nowDate, null, null);
+        List<Practice4OrganDto> organPracticeAndVipTryNums = courseScheduleEvaluateDao.getPracticeAndVipTryNums();
+        List<Practice4OrganDto> practiceBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(nowDate, null);
         List<Practice4OrganDto> vipBuyNums = courseScheduleEvaluateDao.getVipBuyNums(nowDate, null);
 
-        List<Practice4OrganDto> practiceAndVipBuyNums = new ArrayList<>();
-        studentIds = vipBuyNums.stream().filter(practice4OrganDto -> practice4OrganDto.getOrganId() != null).map(Practice4OrganDto::getStudentIds).collect(Collectors.joining(","));
-        if (!studentIds.isEmpty()) {
-            String[] studentIdsArr = studentIds.split(",");
-            int[] userIds = new int[studentIdsArr.length];
-            for (int i = 0; i < studentIdsArr.length; i++) {
-                userIds[i] = Integer.parseInt(studentIdsArr[i]);
-            }
-            practiceAndVipBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(nowDate, null, userIds);
-        }
+        List<Practice4OrganDto> practiceAndVipBuyNums = courseScheduleEvaluateDao.getPracticeAndVipNums(nowDate, null);
         Date startTime = DateUtil.getFirstDayOfMonth(nowDate);
         Date endTime = DateUtil.addMonths(startTime, 1);
 
@@ -534,35 +516,15 @@ public class StudentOrderController extends BaseController {
         List<PracticeGroupsDto> monthOrganRenewMoneys = courseScheduleEvaluateDao.getMonthOrganMoney(OrderTypeEnum.PRACTICE_GROUP_RENEW, startTime);
 
         //本月总人数
-        List<Practice4OrganDto> nowMonthPracticeBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(startTime, endTime, null);
+        List<Practice4OrganDto> nowMonthPracticeBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(startTime, endTime);
         List<Practice4OrganDto> nowMonthVipBuyNums = courseScheduleEvaluateDao.getVipBuyNums(startTime, endTime);
-        List<Practice4OrganDto> nowMonthPracticeAndVipBuyNums = new ArrayList<>();
-
-        studentIds = vipBuyNums.stream().filter(practice4OrganDto -> practice4OrganDto.getOrganId() != null).map(Practice4OrganDto::getStudentIds).collect(Collectors.joining(","));
-        if (!studentIds.isEmpty()) {
-            String[] studentIdsArr = studentIds.split(",");
-            int[] userIds = new int[studentIdsArr.length];
-            for (int i = 0; i < studentIdsArr.length; i++) {
-                userIds[i] = Integer.parseInt(studentIdsArr[i]);
-            }
-            nowMonthPracticeAndVipBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(startTime, endTime, userIds);
-        }
+        List<Practice4OrganDto> nowMonthPracticeAndVipBuyNums = courseScheduleEvaluateDao.getPracticeAndVipNums(startTime, endTime);
 
         //上月总人数
         Date lastMonthStartTime = DateUtil.addMonths(startTime, -1);
-        List<Practice4OrganDto> lastMonthPracticeBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(lastMonthStartTime, startTime, null);
+        List<Practice4OrganDto> lastMonthPracticeBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(lastMonthStartTime, startTime);
         List<Practice4OrganDto> lastMonthVipBuyNums = courseScheduleEvaluateDao.getVipBuyNums(lastMonthStartTime, startTime);
-        List<Practice4OrganDto> lastMonthPracticeAndVipBuyNums = new ArrayList<>();
-
-        studentIds = vipBuyNums.stream().filter(practice4OrganDto -> practice4OrganDto.getOrganId() != null).map(Practice4OrganDto::getStudentIds).collect(Collectors.joining(","));
-        if (!studentIds.isEmpty()) {
-            String[] studentIdsArr = studentIds.split(",");
-            int[] userIds = new int[studentIdsArr.length];
-            for (int i = 0; i < studentIdsArr.length; i++) {
-                userIds[i] = Integer.parseInt(studentIdsArr[i]);
-            }
-            lastMonthPracticeAndVipBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(lastMonthStartTime, startTime, userIds);
-        }
+        List<Practice4OrganDto> lastMonthPracticeAndVipBuyNums = courseScheduleEvaluateDao.getPracticeAndVipNums(lastMonthStartTime, startTime);
 
         List<Practice4OrganDto> practice4Organs = new ArrayList<>();
         for (Organization organ : organs) {