Explorar el Código

报名缴费-人数统计新增字段

zouxuan hace 3 años
padre
commit
4da9c094a2

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java

@@ -172,7 +172,7 @@ public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrde
      */
     BigDecimal sumGroupIncomeFee(@Param("vipGroupId") Long vipGroupId);
 
-    List<StudentPaymentOrder> findStudentPaymentOrder(@Param("groupType") String groupType, @Param("musicGroupId") String musicGroupId);
+    List<StudentPaymentOrder> findStudentPaymentOrder(@Param("musicGroupId") String musicGroupId);
 
     /**
      * 获取零星订单

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java

@@ -522,7 +522,7 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 			dataList = teacherDao.queryMusicGroupStudentApply(params);
 			String paymentStatus = queryInfo.getPaymentStatus();
 			if(StringUtils.isNotEmpty(paymentStatus) && paymentStatus.equals("2")){
-				List<StudentPaymentOrder> studentPaymentOrders = studentPaymentOrderDao.findStudentPaymentOrder("MUSIC",queryInfo.getMusicGroupId());
+				List<StudentPaymentOrder> studentPaymentOrders = studentPaymentOrderDao.findStudentPaymentOrder(queryInfo.getMusicGroupId());
 				Map<Integer, List<StudentPaymentOrder>> collect = studentPaymentOrders.stream().collect(Collectors.groupingBy(StudentPaymentOrder::getUserId));
 				dataList.forEach(e->{
 					List<StudentPaymentOrder> paymentOrders = collect.get(e.getUserId());

+ 9 - 9
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml

@@ -569,15 +569,15 @@
         (SELECT SUM(CASE WHEN amount_ IS NULL THEN 0 ELSE amount_ END) e FROM sys_user_courses_account_detail WHERE group_id_ = #{vipGroupId}) e
     </select>
     <select id="findStudentPaymentOrder" resultMap="StudentPaymentOrder">
-        SELECT *
-        FROM student_payment_order
-        WHERE id_ IN (SELECT id_
-                            FROM student_payment_order
-                            WHERE group_type_ = #{groupType}
-                              AND type_ = 'APPLY'
-                              AND music_group_id_ = #{musicGroupId}
-                              AND status_ = 'SUCCESS'
-                            ORDER BY id_ DESC)
+        SELECT sr.user_id_ ,sum(case when sc.id_ is null then spo.expect_amount_ else (spo.expect_amount_ + sc.goods_margin_) end) expect_amount_,spo.pay_time_
+        FROM student_payment_order spo
+                 LEFT JOIN student_registration sr ON sr.user_id_ = spo.user_id_
+                 LEFT JOIN (SELECT * FROM subject_change WHERE id_ in
+                                                               (SELECT max(id_) id_ from subject_change WHERE status_ = 2 GROUP BY music_group_id_,student_id_ ORDER BY id_ desc)
+        ) sc on spo.music_group_id_ = sc.music_group_id_ and spo.id_ = sc.original_order_id_
+        WHERE spo.music_group_id_ = #{musicGroupId} AND sr.music_group_id_ = spo.music_group_id_ AND sr.music_group_status_ = 'NORMAL'
+          AND spo.type_ = 'APPLY' and spo.status_ = 'SUCCESS'
+        GROUP BY sr.user_id_;
     </select>
     <select id="findOrderByGroupType" resultType="int">
         SELECT COUNT(id_) FROM student_payment_order

+ 5 - 3
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -1847,10 +1847,12 @@
         GROUP BY sr.music_group_id_
     </select>
     <select id="querySubjectAmount" resultType="java.util.Map">
-        SELECT sr.actual_subject_id_ 'key',SUM(spo.expect_amount_) 'value' FROM student_payment_order spo
+        SELECT sr.actual_subject_id_ 'key', SUM(CASE WHEN sc.id_ IS NULL THEN spo.expect_amount_ ELSE (spo.expect_amount_ + sc.goods_margin_) END) 'value'
+        FROM student_payment_order spo
         LEFT JOIN student_registration sr ON sr.user_id_ = spo.user_id_
-        WHERE spo.group_type_ = 'MUSIC' AND spo.type_ = 'APPLY' AND spo.music_group_id_ = #{musicGroupId}
-        AND spo.status_ = 'SUCCESS' AND sr.music_group_id_ = spo.music_group_id_
+        LEFT JOIN (SELECT * FROM subject_change WHERE id_ IN (SELECT MAX(id_) id_ FROM subject_change WHERE status_ = 2 GROUP BY music_group_id_,student_id_ ORDER BY id_ DESC)) sc ON spo.music_group_id_ = sc.music_group_id_ AND spo.id_ = sc.original_order_id_
+        WHERE spo.music_group_id_ = #{musicGroupId} AND sr.music_group_id_ = spo.music_group_id_ AND sr.music_group_status_ = 'NORMAL'
+        AND spo.type_ = 'APPLY' AND spo.status_ = 'SUCCESS'
         GROUP BY sr.actual_subject_id_
     </select>
 </mapper>