Explorar o código

Merge remote-tracking branch 'origin/master'

Joburgess %!s(int64=5) %!d(string=hai) anos
pai
achega
6789e420dd

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

@@ -95,8 +95,16 @@ public interface CourseScheduleEvaluateDao extends BaseDAO<Long, CourseScheduleE
 
     /**
      * 获取当月成交金额,人数
+     *
      * @param type
      * @return
      */
-    List<PracticeGroupsDto> getMonthOrganMoney(@Param("type") OrderTypeEnum type);
+    List<PracticeGroupsDto> getMonthOrganMoney(@Param("type") OrderTypeEnum type,@Param("startTime") Date startTime);
+
+    /**
+     * 获取当月新成交金额,人数
+     *
+     * @return
+     */
+    List<PracticeGroupsDto> getOrganNewPracticeGroupsOfMonth(@Param("type") OrderTypeEnum type,@Param("startTime") Date startTime);
 }

+ 22 - 1
mec-biz/src/main/resources/config/mybatis/CourseScheduleEvaluateMapper.xml

@@ -277,8 +277,29 @@
         SELECT SUM(actual_amount_) total_money_, count(distinct user_id_) buy_nums_, organ_id_
         FROM student_payment_order
         WHERE type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+          AND create_time_ >= #{startTime}
           AND status_ = 'SUCCESS'
-          AND DATE_FORMAT(create_time_, '%Y%m') = DATE_FORMAT(now(), '%Y%m')
+        GROUP BY organ_id_
+    </select>
+
+    <select id="getOrganNewPracticeGroupsOfMonth" resultMap="PracticeGroupsOrgan">
+        SELECT SUM(actual_amount_) total_money_, count(distinct user_id_) buy_nums_, organ_id_
+        FROM student_payment_order
+        WHERE type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        AND status_ = 'SUCCESS'
+        AND create_time_ >= #{startTime}
+        AND user_id_ NOT IN (
+        SELECT distinct student_id_ FROM practice_group
+        WHERE group_status_ != 'LOCK'
+        AND group_status_ != 'CANCEL'
+        AND buy_months_ >= 1
+        <if test="type==@com.ym.mec.biz.dal.enums.OrderTypeEnum@PRACTICE_GROUP_BUY">
+            <![CDATA[ AND be_renew_group_id_ IS NULL AND create_time_ < #{startTime} ]]>
+        </if>
+        <if test="type==@com.ym.mec.biz.dal.enums.OrderTypeEnum@PRACTICE_GROUP_RENEW">
+            <![CDATA[ AND be_renew_group_id_ >= 1 AND create_time_ < #{startTime} ]]>
+        </if>
+        )
         GROUP BY organ_id_
     </select>
 </mapper>

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

@@ -396,7 +396,8 @@
         LEFT JOIN `course_schedule` cs on cs.`music_group_id_` = pg.`id_`
         WHERE cs.`group_type_` = 'PRACTICE' AND pg.`buy_months_` IS NULL
         GROUP BY pg.`student_id_` ) a
-        left join (SELECT pg.`student_id_` ,min(pg.`create_time_`) firstBuyTime  FROM `practice_group` pg WHERE pg.`buy_months_` IS NOT NULL GROUP BY pg.`student_id_` ) b
+        left join (SELECT pg.`student_id_` ,min(pg.`create_time_`) firstBuyTime
+        FROM `practice_group` pg WHERE pg.`buy_months_` IS NOT NULL AND pg.group_status_ != 'CANCEL' GROUP BY pg.`student_id_` ) b
         on a.student_id_ = b.student_id_
         left join `sys_user` u on u.`id_` = a.student_id_
         <include refid="queryStudentBuysSql"/>
@@ -413,14 +414,16 @@
     </resultMap>
     <select id="queryStudentBuys" resultMap="queryStudentBuysMap">
         SELECT o.`name_` organ_name_,a.student_id_,u.`username_` student_name_,u.phone_,a.lastClassDate last_class_date_,
-        b.firstBuyTime first_buy_time_,DATEDIFF(b.firstBuyTime,a.lastClassDate) interval_day_,
+        b.firstBuyTime first_buy_time_,
+        CASE WHEN DATEDIFF(b.firstBuyTime,a.lastClassDate) &lt; 0 THEN 0 ELSE DATEDIFF(b.firstBuyTime,a.lastClassDate) END interval_day_,
         CASE WHEN b.firstBuyTime IS NULL THEN 0 ELSE 1 END buy_practice_ FROM
         (SELECT pg.`student_id_` ,max(concat(cs.`class_date_`,' ',cs.`end_class_time_` )) lastClassDate
         FROM `practice_group` pg
         LEFT JOIN `course_schedule` cs on cs.`music_group_id_` = pg.`id_`
         WHERE cs.`group_type_` = 'PRACTICE' AND pg.`buy_months_` IS NULL
         GROUP BY pg.`student_id_` ) a
-        left join (SELECT pg.`student_id_` ,min(pg.`create_time_`) firstBuyTime  FROM `practice_group` pg WHERE pg.`buy_months_` IS NOT NULL GROUP BY pg.`student_id_` ) b
+        left join (SELECT pg.`student_id_` ,min(pg.`create_time_`) firstBuyTime
+        FROM `practice_group` pg WHERE pg.`buy_months_` IS NOT NULL AND pg.group_status_ != 'CANCEL' GROUP BY pg.`student_id_` ) b
         on a.student_id_ = b.student_id_
         left join `sys_user` u on u.`id_` = a.student_id_
         left join `organization` o on o.`id_` = u.`organ_id_`
@@ -438,6 +441,9 @@
             <if test="buyPractice != null and buyPractice == true">
                 AND b.firstBuyTime IS NOT NULL
             </if>
+            <if test="organId != null">
+                AND FIND_IN_SET(u.`organ_id_`,#{organId})
+            </if>
         </where>
     </sql>
 </mapper>

+ 10 - 11
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -1,6 +1,7 @@
 package com.ym.mec.student.controller;
 
 import com.ym.mec.biz.dal.enums.OrderTypeEnum;
+import com.ym.mec.util.date.DateUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -9,15 +10,7 @@ import io.swagger.annotations.ApiOperation;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import javax.servlet.http.HttpServletResponse;
@@ -371,8 +364,14 @@ public class StudentOrderController extends BaseController {
         List<PracticeGroupsDto> practiceGroupsFrees = courseScheduleEvaluateDao.getPracticeGroupsFree();
         List<PracticeGroupsDto> practiceGroupsBuys = courseScheduleEvaluateDao.getPracticeGroupsBuy();
         List<PracticeGroupsDto> practiceGroupsRenews = courseScheduleEvaluateDao.getPracticeGroupsRenew();
-        List<PracticeGroupsDto> monthOrganBuyMoneys = courseScheduleEvaluateDao.getMonthOrganMoney(OrderTypeEnum.PRACTICE_GROUP_BUY);
-        List<PracticeGroupsDto> monthOrganRenewMoneys = courseScheduleEvaluateDao.getMonthOrganMoney(OrderTypeEnum.PRACTICE_GROUP_RENEW);
+
+        Date startTime = DateUtil.getFirstDayOfMonth(new Date());
+
+        List<PracticeGroupsDto> monthOrganBuyMoneys = courseScheduleEvaluateDao.getMonthOrganMoney(OrderTypeEnum.PRACTICE_GROUP_BUY,startTime);
+        List<PracticeGroupsDto> monthOrganRenewMoneys = courseScheduleEvaluateDao.getMonthOrganMoney(OrderTypeEnum.PRACTICE_GROUP_RENEW,startTime);
+
+        //List<PracticeGroupsDto> monthOrganBuyMoneys = courseScheduleEvaluateDao.getOrganNewPracticeGroupsOfMonth(OrderTypeEnum.PRACTICE_GROUP_BUY,startTime);
+        //List<PracticeGroupsDto> monthOrganRenewMoneys = courseScheduleEvaluateDao.getOrganNewPracticeGroupsOfMonth(OrderTypeEnum.PRACTICE_GROUP_RENEW,startTime);
 
         List<PracticeGroupsDto> practiceGroups = new ArrayList<>();
         for (Organization organ : organs) {