Browse Source

update 退乐保,只退入团乐器的乐保

周箭河 4 years ago
parent
commit
1e911d2da2

+ 3 - 10
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentInstrumentDao.java

@@ -77,25 +77,18 @@ public interface StudentInstrumentDao extends BaseDAO<Long, StudentInstrument> {
     StudentRegistration findStudentMusicGroup(@Param("userId") Integer userId);
 
     /**
-     * 退学生乐保
-     *
-     * @param studentId
-     * @return
-     */
-    int quitMaintenance(@Param("studentId") Integer studentId);
-
-    /**
      * 获取学生在有效期内的乐保数量
      *
      * @param studentIds
      * @return
      */
-    List<StudentInstrument> getStudentsMaintenanceNum(@Param("studentIds") List<Integer> studentIds);
+    List<StudentInstrument> getStudentsMaintenanceNum(@Param("studentIds") List<Integer> studentIds, @Param("musicGroupId") String musicGroupId);
 
     /**
      * 获取学生有效期内的乐保数量
+     *
      * @param studentId
      * @return
      */
-    int getStudentMaintenanceNum(@Param("studentId") Integer studentId);
+    StudentInstrument getStudentMaintenance(@Param("studentId") Integer studentId, @Param("musicGroupId") String musicGroupId);
 }

+ 12 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -1846,14 +1846,17 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
             //退乐保费用
             if (maintenanceFee != null) {
+                StudentInstrument studentMaintenance = studentInstrumentDao.getStudentMaintenance(userId, musicGroupId);
                 if (maintenanceFee.compareTo(BigDecimal.ZERO) > 0) {
-                    int maintenanceNum = studentInstrumentDao.getStudentMaintenanceNum(userId);
-                    if (maintenanceNum <= 0) {
+                    if (studentMaintenance == null) {
                         throw new BizException("学生没有有效期内的乐保,不能退乐保费用");
                     }
                 }
                 amount = amount.add(maintenanceFee);
-                studentInstrumentDao.quitMaintenance(userId);
+                if (studentMaintenance != null) {
+                    studentMaintenance.setDelFlag(1);
+                    studentInstrumentDao.update(studentMaintenance);
+                }
             }
 
             if (amount.doubleValue() > 0) {
@@ -2047,14 +2050,17 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
         //退乐保费用
         if (maintenanceFee != null) {
+            StudentInstrument studentMaintenance = studentInstrumentDao.getStudentMaintenance(userId, musicGroupId);
             if (maintenanceFee.compareTo(BigDecimal.ZERO) > 0) {
-                int maintenanceNum = studentInstrumentDao.getStudentMaintenanceNum(userId);
-                if (maintenanceNum <= 0) {
+                if (studentMaintenance == null) {
                     throw new BizException("学生没有有效期内的乐保,不能退乐保费用");
                 }
             }
             amount = amount.add(maintenanceFee);
-            studentInstrumentDao.quitMaintenance(userId);
+            if (studentMaintenance != null) {
+                studentMaintenance.setDelFlag(1);
+                studentInstrumentDao.update(studentMaintenance);
+            }
         }
 
         if (amount.doubleValue() > 0) {

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

@@ -503,7 +503,7 @@ public class StudentManageServiceImpl implements StudentManageService {
             List<SubjectChange> waitPayChange = subjectChangeDao.getMusicGroupWaitPay(queryInfo.getMusicGroupId());
             Map<Integer, List<SubjectChange>> studentWaitPayChange = waitPayChange.stream().collect(Collectors.groupingBy(SubjectChange::getStudentId));
             //查询是否有有效期内乐保
-            List<StudentInstrument> studentsMaintenanceNum = studentInstrumentDao.getStudentsMaintenanceNum(collect);
+            List<StudentInstrument> studentsMaintenanceNum = studentInstrumentDao.getStudentsMaintenanceNum(collect,queryInfo.getMusicGroupId());
             Map<Integer, Integer> studentMaintenanceMap = studentsMaintenanceNum.stream().collect(Collectors.toMap(StudentInstrument::getStudentId, StudentInstrument::getGoodsId));
 
             dataList.forEach(e->{

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

@@ -176,7 +176,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             List<SubjectChange> waitPayChange = subjectChangeDao.getMusicGroupWaitPay(queryInfo.getMusicGroupId());
             Map<Integer, List<SubjectChange>> studentWaitPayChange = waitPayChange.stream().collect(Collectors.groupingBy(SubjectChange::getStudentId));
             //查询是否有有效期内乐保
-            List<StudentInstrument> studentsMaintenanceNum = studentInstrumentDao.getStudentsMaintenanceNum(studentIds);
+            List<StudentInstrument> studentsMaintenanceNum = studentInstrumentDao.getStudentsMaintenanceNum(studentIds,queryInfo.getMusicGroupId());
             Map<Integer, Integer> studentMaintenanceMap = studentsMaintenanceNum.stream().collect(Collectors.toMap(StudentInstrument::getStudentId, StudentInstrument::getGoodsId));
             dataList.forEach(e -> {
                 if (StringUtils.isNotBlank(subjectMap.get(e.getActualSubjectId()))) {

+ 26 - 15
mec-biz/src/main/resources/config/mybatis/StudentInstrumentMapper.xml

@@ -269,16 +269,22 @@
         LIMIT 1
     </select>
 
-    <update id="quitMaintenance">
-        UPDATE student_instrument
-        SET del_flag_=1,
-            update_time=NOW()
-        WHERE student_id_ = #{studentId}
-          AND del_flag_ = 0
-    </update>
-
     <select id="getStudentsMaintenanceNum" resultMap="StudentInstrument">
-        SELECT student_id_,COUNT(*) goods_id_ FROM student_instrument WHERE student_id_ IN
+        SELECT student_id_,COUNT(*) goods_id_
+        FROM student_instrument
+        WHERE order_id_ IN (
+        SELECT MAX(id_)
+        FROM student_payment_order
+        WHERE type_ = 'APPLY'
+        AND music_group_id_ = #{musicGroupId}
+        AND status_ = 'SUCCESS'
+        AND user_id_ IN
+        <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
+            #{studentId}
+        </foreach>
+        GROUP BY user_id_
+        )
+        AND student_id_ IN
         <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
             #{studentId}
         </foreach>
@@ -286,12 +292,17 @@
         GROUP BY student_id_
     </select>
 
-    <select id="getStudentMaintenanceNum" resultType="int">
-        SELECT student_id_, COUNT(*)
-        FROM student_instrument
-        WHERE student_id_ = #{studentId}
-          AND del_flag_ = 0
-          AND end_time_ > NOW()
+    <select id="getStudentMaintenance" resultMap="StudentInstrument">
+        SELECT * FROM student_instrument
+        WHERE order_id_ = (
+        SELECT MAX(id_)
+        FROM student_payment_order
+        WHERE type_ = 'APPLY'
+        AND music_group_id_ = #{musicGroupId}
+        AND status_ = 'SUCCESS'
+        AND user_id_ = #{studentId}
+        )
+        AND student_id_ = #{studentId} AND del_flag_ = 0 AND end_time_ > NOW()
     </select>
 
 </mapper>