ソースを参照

update 报名缴费,云教练的收费模式,一个声部只能一个1个不买云教练的学员

周箭河 4 年 前
コミット
15722b9fb6

+ 40 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -695,7 +695,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         String channelType = "";
 
         StudentPaymentOrder studentPaymentOrder = studentRegistrationService.addOrder(studentRegistration, amount, orderNo, channelType, courseFee, goodsGroups, remitFee, courseRemitFee, newCourses, registerPayDto.getBuyMaintenance(), registerPayDto.getBuyCloudTeacher());
-        studentPaymentOrder.setVersion(0);
+        studentPaymentOrder = studentPaymentOrderService.get(studentPaymentOrder.getId());
 
         Date date = new Date();
         BigDecimal balance = BigDecimal.ZERO;
@@ -722,6 +722,13 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         studentPaymentOrderService.update(studentPaymentOrder);
         studentPaymentOrder.setVersion(studentPaymentOrder.getVersion() + 1);
 
+        if (studentPaymentOrder.getPaymentAccountNo().equals("205")) {
+            Map<String, String> notifyMap = new HashMap<>();
+            notifyMap.put("hasPaidZero", "205");
+            notifyMap.put("orderNo", studentPaymentOrder.getOrderNo());
+            return notifyMap;
+        }
+
         if (amount.compareTo(BigDecimal.ZERO) == 0) {
             studentPaymentRouteOrderService.addRouteOrder(orderNo, musicGroup.getOrganId(), balance);
             Map<String, String> notifyMap = new HashMap<>();
@@ -774,6 +781,10 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (ApplyOrder == null) {
             throw new BizException("没有支付中的订单,请勿非法请求");
         }
+        //手动关闭订单
+        ApplyOrder.setStatus(DealStatusEnum.FAILED);
+        ApplyOrder.setMemo("用户手动关闭");
+        studentPaymentOrderService.callOrderCallBack(ApplyOrder);
 
         BigDecimal amount = registerPayDto.getAmount(); //前端获取的价格
         BigDecimal orderAmount = new BigDecimal("0");
@@ -854,8 +865,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
         String channelType = "";
 
-        StudentPaymentOrder studentPaymentOrder = studentRegistrationService.reAddOrder(userId, amount, orderNo, channelType, courseFee, goodsGroups, studentRegistration.getMusicGroupId(), ApplyOrder, remitFee, courseRemitFee, newCourses, registerPayDto.getBuyMaintenance(), registerPayDto.getBuyCloudTeacher());
-        studentPaymentOrder.setVersion(0);
+        StudentPaymentOrder studentPaymentOrder = studentRegistrationService.addOrder(studentRegistration, amount, orderNo, channelType, courseFee, goodsGroups, remitFee, courseRemitFee, newCourses, registerPayDto.getBuyMaintenance(), registerPayDto.getBuyCloudTeacher());
+        studentPaymentOrder = studentPaymentOrderService.get(studentPaymentOrder.getId());
         Date date = new Date();
 
         BigDecimal balance = BigDecimal.ZERO;
@@ -882,6 +893,13 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         studentPaymentOrderService.update(studentPaymentOrder);
         studentPaymentOrder.setVersion(studentPaymentOrder.getVersion() + 1);
 
+        if (studentPaymentOrder.getPaymentAccountNo().equals("205")) {
+            Map<String, String> notifyMap = new HashMap<>();
+            notifyMap.put("hasPaidZero", "205");
+            notifyMap.put("orderNo", studentPaymentOrder.getOrderNo());
+            return notifyMap;
+        }
+
         if (amount.compareTo(BigDecimal.ZERO) == 0) {
             studentPaymentRouteOrderService.addRouteOrder(orderNo, musicGroup.getOrganId(), balance);
             Map<String, String> notifyMap = new HashMap<>();
@@ -1769,11 +1787,15 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             // 缴费人数更新
             MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, studentRegistration.getActualSubjectId());
             if (hasPaid && musicGroupSubjectPlan != null) {
-                musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
                 musicGroupSubjectPlan.setUpdateTime(date);
-                List<String> orderDetailTypes = studentPaymentOrderDetailDao.getOrderDetailType(studentPaymentOrder.getId());
-                if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER) && !orderDetailTypes.contains("CLOUD_TEACHER")) {
-                    musicGroupSubjectPlan.setPaidZeroNum(musicGroupSubjectPlan.getPaidZeroNum() - 1);
+                //减去缴费人数(器乐收费,0元时不减缴费人数)
+                if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER)) {
+                    if (studentPaymentOrder.getPaymentAccountNo() != null && studentPaymentOrder.getPaymentAccountNo().equals("205")) {
+                        musicGroupSubjectPlan.setPaidZeroNum(musicGroupSubjectPlan.getPaidZeroNum() - 1);
+                        musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
+                    }
+                } else {
+                    musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
                 }
                 musicGroupSubjectPlanDao.update(musicGroupSubjectPlan);
             }
@@ -1996,11 +2018,15 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         // 判断乐器是否是租赁
         MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, studentRegistration.getActualSubjectId());
         if (hasPaid && musicGroupSubjectPlan != null) {
-            musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
             musicGroupSubjectPlan.setUpdateTime(date);
-            List<String> orderDetailTypes = studentPaymentOrderDetailDao.getOrderDetailType(studentPaymentOrder.getId());
-            if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER) && !orderDetailTypes.contains("CLOUD_TEACHER")) {
-                musicGroupSubjectPlan.setPaidZeroNum(musicGroupSubjectPlan.getPaidZeroNum() - 1);
+            //减去缴费人数(器乐收费,0元时不减缴费人数)
+            if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER)) {
+                if (studentPaymentOrder.getPaymentAccountNo() != null && studentPaymentOrder.getPaymentAccountNo().equals("205")) {
+                    musicGroupSubjectPlan.setPaidZeroNum(musicGroupSubjectPlan.getPaidZeroNum() - 1);
+                    musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
+                }
+            } else {
+                musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
             }
             musicGroupSubjectPlanDao.update(musicGroupSubjectPlan);
         }
@@ -2393,14 +2419,14 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             if (courseScheduleTeacherSalary.getSettlementTime() != null) {
                 throw new BizException("课程已结算");
             }
-            if(Objects.nonNull(salary)){
+            if (Objects.nonNull(salary)) {
                 courseScheduleTeacherSalary.setExpectSalary(salary);
             }
             courseScheduleTeacherSalary.setSubsidy(subsidy);
             courseScheduleTeacherSalary.setUpdateTime(new Date());
-            if(TeachTypeEnum.BISHOP.equals(courseScheduleTeacherSalary.getTeacherRole())){
+            if (TeachTypeEnum.BISHOP.equals(courseScheduleTeacherSalary.getTeacherRole())) {
                 courseScheduleTeacherSalary.setEnableChangeSalary(false);
-            }else{
+            } else {
                 courseScheduleTeacherSalary.setEnableChangeSalary(true);
             }
             courseScheduleTeacherSalaryDao.update(courseScheduleTeacherSalary);

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

@@ -495,31 +495,30 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
 
         //增加缴费学生数,0元订单不增加报名人数(没买云教练的)
-        boolean updateFlag = false;
-        for (int i = 0; i < 10; i++) {
-            MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getActualSubjectId());
-            int paidNum = musicOneSubjectClassPlan.getPaidStudentNum() == null ? 0 : musicOneSubjectClassPlan.getPaidStudentNum();
-            int paidZeroNum = musicOneSubjectClassPlan.getPaidZeroNum() == null ? 0 : musicOneSubjectClassPlan.getPaidZeroNum();
-            musicOneSubjectClassPlan.setPaidStudentNum(paidNum + 1);
-            if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER) && !buyCloudTeacher) {
-                if (paidZeroNum > 0) {
-                    throw new BizException("205");
-                }
+        boolean paidZeroFlag = false;
+        MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getActualSubjectId());
+        int paidNum = musicOneSubjectClassPlan.getPaidStudentNum() == null ? 0 : musicOneSubjectClassPlan.getPaidStudentNum();
+        int paidZeroNum = musicOneSubjectClassPlan.getPaidZeroNum() == null ? 0 : musicOneSubjectClassPlan.getPaidZeroNum();
+        if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER) && !buyCloudTeacher) {
+            if (paidZeroNum <= 0) {
                 musicOneSubjectClassPlan.setPaidZeroNum(paidZeroNum + 1);
+                musicOneSubjectClassPlan.setPaidStudentNum(paidNum + 1);
+                paidZeroFlag = true;
             }
-            if (studentRegistration.getTemporaryCourseFee() == null && musicOneSubjectClassPlan.getPaidStudentNum() > musicOneSubjectClassPlan.getExpectedStudentNum()) {
-                throw new BizException("乐团该声部人数暂时已满,请稍后再试");
-            }
-            int count = musicGroupSubjectPlanService.update(musicOneSubjectClassPlan);
-            if (count >= 1) {
-                updateFlag = true;
-                break;
-            }
+        } else {
+            musicOneSubjectClassPlan.setPaidStudentNum(paidNum + 1);
         }
-        if (!updateFlag) {
-            throw new BizException("系统繁忙,更新缴费人数失败");
+        if (studentRegistration.getTemporaryCourseFee() == null && musicOneSubjectClassPlan.getPaidStudentNum() > musicOneSubjectClassPlan.getExpectedStudentNum()) {
+            throw new BizException("乐团该声部人数暂时已满,请稍后再试");
+        }
+        int count = musicGroupSubjectPlanService.update(musicOneSubjectClassPlan);
+        if (count <= 0) {
+            throw new BizException("排队人数过多,请重试");
+        }
+        if (paidZeroFlag) {
+            studentPaymentOrder.setPaymentAccountNo("205");
+            studentPaymentOrderService.update(studentPaymentOrder);
         }
-
         return studentPaymentOrder;
     }
 
@@ -1202,10 +1201,13 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         if (studentPaymentOrder.getStatus().equals(DealStatusEnum.FAILED)) {
             MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
             //减去缴费人数(器乐收费,0元时不减缴费人数)
-            List<String> orderDetailTypes = studentPaymentOrderDetailDao.getOrderDetailType(studentPaymentOrder.getId());
-            musicOneSubjectClassPlan.setPaidStudentNum(musicOneSubjectClassPlan.getPaidStudentNum() - 1);
-            if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER) && !orderDetailTypes.contains("CLOUD_TEACHER")) {
-                musicOneSubjectClassPlan.setPaidZeroNum(musicOneSubjectClassPlan.getPaidZeroNum() - 1);
+            if (musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER)) {
+                if (studentPaymentOrder.getPaymentAccountNo() != null && studentPaymentOrder.getPaymentAccountNo().equals("205")) {
+                    musicOneSubjectClassPlan.setPaidZeroNum(musicOneSubjectClassPlan.getPaidZeroNum() - 1);
+                    musicOneSubjectClassPlan.setPaidStudentNum(musicOneSubjectClassPlan.getPaidStudentNum() - 1);
+                }
+            } else {
+                musicOneSubjectClassPlan.setPaidStudentNum(musicOneSubjectClassPlan.getPaidStudentNum() - 1);
             }
             updateCount = musicGroupSubjectPlanService.update(musicOneSubjectClassPlan);
             if (updateCount <= 0) {

+ 16 - 10
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java

@@ -179,8 +179,8 @@ public class MusicGroupController extends BaseController {
             return failed("乐团在" + musicGroup.getStatus().getMsg() + ",不能缴费");
         }
         String err = studentRegistrationService.checkRegOrPayStatus(musicGroupId);
-        if(err != null){
-            return failed(err+"不能缴费");
+        if (err != null) {
+            return failed(err + "不能缴费");
         }
         studentRegistration.setOwnershipType(musicGroup.getOwnershipType());
         studentRegistration.setChargeTypeId(musicGroup.getChargeTypeId());
@@ -230,7 +230,7 @@ public class MusicGroupController extends BaseController {
             throw new BizException("缴费暂未开始,如有问题请联系指导老师");
         }
         if (renew.containsKey("tradeState")) {
-            return failed(HttpStatus.CREATED, renew,"恭喜您,缴费成功!");
+            return failed(HttpStatus.CREATED, renew, "恭喜您,缴费成功!");
         }
         return succeed(renew);
     }
@@ -281,8 +281,8 @@ public class MusicGroupController extends BaseController {
         }
 
         String err = studentRegistrationService.checkRegOrPayStatus(studentRegistration.getMusicGroupId());
-        if(err !=null){
-            return failed(err+"不可缴费,请联系教务老师");
+        if (err != null) {
+            return failed(err + "不可缴费,请联系教务老师");
         }
 
         Integer userId = studentRegistration.getUserId();
@@ -298,8 +298,11 @@ public class MusicGroupController extends BaseController {
             return failed(HttpStatus.CONTINUE, "您有待支付的订单");
         }
         Map payMap = musicGroupService.pay(registerPayDto);
+        if (payMap.containsKey("hasPaidZero")) {
+            return failed(HttpStatus.RESET_CONTENT, payMap, "报名审核中");
+        }
         if (payMap.containsKey("tradeState")) {
-            return failed(HttpStatus.CREATED, payMap,"恭喜您,报名成功!");
+            return failed(HttpStatus.CREATED, payMap, "恭喜您,报名成功!");
         }
         return succeed(payMap);
     }
@@ -314,8 +317,8 @@ public class MusicGroupController extends BaseController {
         }
 
         String err = studentRegistrationService.checkRegOrPayStatus(studentRegistration.getMusicGroupId());
-        if(err !=null){
-            return failed(err+"不可缴费,请联系教务老师");
+        if (err != null) {
+            return failed(err + "不可缴费,请联系教务老师");
         }
         Integer userId = studentRegistration.getUserId();
         StudentPaymentOrder ApplyOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, studentRegistration.getMusicGroupId(), DealStatusEnum.SUCCESS);
@@ -324,8 +327,11 @@ public class MusicGroupController extends BaseController {
             return failed("您已支付成功,请勿重复支付");
         }
         Map payMap = musicGroupService.rePay(registerPayDto);
+        if (payMap.containsKey("hasPaidZero")) {
+            return failed(HttpStatus.RESET_CONTENT, payMap, "报名审核中");
+        }
         if (payMap.containsKey("tradeState")) {
-            return failed(HttpStatus.CREATED, payMap,"恭喜您,报名成功!");
+            return failed(HttpStatus.CREATED, payMap, "恭喜您,报名成功!");
         }
         return succeed(payMap);
     }
@@ -354,7 +360,7 @@ public class MusicGroupController extends BaseController {
     @ApiOperation(value = "获取乐团的年级列表")
     @GetMapping("/getGradeList")
     @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String")})
-    public HttpResponseResult<Map<Integer,String>> getGradeList(String musicGroupId) {
+    public HttpResponseResult<Map<Integer, String>> getGradeList(String musicGroupId) {
         MusicGroup musicGroup = musicGroupService.get(musicGroupId);
         return succeed(organizationService.getGradeList(musicGroup.getOrganId()));
     }