Browse Source

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

zouxuan 5 năm trước cách đây
mục cha
commit
0eb291ddac

+ 11 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleEvaluateDao.java

@@ -122,7 +122,7 @@ public interface CourseScheduleEvaluateDao extends BaseDAO<Long, CourseScheduleE
      * @param studentIds
      * @return
      */
-    List<Practice4OrganDto> getPracticeTryNums(@Param("studentIds") String studentIds);
+    List<Practice4OrganDto> getPracticeTryNums(@Param("studentIds") int[] studentIds);
 
     /**
      * vip课体验人数
@@ -138,7 +138,7 @@ public interface CourseScheduleEvaluateDao extends BaseDAO<Long, CourseScheduleE
      * @param studentIds
      * @return
      */
-    List<Practice4OrganDto> getPracticeBuyNums(@Param("classDate") Date classDate, @Param("endDate") Date endDate, @Param("studentIds") String studentIds);
+    List<Practice4OrganDto> getPracticeBuyNums(@Param("classDate") Date classDate, @Param("endDate") Date endDate, @Param("studentIds") int[] studentIds);
 
     /**
      * VIP课转化人数
@@ -146,5 +146,13 @@ public interface CourseScheduleEvaluateDao extends BaseDAO<Long, CourseScheduleE
      * @param classDate
      * @return
      */
-    List<Practice4OrganDto> getVipBuyNums(@Param("classDate") Date classDate,@Param("endDate") Date endDate);
+    List<Practice4OrganDto> getVipBuyNums(@Param("classDate") Date classDate, @Param("endDate") Date endDate);
+
+    /**
+     * 网管课和vip课同事存在的人数
+     * @param classDate
+     * @param endDate
+     * @return
+     */
+    List<Practice4OrganDto> getPracticeAndVipNums(@Param("classDate") Date classDate, @Param("endDate") Date endDate);
 }

+ 23 - 6
mec-biz/src/main/resources/config/mybatis/CourseScheduleEvaluateMapper.xml

@@ -334,7 +334,10 @@
         LEFT JOIN student s ON s.user_id_ = pg.student_id_
         WHERE pg.group_status_ IN ('NORMAL', 'FINISH')
         <if test="studentIds != null">
-            AND FIND_IN_SET(pg.student_id_,#{studentIds})
+            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
@@ -346,11 +349,11 @@
         SELECT vg.organ_id_, COUNT(DISTINCT cssp.user_id_) try_num_, GROUP_CONCAT(distinct cssp.user_id_) student_ids_
         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_
+                 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
-          AND (cs.is_lock_ IS NULL OR cs.is_lock_=0)
+          AND (cs.is_lock_ IS NULL OR cs.is_lock_ = 0)
           AND cs.teach_mode_ = 'ONLINE'
         GROUP BY vg.organ_id_
     </select>
@@ -359,7 +362,7 @@
         SELECT vg.organ_id_, COUNT(DISTINCT cssp.user_id_) vip_num_, GROUP_CONCAT(DISTINCT cssp.user_id_) student_ids_
         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_
+        LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_ AND cs.teach_mode_ = 'ONLINE'
         WHERE vg.organ_id_ >= 1
         AND CONCAT(cs.class_date_, ' ', cs.end_class_time_) >= #{classDate}
         <if test="endDate != null">
@@ -381,10 +384,24 @@
             <![CDATA[AND CONCAT(cs.class_date_, ' ', cs.end_class_time_) < #{endDate}]]>
         </if>
         <if test="studentIds != null">
-            AND FIND_IN_SET(cssp.user_id_,#{studentIds})
+            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)
+        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>
 </mapper>

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

@@ -4,6 +4,7 @@ import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.OrderTypeEnum;
 import com.ym.mec.util.date.DateUtil;
+import freemarker.template.utility.StringUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -492,23 +493,36 @@ public class StudentOrderController extends BaseController {
 
     @GetMapping("/getPracticeStatis")
     public HttpResponseResult getPracticeStatis() {
+        Date nowDate = new Date();
         List<Organization> organs = organizationDao.findAllOrgans();
         //除去禁止的体验人数
         List<Practice4OrganDto> organTryNums = courseScheduleEvaluateDao.getTryNums();
         List<Practice4OrganDto> organPracticeTryNums = courseScheduleEvaluateDao.getPracticeTryNums(null);
         List<Practice4OrganDto> organVipTryNums = courseScheduleEvaluateDao.getVipTryNums();
         String studentIds = organVipTryNums.stream().map(Practice4OrganDto::getStudentIds).collect(Collectors.joining(","));
-        List<Practice4OrganDto> organPracticeAndVipTryNums = courseScheduleEvaluateDao.getPracticeTryNums(studentIds);
-        List<Practice4OrganDto> practiceBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(new Date(), null, null);
-        List<Practice4OrganDto> vipBuyNums = courseScheduleEvaluateDao.getVipBuyNums(new Date(), null);
+        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> 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()) {
-            practiceAndVipBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(new Date(), null, studentIds);
+            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);
         }
-        Date startTime = DateUtil.getFirstDayOfMonth(new Date());
+        Date startTime = DateUtil.getFirstDayOfMonth(nowDate);
         Date endTime = DateUtil.addMonths(startTime, 1);
 
 
@@ -526,7 +540,12 @@ public class StudentOrderController extends BaseController {
 
         studentIds = vipBuyNums.stream().filter(practice4OrganDto -> practice4OrganDto.getOrganId() != null).map(Practice4OrganDto::getStudentIds).collect(Collectors.joining(","));
         if (!studentIds.isEmpty()) {
-            nowMonthPracticeAndVipBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(startTime, endTime, studentIds);
+            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);
         }
 
         //上月总人数
@@ -537,7 +556,12 @@ public class StudentOrderController extends BaseController {
 
         studentIds = vipBuyNums.stream().filter(practice4OrganDto -> practice4OrganDto.getOrganId() != null).map(Practice4OrganDto::getStudentIds).collect(Collectors.joining(","));
         if (!studentIds.isEmpty()) {
-            lastMonthPracticeAndVipBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(lastMonthStartTime, startTime, studentIds);
+            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> practice4Organs = new ArrayList<>();