ソースを参照

Merge remote-tracking branch 'origin/online1' into online1

Joburgess 4 年 前
コミット
e7ddd0e4b3

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

@@ -55,6 +55,10 @@ public class StudentPaymentOrderExportDto extends StudentPaymentOrder {
     private BigDecimal maintenanceProductFee = BigDecimal.ZERO;
     //云教练费用
     private BigDecimal cloudTeacherFee = BigDecimal.ZERO;
+    //上门费费用
+    private BigDecimal visitFee = BigDecimal.ZERO;
+    //账户充值
+    private BigDecimal rechargeFee = BigDecimal.ZERO;
 
     private String organName;
     private String schoolName;
@@ -349,4 +353,20 @@ public class StudentPaymentOrderExportDto extends StudentPaymentOrder {
     public void setCloudTeacherFee(BigDecimal cloudTeacherFee) {
         this.cloudTeacherFee = cloudTeacherFee;
     }
+
+    public BigDecimal getVisitFee() {
+        return visitFee;
+    }
+
+    public void setVisitFee(BigDecimal visitFee) {
+        this.visitFee = visitFee;
+    }
+
+    public BigDecimal getRechargeFee() {
+        return rechargeFee;
+    }
+
+    public void setRechargeFee(BigDecimal rechargeFee) {
+        this.rechargeFee = rechargeFee;
+    }
 }

+ 22 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java

@@ -201,6 +201,13 @@ public class ExportServiceImpl implements ExportService {
                         row.setDegreeFee(row.getActualAmount());
                     } else if (row.getChargeType() != null && SporadicChargeTypeEnum.PRACTICE_GROUP_BUY.getCode().equals(row.getChargeType())) {
                         row.setPracticeCourseFee(row.getActualAmount());
+                    } else if (row.getChargeType() != null && SporadicChargeTypeEnum.MUSIC_UPKEEP.getCode().equals(row.getChargeType())) {
+                        row.setMaintenanceFee(row.getActualAmount());
+                    } else if (row.getChargeType() != null && SporadicChargeTypeEnum.VISITING_FEE.getCode().equals(row.getChargeType())) {
+                        row.setVisitFee(row.getActualAmount());
+                    } else if (row.getChargeType() != null && (SporadicChargeTypeEnum.RECHARGE.getCode().equals(row.getChargeType()) ||
+                            SporadicChargeTypeEnum.HIGH_ONLINE_ACTIVITY.getCode().equals(row.getChargeType()))) {
+                        row.setRechargeFee(row.getActualAmount());
                     } else {
                         row.setOtherFee(row.getActualAmount());
                     }
@@ -294,9 +301,9 @@ public class ExportServiceImpl implements ExportService {
 
         HSSFWorkbook workbook = null;
         try {
-            String[] header = {"序号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "应付金额", "现金支付", "余额支付", "乐团课", "VIP课", "网管课", "乐理课", "考级", "维修费用","云教练","押金", "乐器", "教辅费用", "其它", "手续费", "到账时间",
+            String[] header = {"序号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "应付金额", "现金支付", "余额支付", "乐团课", "VIP课", "网管课", "乐理课", "考级", "维修费用", "云教练", "押金", "乐器", "教辅费用", "上门费", "账户充值", "其它", "手续费", "到账时间",
                     "关联乐团ID/VIP课ID", "课程形态", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"};
-            String[] body = {"id", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "expectAmount", "actualAmount", "balancePaymentAmount", "musicGroupCourseFee", "vipCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee","cloudTeacherFee", "leaseFee", "musicalFee", "teachingFee", "otherFee", "transferFee", "payTime", "musicGroupId",
+            String[] body = {"id", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "expectAmount", "actualAmount", "balancePaymentAmount", "musicGroupCourseFee", "vipCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "cloudTeacherFee", "leaseFee", "musicalFee", "teachingFee", "visitFee", "rechargeFee", "otherFee", "transferFee", "payTime", "musicGroupId",
                     "groupType.desc", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "eduTeacher", "memo"};
             workbook = POIUtil.exportExcel(header, body, studentPaymentOrderExportDtos);
             workbook.write(fileOutputStream);
@@ -359,7 +366,8 @@ public class ExportServiceImpl implements ExportService {
                     transferFee = row.getActualAmount().multiply(new BigDecimal("0.28")).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
                 }
                 if (countFeeFlagNum.getTotalNum().equals(countFeeFlagNum.getYesNum())) {
-                    transferFee = row.getRouteAmount().multiply(new BigDecimal("0.28")).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
+                    BigDecimal totalTransferFee = row.getActualAmount().multiply(new BigDecimal("0.28")).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
+                    transferFee = totalTransferFee.multiply(row.getRouteAmount()).divide(row.getActualAmount(), 2, BigDecimal.ROUND_HALF_UP);
                 }
             }
             row.setTransferFee(transferFee);
@@ -462,6 +470,13 @@ public class ExportServiceImpl implements ExportService {
                         row.setDegreeFee(row.getActualAmount());
                     } else if (row.getChargeType() != null && SporadicChargeTypeEnum.PRACTICE_GROUP_BUY.getCode().equals(row.getChargeType())) {
                         row.setPracticeCourseFee(row.getActualAmount());
+                    } else if (row.getChargeType() != null && SporadicChargeTypeEnum.MUSIC_UPKEEP.getCode().equals(row.getChargeType())) {
+                        row.setMaintenanceFee(row.getActualAmount());
+                    } else if (row.getChargeType() != null && SporadicChargeTypeEnum.VISITING_FEE.getCode().equals(row.getChargeType())) {
+                        row.setVisitFee(row.getActualAmount());
+                    } else if (row.getChargeType() != null && (SporadicChargeTypeEnum.RECHARGE.getCode().equals(row.getChargeType()) ||
+                            SporadicChargeTypeEnum.HIGH_ONLINE_ACTIVITY.getCode().equals(row.getChargeType()))) {
+                        row.setRechargeFee(row.getActualAmount());
                     } else {
                         row.setOtherFee(row.getActualAmount());
                     }
@@ -699,9 +714,9 @@ public class ExportServiceImpl implements ExportService {
 
         HSSFWorkbook workbook = null;
         try {
-            String[] header = {"序号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分余额", "乐团课", "VIP课", "网管课", "乐理课", "考级", "维修费用","云教练", "押金", "乐器", "教辅费用", "其它", "手续费", "到账时间",
+            String[] header = {"序号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "应付金额", "现金支付", "余额支付", "分润账户", "分润金额", "分余额", "乐团课", "VIP课", "网管课", "乐理课", "考级", "维修费用", "云教练", "押金", "乐器", "教辅费用", "上门费", "账户充值", "其它", "手续费", "到账时间",
                     "关联乐团ID/VIP课ID", "课程形态", "零星收款类别", "专业", "分部", "教学点", "合作单位", "乐团主管", "备注"};
-            String[] body = {"id", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "expectAmount", "actualAmount", "balancePaymentAmount", "routeMerNo", "routeAmount", "routeBalance", "musicGroupCourseFee", "vipCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee","cloudTeacherFee", "leaseFee", "musicalFee", "teachingFee", "otherFee", "transferFee", "payTime", "musicGroupId",
+            String[] body = {"id", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "expectAmount", "actualAmount", "balancePaymentAmount", "routeMerNo", "routeAmount", "routeBalance", "musicGroupCourseFee", "vipCourseFee", "practiceCourseFee", "theoryCourseFee", "degreeFee", "repairFee", "cloudTeacherFee", "leaseFee", "musicalFee", "teachingFee", "visitFee", "rechargeFee", "otherFee", "transferFee", "payTime", "musicGroupId",
                     "groupType.desc", "sporadicType", "subjectName", "organName", "schoolName", "cooperationOrganName", "eduTeacher", "memo"};
             workbook = POIUtil.exportExcel(header, body, studentPaymentOrderExportDtos);
             workbook.write(fileOutputStream);
@@ -739,10 +754,10 @@ public class ExportServiceImpl implements ExportService {
         FileOutputStream fileOutputStream = new FileOutputStream(file);
         OutputStream ouputStream = null;
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部名称","乐团主管", "课程编号", "开始时间", "结束时间",
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部名称", "乐团主管", "课程编号", "开始时间", "结束时间",
                     "班级名称", "班级声部", "课程名称", "课程类型", "教学模式",
                     "教学点", "课程状态", "指导老师", "学员编号", "是否点名", "是否有考勤申诉", "预计上课人数"}, new String[]{
-                    "organName","educationTeacherName", "id", "startClassTime", "endClassTime", "classGroupName", "subjectName", "name",
+                    "organName", "educationTeacherName", "id", "startClassTime", "endClassTime", "classGroupName", "subjectName", "name",
                     "groupType.desc", "teachMode.msg", "schoolName", "status.msg", "teacherName", "studentId", "isCallNames.msg", "isComplaints", "studentNum"}, rows);
             workbook.write(fileOutputStream);
             fileOutputStream.getFD().sync();

+ 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 ("205".equals(studentPaymentOrder.getPaymentAccountNo())) {
+            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 ("205".equals(studentPaymentOrder.getPaymentAccountNo())) {
+            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 != null && studentPaymentOrder.getPaymentAccountNo() != null && studentPaymentOrder.getPaymentAccountNo().equals("200")) {
+                        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 != null && studentPaymentOrder.getPaymentAccountNo() != null && studentPaymentOrder.getPaymentAccountNo().equals("200")) {
+                    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);

+ 8 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java

@@ -194,6 +194,9 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
         List<String> orderNoList = new ArrayList<String>();
 
         for (StudentPaymentOrder payingOrder : payingOrders) {
+            if (payingOrder.getTransNo() == null && "205".equals(payingOrder.getPaymentAccountNo()) && DateUtil.isSameDay(payingOrder.getCreateTime(), new Date())) {
+                continue;
+            }
             if (payingOrder.getTransNo() == null) {
                 orderNoList.add(payingOrder.getOrderNo());
                 continue;
@@ -367,9 +370,9 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
             subjectChangeService.orderCallback(order);
         } else if (order.getType().equals(OrderTypeEnum.DEGREE_REGISTRATION)) {
             degreeRegistrationService.updateStatus(order);
-        }else if (order.getType().equals(OrderTypeEnum.MAINTENANCE)) {
+        } else if (order.getType().equals(OrderTypeEnum.MAINTENANCE)) {
             studentInstrumentService.orderCallback(order);
-        }else if (order.getType().equals(OrderTypeEnum.REPLACEMENT)) {
+        } else if (order.getType().equals(OrderTypeEnum.REPLACEMENT)) {
             replacementInstrumentActivityService.orderCallback(order);
         }
     }
@@ -520,9 +523,9 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     public List<StudentPaymentOrderExportDto> getUserApplyOrders(Integer studentId, String musicGroupId) {
         List<StudentPaymentOrderExportDto> orders = studentPaymentOrderDao.getUserApplyOrders(studentId, musicGroupId);
         for (StudentPaymentOrderExportDto order : orders) {
-            if(order.getOrderDetailList()==null) continue;
+            if (order.getOrderDetailList() == null) continue;
             for (StudentPaymentOrderDetail studentPaymentOrderDetail : order.getOrderDetailList()) {
-                if(studentPaymentOrderDetail.getGoodsList()==null) continue;
+                if (studentPaymentOrderDetail.getGoodsList() == null) continue;
 
                 String childGoodIds = "";
                 for (Goods goods : studentPaymentOrderDetail.getGoodsList()) {
@@ -530,7 +533,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
                         childGoodIds += StringUtils.isNotBlank(childGoodIds) ? "," : "" + goods.getComplementGoodsIdList();
                     }
                 }
-                if(StringUtils.isNotBlank(childGoodIds)) {
+                if (StringUtils.isNotBlank(childGoodIds)) {
                     studentPaymentOrderDetail.setChildGoodsList(goodsDao.findGoodsByIds(childGoodIds));
                 }
             }

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

@@ -495,31 +495,35 @@ 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;
+        boolean firstPaidZeroFlag = 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) {
+            paidZeroFlag = true;
+            if (paidZeroNum <= 0) {
                 musicOneSubjectClassPlan.setPaidZeroNum(paidZeroNum + 1);
+                musicOneSubjectClassPlan.setPaidStudentNum(paidNum + 1);
+                firstPaidZeroFlag = 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.setVersion(0);
+            String code = firstPaidZeroFlag ? "200" : "205";
+            studentPaymentOrder.setPaymentAccountNo(code);
+            studentPaymentOrderService.update(studentPaymentOrder);
         }
-
         return studentPaymentOrder;
     }
 
@@ -1202,10 +1206,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("200")) {
+                    musicOneSubjectClassPlan.setPaidZeroNum(musicOneSubjectClassPlan.getPaidZeroNum() - 1);
+                    musicOneSubjectClassPlan.setPaidStudentNum(musicOneSubjectClassPlan.getPaidStudentNum() - 1);
+                }
+            } else {
+                musicOneSubjectClassPlan.setPaidStudentNum(musicOneSubjectClassPlan.getPaidStudentNum() - 1);
             }
             updateCount = musicGroupSubjectPlanService.update(musicOneSubjectClassPlan);
             if (updateCount <= 0) {

+ 7 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectChangeServiceImpl.java

@@ -70,6 +70,8 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
     private GoodsService goodsService;
     @Autowired
     private StudentInstrumentService studentInstrumentService;
+    @Autowired
+    private MusicGroupPurchaseListDao musicGroupPurchaseListDao;
 
     private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
@@ -121,8 +123,10 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
             throw new BizException("声部更改已缴费,请勿重复缴费");
         }
 
-        MusicGroup musicGroup = musicGroupDao.get(subjectChange.getMusicGroupId());
-        if (!musicGroup.getStatus().equals(MusicGroupStatusEnum.APPLY) && !musicGroup.getStatus().equals(MusicGroupStatusEnum.PAY)) {
+        HashSet<String> musicGroupIds = new HashSet<>();
+        musicGroupIds.add(subjectChange.getMusicGroupId());
+        List<MusicGroupPurchaseList> musicGroupPurchaseListCount = musicGroupPurchaseListDao.getCount(musicGroupIds);
+        if (musicGroupPurchaseListCount.size() > 0) {
             throw new BizException("乐团当前状态不能缴声部更改费用");
         }
         BigDecimal amount = subjectChange.getGoodsMargin().add(subjectChange.getCourseMargin());
@@ -249,7 +253,7 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
         }
         if (StringUtils.isNotBlank(subjectChange.getChangeAccessories())) {
             goodsIds += StringUtils.isNotBlank(goodsIds) ? "," + subjectChange.getChangeAccessories() : subjectChange.getChangeAccessories();
-        }else {
+        } else {
             subjectChange.setChangeAccessories(null);
         }
         BigDecimal goodsPrice = BigDecimal.ZERO;

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

@@ -81,12 +81,9 @@ public class SubjectServiceImpl extends BaseServiceImpl<Integer, Subject> implem
         Map<Integer, Integer> payNumMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertIntegerMap(studentRegistrationDao.countPayNum(musicGroupId))), HashMap.class);
         subApplyDetail.forEach(detail -> {
             Integer num = payNumMap.get(detail.getSubjectId());
-            if (!musicGroup.getCourseViewType().equals(CourseViewTypeEnum.CLOUD_TEACHER)) {
-                detail.setPayNum(num == null ? 0 : num);
-            }
+            detail.setPayNum(num == null ? 0 : num);
             num = applyNum.get(detail.getSubjectId());
             detail.setApplyStudentNum(num == null ? 0 : num);
-
         });
         return subApplyDetail;
     }

+ 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()));
     }