Procházet zdrojové kódy

Merge branch 'reg_feature_6_7'

周箭河 před 4 roky
rodič
revize
e5cd9cd5be

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

@@ -548,13 +548,13 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
 
     /**
      * 获取预报名或者报名的列表
+     *
      * @param params
      * @return
      */
     List<RegisterDto> getRegisterOrPreList(Map<String, Object> params);
 
 
-
     /**
      * 获取预报名或者报名总数
      *
@@ -562,4 +562,11 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
      * @return
      */
     int getRegisterOrPreCount(Map<String, Object> params);
+
+    /**
+     * 获取最小预报名时间和最小支付时间
+     *
+     * @return
+     */
+    RegisterDto getRegisterOrPreMinTime(@Param("musicGroupId") String musicGroupId);
 }

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RegisterDto.java

@@ -64,6 +64,10 @@ public class RegisterDto {
 
     private String payIntervalStr;
 
+    private Date minPerRegisterTime;
+
+    private Date minPayTime;
+
     public Integer getUserId() {
         return userId;
     }
@@ -191,4 +195,20 @@ public class RegisterDto {
     public void setPayIntervalStr(String payIntervalStr) {
         this.payIntervalStr = payIntervalStr;
     }
+
+    public Date getMinPerRegisterTime() {
+        return minPerRegisterTime;
+    }
+
+    public void setMinPerRegisterTime(Date minPerRegisterTime) {
+        this.minPerRegisterTime = minPerRegisterTime;
+    }
+
+    public Date getMinPayTime() {
+        return minPayTime;
+    }
+
+    public void setMinPayTime(Date minPayTime) {
+        this.minPayTime = minPayTime;
+    }
 }

+ 3 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -1838,17 +1838,10 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         pageInfo.setTotal(count);
         params.put("offset", pageInfo.getOffset());
         if (queryInfo.getPage() <= pageInfo.getTotalPage()) {
-            Date firstPreTime = null;
-            Date firstPayTime = null;
+            RegisterDto registerOrPreMinTime = studentRegistrationDao.getRegisterOrPreMinTime(queryInfo.getMusicGroupId());
+            Date firstPreTime = registerOrPreMinTime.getMinPerRegisterTime();
+            Date firstPayTime = registerOrPreMinTime.getMinPayTime();
             dataList = studentRegistrationDao.getRegisterOrPreList(params);
-            List<RegisterDto> collect = dataList.stream().filter(e -> e.getPerRegisterTime() != null).sorted(Comparator.comparing(RegisterDto::getPerRegisterTime)).collect(Collectors.toList());
-            if (collect.size() > 0) {
-                firstPreTime = collect.get(0).getPerRegisterTime();
-            }
-            collect = dataList.stream().filter(e -> e.getPayTime() != null).sorted(Comparator.comparing(RegisterDto::getPayTime)).collect(Collectors.toList());
-            if (collect.size() > 0) {
-                firstPayTime = collect.get(0).getPayTime();
-            }
             for (RegisterDto registerDto : dataList) {
                 if (registerDto.getPerRegisterTime() != null) {
                     int perRegInterval = DateUtil.secondsBetween(firstPreTime, registerDto.getPerRegisterTime());

+ 21 - 0
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -1419,4 +1419,25 @@
             </if>
         </where>
     </select>
+
+    <select id="getRegisterOrPreMinTime" resultType="com.ym.mec.biz.dal.dto.RegisterDto">
+        SELECT MIN(o.payTime) minPayTime,MIN(spr.create_time_) minPerRegisterTime
+        FROM (SELECT user_id_
+        FROM student_pre_registration
+        WHERE music_group_id_ = #{musicGroupId}
+        UNION
+        SELECT user_id_
+        FROM student_registration
+        where music_group_id_ = #{musicGroupId}
+        ) u
+        LEFT JOIN student_pre_registration spr
+        ON spr.user_id_ = u.user_id_ AND spr.music_group_id_ = #{musicGroupId}
+        LEFT JOIN (
+        SELECT spo.user_id_, MAX(spo.pay_time_) payTime
+        FROM student_payment_order spo
+        WHERE spo.music_group_id_ = #{musicGroupId}
+        AND type_ = 'APPLY'
+        GROUP BY spo.user_id_
+        ) o ON o.user_id_ = u.user_id_
+    </select>
 </mapper>