|
@@ -65,6 +65,10 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
|
|
|
private ChargeTypeSubjectMapperDao chargeTypeSubjectMapperDao;
|
|
|
@Autowired
|
|
|
private StudentMusicCourseFeeService studentMusicCourseFeeService;
|
|
|
+ @Autowired
|
|
|
+ private MemberFeeSettingService memberFeeSettingService;
|
|
|
+ @Autowired
|
|
|
+ private MusicGroupPaymentCalenderMemberDao musicGroupPaymentCalenderMemberDao;
|
|
|
|
|
|
@Override
|
|
|
public BaseDAO<Long, StudentPaymentOrderDetail> getDAO() {
|
|
@@ -658,7 +662,7 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
|
|
|
}
|
|
|
|
|
|
//缴费项目详情
|
|
|
- musicGroupPaymentCalenderDetailService.addCalenderDetail(studentPaymentOrder);
|
|
|
+ MusicGroupPaymentCalenderDetail paymentCalenderDetail = musicGroupPaymentCalenderDetailService.addCalenderDetail(studentPaymentOrder);
|
|
|
|
|
|
List<OrderDetailTypeEnum> detailTypeEnums = allDetails.stream().map(StudentPaymentOrderDetail::getType).collect(Collectors.toList());
|
|
|
//销售订单详情
|
|
@@ -701,14 +705,20 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
|
|
|
repair.setStudentInstrumentId(studentInstrumentId);
|
|
|
studentPaymentOrderDetailDao.update(repair);
|
|
|
}
|
|
|
- //如果是免费团,那么要处理乐器溢出的课程费用
|
|
|
- CourseViewTypeEnum courseViewType = musicGroup.getCourseViewType();
|
|
|
- Integer subjectId = studentRegistration.getActualSubjectId();
|
|
|
- ChargeTypeSubjectMapper chargeType = chargeTypeSubjectMapperDao.findByViewTypeANdSubject(courseViewType,subjectId,musicGroup.getTenantId());
|
|
|
- if(Objects.nonNull(chargeType) && chargeType.getFee() != null && musical.getPrice().compareTo(BigDecimal.ZERO) > 0
|
|
|
- && chargeType.getFee().compareTo(musical.getPrice()) < 0){
|
|
|
- studentMusicCourseFeeService.addExpectPrice(studentRegistration.getUserId(),
|
|
|
- musicGroup.getId(),musical.getPrice().subtract(chargeType.getFee()));
|
|
|
+ if(studentPaymentOrder.getType() == OrderTypeEnum.APPLY){
|
|
|
+ //如果是免费团,那么要处理乐器溢出的课程费用
|
|
|
+ CourseViewTypeEnum courseViewType = musicGroup.getCourseViewType();
|
|
|
+ Integer subjectId = studentRegistration.getActualSubjectId();
|
|
|
+ ChargeTypeSubjectMapper chargeType = chargeTypeSubjectMapperDao.findByViewTypeANdSubject(courseViewType,subjectId,musicGroup.getTenantId());
|
|
|
+ if(Objects.nonNull(chargeType) && chargeType.getFee() != null && musical.getPrice().compareTo(BigDecimal.ZERO) > 0
|
|
|
+ && chargeType.getFee().compareTo(musical.getPrice()) < 0){
|
|
|
+ BigDecimal musicalFee = musical.getPrice().subtract(chargeType.getFee());
|
|
|
+ studentMusicCourseFeeService.addExpectPrice(studentRegistration.getUserId(),
|
|
|
+ musicGroup.getId(),musicalFee);
|
|
|
+ //设置缴费项目详情乐器和课费
|
|
|
+ paymentCalenderDetail.setExpectAmount(chargeType.getFee());
|
|
|
+ paymentCalenderDetail.setActualAmount(musicalFee);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -716,12 +726,24 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
|
|
|
if (detailTypeEnums.contains(CLOUD_TEACHER)) {
|
|
|
if(studentPaymentOrder.getType() == OrderTypeEnum.APPLY){
|
|
|
studentRegistration.setHasCloudTeacher(1);
|
|
|
+ //如果是报名订单,要处理云教练费用、以及溢出课费
|
|
|
+ if(musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE){
|
|
|
+ //获取云教练溢出费用
|
|
|
+ MusicGroupPaymentCalenderMember calenderMember = musicGroupPaymentCalenderMemberDao.findByCalenderId(paymentCalenderDetail.getMusicGroupPaymentCalenderId());
|
|
|
+ BigDecimal courseIncome = memberFeeSettingService.getAmount(musicGroup.getOrganId(), 1, calenderMember.getPeriod(),
|
|
|
+ calenderMember.getNum(), MemberFeeSettingServiceImpl::getIncome);
|
|
|
+ if(calenderMember.getActualAmount().compareTo(courseIncome) > 0){
|
|
|
+ paymentCalenderDetail.setExpectMemberAmount(courseIncome);
|
|
|
+ paymentCalenderDetail.setActualAmount(calenderMember.getActualAmount().subtract(courseIncome));
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
BigDecimal cloudTeacherFee = allDetails.stream().filter(o -> o.getType() == CLOUD_TEACHER)
|
|
|
.map(o -> o.getPrice().subtract(o.getRemitFee() == null ? BigDecimal.ZERO : o.getRemitFee()))
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
cloudTeacherOrderService.addOrderDetail2CloudTeacher(studentPaymentOrder, cloudTeacherFee);
|
|
|
}
|
|
|
+ musicGroupPaymentCalenderDetailService.update(paymentCalenderDetail);
|
|
|
studentRegistrationDao.update(studentRegistration);
|
|
|
}
|
|
|
|