|
@@ -75,8 +75,6 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
|
|
|
@Autowired
|
|
|
private MusicGroupStudentClassAdjustDao musicGroupStudentClassAdjustDao;
|
|
|
@Autowired
|
|
|
- private SysConfigDao sysConfigDao;
|
|
|
- @Autowired
|
|
|
private StudentPaymentOrderDao studentPaymentOrderDaop;
|
|
|
|
|
|
@Override
|
|
@@ -98,73 +96,54 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
|
|
|
}
|
|
|
|
|
|
//获取活动信息
|
|
|
- BigDecimal discount = new BigDecimal(100);
|
|
|
VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId());
|
|
|
- if(vipGroupActivity != null){
|
|
|
- discount = vipGroupActivity.getDiscount();
|
|
|
- }
|
|
|
|
|
|
List<CourseSchedule> vipGroupCourseSchedules=courseScheduleDao.findGroupCourseSchedules(vipGroupId.toString(),GroupType.VIP.getCode());
|
|
|
|
|
|
if(CollectionUtils.isEmpty(vipGroupCourseSchedules)){
|
|
|
throw new BizException("未获取到排课信息");
|
|
|
}
|
|
|
- List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<>();
|
|
|
+
|
|
|
+ int giveClassTimes=0;
|
|
|
|
|
|
StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDaop.findByStudentVipGroup(vipGroupId, userId, DealStatusEnum.SUCCESS.getCode());
|
|
|
+ BigDecimal couponFee = new BigDecimal(0);
|
|
|
if(Objects.nonNull(studentPaymentOrder)){
|
|
|
- //实际支付金额,去除优惠券
|
|
|
- BigDecimal actualPrice = studentPaymentOrder.getExpectAmount().subtract(studentPaymentOrder.getCouponRemitFee());
|
|
|
- BigDecimal divide = actualPrice.divide(new BigDecimal(vipGroupCourseSchedules.size()), ROUND_DOWN);
|
|
|
- BigDecimal firstAmount = actualPrice.subtract(divide.multiply(new BigDecimal(vipGroupCourseSchedules.size()))).add(divide);
|
|
|
- for (int i = 0; i < vipGroupCourseSchedules.size(); i++) {
|
|
|
- CourseSchedule courseSchedule = vipGroupCourseSchedules.get(i);
|
|
|
+ couponFee = studentPaymentOrder.getCouponRemitFee().divide(new BigDecimal(vipGroupCourseSchedules.size()-giveClassTimes), CommonConstants.DECIMAL_PLACE);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<>();
|
|
|
+ Map<TeachModeEnum, List<CourseSchedule>> courseScheduleGroupByTeachMode = vipGroupCourseSchedules.stream().collect(Collectors.groupingBy(CourseSchedule::getTeachMode));
|
|
|
+ for(TeachModeEnum teachModeEnum:courseScheduleGroupByTeachMode.keySet()){
|
|
|
+ List<CourseSchedule> courseSchedules = courseScheduleGroupByTeachMode.get(teachModeEnum)
|
|
|
+ .stream()
|
|
|
+ .sorted(Comparator.comparing(CourseSchedule::getStartClassTime)).collect(Collectors.toList());
|
|
|
+ for(int i=0;i<courseSchedules.size();i++) {
|
|
|
+ //创建学生课程应缴费记录
|
|
|
CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
|
|
|
courseScheduleStudentPayment.setUserId(userId);
|
|
|
- courseScheduleStudentPayment.setGroupType(courseSchedule.getGroupType());
|
|
|
- courseScheduleStudentPayment.setMusicGroupId(courseSchedule.getMusicGroupId());
|
|
|
- courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
|
|
|
- courseScheduleStudentPayment.setClassGroupId(courseSchedule.getClassGroupId());
|
|
|
- if (i == 0) {
|
|
|
- courseScheduleStudentPayment.setExpectPrice(firstAmount);
|
|
|
+ courseScheduleStudentPayment.setGroupType(courseSchedules.get(i).getGroupType());
|
|
|
+ courseScheduleStudentPayment.setMusicGroupId(courseSchedules.get(i).getMusicGroupId());
|
|
|
+ courseScheduleStudentPayment.setCourseScheduleId(courseSchedules.get(i).getId());
|
|
|
+ courseScheduleStudentPayment.setClassGroupId(courseSchedules.get(i).getClassGroupId());
|
|
|
+
|
|
|
+ if (teachModeEnum == TeachModeEnum.ONLINE) {
|
|
|
+ //学生线上单节课应缴费计算
|
|
|
+ courseScheduleStudentPayment.setExpectPrice(
|
|
|
+ vipGroup.getOnlineClassesUnitPrice().multiply(vipGroupActivity.getDiscount())
|
|
|
+ .divide(new BigDecimal(100), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP)
|
|
|
+ .subtract(couponFee));
|
|
|
}else{
|
|
|
- courseScheduleStudentPayment.setExpectPrice(actualPrice);
|
|
|
+ //学生线下单节课应缴费计算
|
|
|
+ courseScheduleStudentPayment.setExpectPrice(
|
|
|
+ vipGroup.getOfflineClassesUnitPrice().multiply(vipGroupActivity.getDiscount())
|
|
|
+ .divide(new BigDecimal(100), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP)
|
|
|
+ .subtract(couponFee));
|
|
|
}
|
|
|
- courseScheduleStudentPayment.setOriginalPrice(TeachModeEnum.ONLINE.equals(courseSchedule.getTeachMode())?vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice():vipGroupDefaultClassesUnitPrice.getOfflineClassesUnitPrice());
|
|
|
+ courseScheduleStudentPayment.setOriginalPrice(TeachModeEnum.ONLINE.equals(teachModeEnum)?vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice():vipGroupDefaultClassesUnitPrice.getOfflineClassesUnitPrice());
|
|
|
courseScheduleStudentPayment.setActualPrice(courseScheduleStudentPayment.getExpectPrice());
|
|
|
courseScheduleStudentPayments.add(courseScheduleStudentPayment);
|
|
|
}
|
|
|
- }else {
|
|
|
- Map<TeachModeEnum, List<CourseSchedule>> courseScheduleGroupByTeachMode = vipGroupCourseSchedules.stream().collect(Collectors.groupingBy(CourseSchedule::getTeachMode));
|
|
|
- for(TeachModeEnum teachModeEnum:courseScheduleGroupByTeachMode.keySet()){
|
|
|
- List<CourseSchedule> courseSchedules = courseScheduleGroupByTeachMode.get(teachModeEnum)
|
|
|
- .stream()
|
|
|
- .sorted(Comparator.comparing(CourseSchedule::getStartClassTime)).collect(Collectors.toList());
|
|
|
- for(int i=0;i<courseSchedules.size();i++) {
|
|
|
- //创建学生课程应缴费记录
|
|
|
- CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
|
|
|
- courseScheduleStudentPayment.setUserId(userId);
|
|
|
- courseScheduleStudentPayment.setGroupType(courseSchedules.get(i).getGroupType());
|
|
|
- courseScheduleStudentPayment.setMusicGroupId(courseSchedules.get(i).getMusicGroupId());
|
|
|
- courseScheduleStudentPayment.setCourseScheduleId(courseSchedules.get(i).getId());
|
|
|
- courseScheduleStudentPayment.setClassGroupId(courseSchedules.get(i).getClassGroupId());
|
|
|
-
|
|
|
- if (teachModeEnum == TeachModeEnum.ONLINE) {
|
|
|
- //学生线上单节课应缴费计算
|
|
|
- courseScheduleStudentPayment.setExpectPrice(
|
|
|
- vipGroup.getOnlineClassesUnitPrice().multiply(discount)
|
|
|
- .divide(new BigDecimal(100), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP));
|
|
|
- }else{
|
|
|
- //学生线下单节课应缴费计算
|
|
|
- courseScheduleStudentPayment.setExpectPrice(
|
|
|
- vipGroup.getOfflineClassesUnitPrice().multiply(discount)
|
|
|
- .divide(new BigDecimal(100), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP));
|
|
|
- }
|
|
|
- courseScheduleStudentPayment.setOriginalPrice(TeachModeEnum.ONLINE.equals(teachModeEnum)?vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice():vipGroupDefaultClassesUnitPrice.getOfflineClassesUnitPrice());
|
|
|
- courseScheduleStudentPayment.setActualPrice(courseScheduleStudentPayment.getExpectPrice());
|
|
|
- courseScheduleStudentPayments.add(courseScheduleStudentPayment);
|
|
|
- }
|
|
|
- }
|
|
|
}
|
|
|
return courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
|
|
|
}
|