Przeglądaj źródła

update 订单导出增加新生课程专享

周箭河 4 lat temu
rodzic
commit
44b6eba719

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java

@@ -347,9 +347,12 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
 
     /**
      * 获取老师对应乐团的学生
+     *
      * @param musicGroupId
      * @param teacherId
      * @return
      */
     List<StudentRegistration> getMusicGroupStu4Teacher(@Param("musicGroupId") String musicGroupId, @Param("teacherId") Integer teacherId);
+
+    StudentRegistration getStudentRegister(@Param("musicGroupId") String musicGroupId, @Param("studentId") Integer studentId);
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java

@@ -258,4 +258,13 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
 	 * @return
 	 */
 	List<StudentPaymentOrderDetail> getStudentApplyDetail(Integer studentId,String musicGroupId);
+
+	/**
+	 * 更换学生声部
+	 * @param musicGroup
+	 * @param originalSubjectId
+	 * @param changeSubjectId
+	 * @return
+	 */
+	StudentRegistration changeStudentSubject(Integer studentId,String musicGroupId,Integer originalSubjectId,Integer changeSubjectId);
 }

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

@@ -1159,4 +1159,38 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         }
         return details;
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public StudentRegistration changeStudentSubject(Integer studentId, String musicGroupId, Integer originalSubjectId, Integer changeSubjectId) {
+        studentDao.lockUser(studentId);
+        //1、更换学生的声部
+        StudentRegistration studentRegistration = studentRegistrationDao.getStudentRegister(musicGroupId,studentId);
+        studentRegistration.setActualSubjectId(changeSubjectId);
+        studentRegistrationDao.update(studentRegistration);
+
+        //2、减去原声部的已缴费数量,加上现声部的缴费人数
+        boolean updateFlag = false;
+        for (int i = 0; i < 10; i++) {
+            MusicGroupSubjectPlan originalSubjectPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(musicGroupId, originalSubjectId);
+            int originalPaidNum = originalSubjectPlan.getPaidStudentNum() == null ? 0 : originalSubjectPlan.getPaidStudentNum();
+            int originalPaidCount = 1;
+            if (originalPaidNum > 0) {
+                originalSubjectPlan.setPaidStudentNum(originalPaidNum - 1);
+                originalPaidCount = musicGroupSubjectPlanService.update(originalSubjectPlan);
+            }
+            MusicGroupSubjectPlan changeSubjectPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(musicGroupId, changeSubjectId);
+            int changelPaidNum = changeSubjectPlan.getPaidStudentNum() == null ? 0 : changeSubjectPlan.getPaidStudentNum();
+            changeSubjectPlan.setPaidStudentNum(changelPaidNum + 1);
+            int changePaidCount = musicGroupSubjectPlanService.update(changeSubjectPlan);
+            if (originalPaidCount > 0 && changePaidCount > 0) {
+                updateFlag = true;
+                break;
+            }
+        }
+        if (!updateFlag) {
+            throw new BizException("系统繁忙,更新学生声部失败,请重试");
+        }
+        return studentRegistration;
+    }
 }

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

@@ -55,6 +55,8 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
     private SysUserCashAccountDetailService sysUserCashAccountDetailService;
     @Autowired
     private SysMessageService sysMessageService;
+    @Autowired
+    private StudentRegistrationService studentRegistrationService;
 
     @Override
     public BaseDAO<Integer, SubjectChange> getDAO() {
@@ -209,6 +211,7 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
         //差价小于0退到余额
         if (amountMargin.compareTo(BigDecimal.ZERO) <= 0) {
             sysUserCashAccountService.updateBalance(subjectChange.getStudentId(), amountMargin.negate(), PlatformCashAccountDetailTypeEnum.REFUNDS, "声部更换退还");
+            studentRegistrationService.changeStudentSubject(subjectChange.getStudentId(),subjectChange.getMusicGroupId(),subjectChange.getOriginalSubjectId(),subjectChange.getChangeSubjectId());
         }
         subjectChange.setCreateTime(nowDate);
         subjectChange.setUpdateTime(nowDate);
@@ -307,7 +310,8 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
         if (updateCount <= 0) {
             throw new BizException("订单更新失败");
         }
-        //更新维修单信息
+
+        //更新声部更改信息状态
         SubjectChange subjectChange = subjectChangeDao.get(Integer.parseInt(studentPaymentOrder.getMusicGroupId()));
         if (subjectChange == null) {
             throw new BizException("声部更换订单不存在");
@@ -318,6 +322,9 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
 
         Integer userId = studentPaymentOrder.getUserId();
 
+        //更新声部信息报名数量
+        studentRegistrationService.changeStudentSubject(subjectChange.getStudentId(),subjectChange.getMusicGroupId(),subjectChange.getOriginalSubjectId(),subjectChange.getChangeSubjectId());
+
         Map<Integer, String> map = new HashMap<>();
         map.put(userId, userId.toString());
 

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

@@ -647,4 +647,8 @@
         LEFT JOIN sys_user s ON s.id_ = cssp.user_id_
         WHERE cs.music_group_id_ = #{musicGroupId} AND cs.actual_teacher_id_ = #{teacherId} AND cs.group_type_ = 'MUSIC' GROUP BY s.id_
     </select>
+    <select id="getStudentRegister" resultMap="StudentRegistration">
+        SELECT * FROM student_registration WHERE music_group_id_ = #{musicGroupId} AND user_id_ = #{studentId}
+        ORDER BY id_ DESC LIMIT 1
+    </select>
 </mapper>