|  | @@ -275,14 +275,14 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |          if (goodsList != null) {
 | 
	
		
			
				|  |  |              for (Goods goods : goodsList) {
 | 
	
		
			
				|  |  |                  StudentPaymentOrderDetail studentPaymentOrderDetail4goods = new StudentPaymentOrderDetail();
 | 
	
		
			
				|  |  | -                studentPaymentOrderDetail4goods.setType(OrderDetailTypeEnum.ACCESSORIES);
 | 
	
		
			
				|  |  | +                OrderDetailTypeEnum orderDetailType = goods.getType().equals(GoodsType.INSTRUMENT) ? OrderDetailTypeEnum.MUSICAL : OrderDetailTypeEnum.ACCESSORIES;
 | 
	
		
			
				|  |  | +                studentPaymentOrderDetail4goods.setType(orderDetailType);
 | 
	
		
			
				|  |  |                  studentPaymentOrderDetail4goods.setPrice(goods.getGroupPurchasePrice());
 | 
	
		
			
				|  |  |                  studentPaymentOrderDetail4goods.setGoodsIdList(goods.getId().toString());
 | 
	
		
			
				|  |  |                  studentPaymentOrderDetail4goods.setCreateTime(date);
 | 
	
		
			
				|  |  |                  studentPaymentOrderDetail4goods.setUpdateTime(date);
 | 
	
		
			
				|  |  |                  studentPaymentOrderDetail4goods.setPaymentOrderId(studentPaymentOrder.getId());
 | 
	
		
			
				|  |  |                  studentPaymentOrderDetailList.add(studentPaymentOrderDetail4goods);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          //单独教谱
 | 
	
	
		
			
				|  | @@ -305,8 +305,8 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |          MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getSubjectId());
 | 
	
		
			
				|  |  |          int paidNum = musicOneSubjectClassPlan.getPaidStudentNum() == null ? 0 : musicOneSubjectClassPlan.getPaidStudentNum();
 | 
	
		
			
				|  |  |          musicOneSubjectClassPlan.setPaidStudentNum(paidNum + 1);
 | 
	
		
			
				|  |  | -        if (musicOneSubjectClassPlan.getPaidStudentNum() > musicOneSubjectClassPlan.getExpectedStudentNum()) {
 | 
	
		
			
				|  |  | -            throw new Exception("乐团人数已满");
 | 
	
		
			
				|  |  | +        if (studentRegistration.getTemporaryCourseFee() == null && musicOneSubjectClassPlan.getPaidStudentNum() > musicOneSubjectClassPlan.getExpectedStudentNum()) {
 | 
	
		
			
				|  |  | +            throw new BizException("乐团人数已满");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          musicGroupSubjectPlanService.update(musicOneSubjectClassPlan);
 | 
	
		
			
				|  |  |          return studentPaymentOrder;
 | 
	
	
		
			
				|  | @@ -364,7 +364,8 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |          if (goodsList != null) {
 | 
	
		
			
				|  |  |              for (Goods goods : goodsList) {
 | 
	
		
			
				|  |  |                  StudentPaymentOrderDetail studentPaymentOrderDetail4goods = new StudentPaymentOrderDetail();
 | 
	
		
			
				|  |  | -                studentPaymentOrderDetail4goods.setType(OrderDetailTypeEnum.ACCESSORIES);
 | 
	
		
			
				|  |  | +                OrderDetailTypeEnum orderDetailType = goods.getType().equals(GoodsType.INSTRUMENT) ? OrderDetailTypeEnum.MUSICAL : OrderDetailTypeEnum.ACCESSORIES;
 | 
	
		
			
				|  |  | +                studentPaymentOrderDetail4goods.setType(orderDetailType);
 | 
	
		
			
				|  |  |                  studentPaymentOrderDetail4goods.setPrice(goods.getGroupPurchasePrice());
 | 
	
		
			
				|  |  |                  studentPaymentOrderDetail4goods.setGoodsIdList(goods.getId().toString());
 | 
	
		
			
				|  |  |                  studentPaymentOrderDetail4goods.setCreateTime(date);
 | 
	
	
		
			
				|  | @@ -407,7 +408,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |      public Integer insertStudent(StudentAddDto studentAddDto) throws Exception {
 | 
	
		
			
				|  |  |          StudentRegistration studentRegistration = studentAddDto.getStudentRegistration();
 | 
	
		
			
				|  |  | -        if(studentRegistration == null){
 | 
	
		
			
				|  |  | +        if (studentRegistration == null) {
 | 
	
		
			
				|  |  |              throw new Exception("参数校验失败");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          String musicGroupId = studentRegistration.getMusicGroupId();
 | 
	
	
		
			
				|  | @@ -445,6 +446,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |              studentRegistration.setUserId(userId);
 | 
	
		
			
				|  |  |              studentRegistration.setPaymentStatus(PaymentStatusEnum.OPEN);
 | 
	
		
			
				|  |  |              studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.NORMAL);
 | 
	
		
			
				|  |  | +            studentRegistration.setTemporaryCourseFee(studentAddDto.getTemporaryCourseFee());
 | 
	
		
			
				|  |  |              //学生报名表
 | 
	
		
			
				|  |  |              studentRegistrationDao.insertBasic(studentRegistration);
 | 
	
		
			
				|  |  |              MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
 | 
	
	
		
			
				|  | @@ -452,7 +454,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |              roleIds.add(SysUserRole.OPERATION_EXECUTIVE);
 | 
	
		
			
				|  |  |              sysMessageService.batchSeoMessage(musicGroupDao.queryUserIdByRoleId(roleIds), MessageTypeEnum.BACKSTAGE_MUSIC_GROUP_ADD_STUDENT, "", musicGroup.getName(), studentRegistration.getName());
 | 
	
		
			
				|  |  |              //增加报名学生数
 | 
	
		
			
				|  |  | -            musicGroupSubjectPlanService.addApplyStudentNum(musicGroupId, studentRegistration.getSubjectId(),1);
 | 
	
		
			
				|  |  | +            musicGroupSubjectPlanService.addApplyStudentNum(musicGroupId, studentRegistration.getSubjectId(), 1);
 | 
	
		
			
				|  |  |              Integer classGroupId = studentRegistration.getClassGroupId();
 | 
	
		
			
				|  |  |              if (classGroupId != null) {
 | 
	
		
			
				|  |  |                  ClassGroup classGroup = classGroupDao.get(classGroupId);
 | 
	
	
		
			
				|  | @@ -488,13 +490,13 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |                  calendar.add(Calendar.MONTH, month);
 | 
	
		
			
				|  |  |                  DateUtil.getFirstDayOfMonth(calendar.getTime());
 | 
	
		
			
				|  |  |                  //保存乐团学生费用表
 | 
	
		
			
				|  |  | -                if(studentAddDto.getCourseFee() == null){
 | 
	
		
			
				|  |  | +                if (studentAddDto.getCourseFee() == null) {
 | 
	
		
			
				|  |  |                      MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, studentRegistration.getActualSubjectId());
 | 
	
		
			
				|  |  |                      studentAddDto.setCourseFee(musicOneSubjectClassPlan.getFee());
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  musicGroupStudentFeeDao.insert(new MusicGroupStudentFee(musicGroupId,
 | 
	
		
			
				|  |  |                          userId, studentRegistration.getSubjectId(), studentAddDto.getCourseFee(),
 | 
	
		
			
				|  |  | -                        DateUtil.getFirstDayOfMonth(calendar.getTime()), studentAddDto.getTemporaryCourseFee()));
 | 
	
		
			
				|  |  | +                        DateUtil.getFirstDayOfMonth(calendar.getTime()), null));
 | 
	
		
			
				|  |  |                  //生成订单
 | 
	
		
			
				|  |  |                  StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
 | 
	
		
			
				|  |  |                  studentPaymentOrder.setUserId(userId);
 | 
	
	
		
			
				|  | @@ -505,7 +507,9 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |                  studentPaymentOrderService.insert(studentPaymentOrder);
 | 
	
		
			
				|  |  |                  //生成订单明细
 | 
	
		
			
				|  |  |                  List<StudentPaymentOrderDetail> studentPaymentOrderDetails = studentAddDto.getStudentPaymentOrderDetails();
 | 
	
		
			
				|  |  | -                studentPaymentOrderDetails.forEach(e->{e.setPaymentOrderId(studentPaymentOrder.getId());});
 | 
	
		
			
				|  |  | +                studentPaymentOrderDetails.forEach(e -> {
 | 
	
		
			
				|  |  | +                    e.setPaymentOrderId(studentPaymentOrder.getId());
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  |                  studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetails);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              return userId;
 | 
	
	
		
			
				|  | @@ -540,35 +544,39 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 | 
	
		
			
				|  |  |          MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getSubjectId());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (studentPaymentOrder.getStatus().equals(DealStatusEnum.SUCCESS)) {
 | 
	
		
			
				|  |  | -            studentRegistration.setPaymentStatus(PaymentStatusEnum.YES);
 | 
	
		
			
				|  |  | -            studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.NORMAL);
 | 
	
		
			
				|  |  | -            studentRegistrationDao.update(studentRegistration);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            //获取当前月
 | 
	
		
			
				|  |  | -            Integer month = Integer.parseInt(DateUtil.getMonth(nowDate));
 | 
	
		
			
				|  |  | -            //获取下次缴费月份
 | 
	
		
			
				|  |  | -            List<MusicGroupPaymentCalender> musicGroupPaymentCalenders = musicGroupPaymentCalenderDao.findByMusicGroupId(studentRegistration.getMusicGroupId());
 | 
	
		
			
				|  |  | -            List<Integer> months = musicGroupPaymentCalenders.stream().map(e -> e.getPaymentMonth()).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -            for (int i = 0; i < months.size(); i++) {
 | 
	
		
			
				|  |  | -                if (months.get(i).equals(month)) {
 | 
	
		
			
				|  |  | -                    month = i == months.size() - 1 ? months.get(0) : months.get(i + 1);
 | 
	
		
			
				|  |  | +            if (studentRegistration.getTemporaryCourseFee() != null) {
 | 
	
		
			
				|  |  | +                //获取当前月
 | 
	
		
			
				|  |  | +                Integer month = Integer.parseInt(DateUtil.getMonth(nowDate));
 | 
	
		
			
				|  |  | +                //获取下次缴费月份
 | 
	
		
			
				|  |  | +                List<MusicGroupPaymentCalender> musicGroupPaymentCalenders = musicGroupPaymentCalenderDao.findByMusicGroupId(studentRegistration.getMusicGroupId());
 | 
	
		
			
				|  |  | +                List<Integer> months = musicGroupPaymentCalenders.stream().map(e -> e.getPaymentMonth()).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +                for (int i = 0; i < months.size(); i++) {
 | 
	
		
			
				|  |  | +                    if (months.get(i).equals(month)) {
 | 
	
		
			
				|  |  | +                        month = i == months.size() - 1 ? months.get(0) : months.get(i + 1);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | +                Calendar calendar = Calendar.getInstance();
 | 
	
		
			
				|  |  | +                calendar.add(Calendar.MONTH, month);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                //加入缴费周期
 | 
	
		
			
				|  |  | +                MusicGroupStudentFee musicGroupStudentFee = new MusicGroupStudentFee();
 | 
	
		
			
				|  |  | +                musicGroupStudentFee.setMusicGroupId(studentRegistration.getMusicGroupId());
 | 
	
		
			
				|  |  | +                musicGroupStudentFee.setUserId(studentRegistration.getUserId());
 | 
	
		
			
				|  |  | +                musicGroupStudentFee.setCourseFee(musicOneSubjectClassPlan.getFee());
 | 
	
		
			
				|  |  | +                musicGroupStudentFee.setCreateTime(nowDate);
 | 
	
		
			
				|  |  | +                musicGroupStudentFee.setUpdateTime(nowDate);
 | 
	
		
			
				|  |  | +                musicGroupStudentFee.setNextPaymentDate(DateUtil.getFirstDayOfMonth(calendar.getTime()));
 | 
	
		
			
				|  |  | +                musicGroupStudentFee.setLatestPaidTime(nowDate);
 | 
	
		
			
				|  |  | +                musicGroupStudentFee.setSubjectId(studentRegistration.getActualSubjectId());
 | 
	
		
			
				|  |  | +                musicGroupStudentFee.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED);
 | 
	
		
			
				|  |  | +                musicGroupStudentFeeDao.insert(musicGroupStudentFee);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            Calendar calendar = Calendar.getInstance();
 | 
	
		
			
				|  |  | -            calendar.add(Calendar.MONTH, month);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            //加入缴费周期
 | 
	
		
			
				|  |  | -            MusicGroupStudentFee musicGroupStudentFee = new MusicGroupStudentFee();
 | 
	
		
			
				|  |  | -            musicGroupStudentFee.setMusicGroupId(studentRegistration.getMusicGroupId());
 | 
	
		
			
				|  |  | -            musicGroupStudentFee.setUserId(studentRegistration.getUserId());
 | 
	
		
			
				|  |  | -            musicGroupStudentFee.setCourseFee(musicOneSubjectClassPlan.getFee());
 | 
	
		
			
				|  |  | -            musicGroupStudentFee.setCreateTime(nowDate);
 | 
	
		
			
				|  |  | -            musicGroupStudentFee.setUpdateTime(nowDate);
 | 
	
		
			
				|  |  | -            musicGroupStudentFee.setNextPaymentDate(DateUtil.getFirstDayOfMonth(calendar.getTime()));
 | 
	
		
			
				|  |  | -            musicGroupStudentFee.setLatestPaidTime(nowDate);
 | 
	
		
			
				|  |  | -            musicGroupStudentFee.setSubjectId(studentRegistration.getActualSubjectId());
 | 
	
		
			
				|  |  | -            musicGroupStudentFee.setPaymentStatus(MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED);
 | 
	
		
			
				|  |  | -            musicGroupStudentFeeDao.insert(musicGroupStudentFee);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            studentRegistration.setPaymentStatus(PaymentStatusEnum.YES);
 | 
	
		
			
				|  |  | +            studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.NORMAL);
 | 
	
		
			
				|  |  | +            studentRegistration.setTemporaryCourseFee(new BigDecimal(0));
 | 
	
		
			
				|  |  | +            studentRegistrationDao.update(studentRegistration);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              //插入交易明细
 | 
	
		
			
				|  |  |              SysUserCashAccount cashAccount = sysUserCashAccountService.get(studentRegistration.getUserId());
 |