|
@@ -295,30 +295,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
vipGroupApplyBaseInfoDto.getOnlineClassesUnitPrice(),
|
|
|
vipGroupApplyBaseInfoDto.getOfflineClassesUnitPrice());
|
|
|
|
|
|
-// BigDecimal offlineClassNum=new BigDecimal(vipGroupApplyBaseInfoDto.getOfflineClassesNum());
|
|
|
-// BigDecimal onlineClassNum=new BigDecimal(vipGroupApplyBaseInfoDto.getOnlineClassesNum());
|
|
|
-//
|
|
|
-// if(vipGroupActivity.getType().equals(VipGroupActivityTypeEnum.GIVE_CLASS)){
|
|
|
-// if(vipGroupApplyBaseInfoDto.getGiveTeachMode()==TeachModeEnum.OFFLINE){
|
|
|
-// if(new BigDecimal(totalClassTimes).compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){
|
|
|
-// offlineClassNum=offlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
|
|
|
-// }
|
|
|
-// }else if(vipGroupApplyBaseInfoDto.getGiveTeachMode()==TeachModeEnum.ONLINE){
|
|
|
-// if(new BigDecimal(totalClassTimes).compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){
|
|
|
-// onlineClassNum=onlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
|
|
|
-// }
|
|
|
-// }else{
|
|
|
-// throw new BizException("请指定赠送课程类型!");
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-// BigDecimal tempFee = costInfo.get("totalPrice").multiply(new BigDecimal(0.6));
|
|
|
-// BigDecimal totalSalary = vipGroupApplyBaseInfoDto.getOfflineTeacherSalary().multiply(offlineClassNum)
|
|
|
-// .add(vipGroupApplyBaseInfoDto.getOnlineTeacherSalary().multiply(onlineClassNum));
|
|
|
-// if(totalSalary.compareTo(tempFee)>0){
|
|
|
-// throw new BizException("教师总课酬不能高于课程总价60%");
|
|
|
-// }
|
|
|
-
|
|
|
vipGroupApplyBaseInfoDto.setAuditStatus(AuditStatusEnum.PASS);
|
|
|
|
|
|
//如果默认课酬与实际课酬不匹配则需要审批
|
|
@@ -961,9 +937,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
|
|
|
@Override
|
|
|
public <K extends VipGroup> Map<String,BigDecimal> countVipGroupPredictFee(K vipGroup,
|
|
|
- Integer teacherId,
|
|
|
- BigDecimal onlineClassesUnitPrice,
|
|
|
- BigDecimal offlineClassesUnitPrice){
|
|
|
+ Integer teacherId){
|
|
|
|
|
|
if(Objects.isNull(teacherId)){
|
|
|
throw new BizException("请指定教师");
|
|
@@ -1006,12 +980,16 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
}
|
|
|
vscp.setPaymentPrice(vscp.getOfflineClassesUnitPrice().multiply(new BigDecimal(vipGroup.getOfflineClassesNum())).add(vscp.getOnlineClassesUnitPrice().multiply(new BigDecimal(vipGroup.getOnlineClassesNum()))));
|
|
|
vipGroup.setTotalPrice(vipGroup.getTotalPrice().add(vscp.getPaymentPrice()));
|
|
|
+ results.put(vscp.getStudentId().toString(), vscp.getPaymentPrice());
|
|
|
}
|
|
|
BigDecimal ots = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
BigDecimal ofts = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
if(Objects.nonNull(vipGroup.getStatus())&&normalStudentNum!=vipGroupCategory.getStudentNum()){
|
|
|
- ots = ots.divide(new BigDecimal(vipGroupCategory.getStudentNum()),CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
- ofts = ofts.divide(new BigDecimal(vipGroupCategory.getStudentNum()),CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
+ ots = ots.multiply(new BigDecimal(normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
+ if(normalStudentNum>5){
|
|
|
+ normalStudentNum = 5;
|
|
|
+ }
|
|
|
+ ofts = ofts.multiply(new BigDecimal(normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
}
|
|
|
results.put("totalPrice",vipGroup.getTotalPrice());
|
|
|
results.put("onlineTeacherSalary",ots);
|
|
@@ -1027,14 +1005,14 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
|
|
|
BigDecimal offlineClassNum=new BigDecimal(vipGroup.getOfflineClassesNum());
|
|
|
BigDecimal onlineClassNum=new BigDecimal(vipGroup.getOnlineClassesNum());
|
|
|
- onlineClassesUnitPrice=Objects.isNull(onlineClassesUnitPrice)?vipGroup.getOnlineClassesUnitPrice():onlineClassesUnitPrice;
|
|
|
+ BigDecimal onlineClassesUnitPrice=vipGroup.getOnlineClassesUnitPrice();
|
|
|
if(Objects.isNull(onlineClassesUnitPrice)){
|
|
|
- onlineClassesUnitPrice = BigDecimal.ZERO;
|
|
|
+ throw new BizException("课程单价异常");
|
|
|
}
|
|
|
BigDecimal onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
|
|
|
- offlineClassesUnitPrice=Objects.isNull(offlineClassesUnitPrice)?vipGroup.getOfflineClassesUnitPrice():offlineClassesUnitPrice;
|
|
|
+ BigDecimal offlineClassesUnitPrice=vipGroup.getOfflineClassesUnitPrice();
|
|
|
if(Objects.isNull(offlineClassesUnitPrice)){
|
|
|
- offlineClassesUnitPrice = BigDecimal.ZERO;
|
|
|
+ throw new BizException("课程单价异常");
|
|
|
}
|
|
|
BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
|
|
|
BigDecimal totalClassNum=offlineClassNum.add(onlineClassNum);
|
|
@@ -2836,10 +2814,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ List<VipGroupStudentCoursePrice> vipGroupStudentCoursePrices = vipGroupStudentCoursePriceDao.getVipGroupStudentCoursePrice(vipGroupId, null);
|
|
|
Map<Integer, VipGroupStudentCoursePrice> studentCoursePriceMap = new HashMap<>();
|
|
|
- if(Objects.isNull(vipGroup.getVipGroupActivityId())){
|
|
|
- List<VipGroupStudentCoursePrice> vipGroupStudentCoursePrice = vipGroupStudentCoursePriceDao.getVipGroupStudentCoursePrice(vipGroupId, null);
|
|
|
- studentCoursePriceMap = vipGroupStudentCoursePrice.stream().collect(Collectors.toMap(VipGroupStudentCoursePrice::getStudentId, v->v, (v1, v2)->v1));
|
|
|
+ if(!CollectionUtils.isEmpty(vipGroupStudentCoursePrices)){
|
|
|
+ studentCoursePriceMap = vipGroupStudentCoursePrices.stream().collect(Collectors.toMap(VipGroupStudentCoursePrice::getStudentId, v->v, (v1, v2)->v1));
|
|
|
}
|
|
|
|
|
|
VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.getByVipGroup(vipGroup.getId());
|
|
@@ -2948,7 +2926,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId().intValue());
|
|
|
}
|
|
|
|
|
|
- BigDecimal surplusCourseNum = new BigDecimal(surplusCourses.size());
|
|
|
BigDecimal surplusCoursesPrice=new BigDecimal(0);
|
|
|
boolean hasGiveClass=false;
|
|
|
int onlineCourseTimes=0,
|
|
@@ -2962,7 +2939,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
&&surplusCourses.size()>=Integer.parseInt(vipGroupActivity.getAttribute1())){
|
|
|
hasGiveClass=true;
|
|
|
giveClassTimes=Integer.parseInt(vipGroupActivity.getAttribute2());
|
|
|
- surplusCourseNum=surplusCourseNum.subtract(new BigDecimal(giveClassTimes));
|
|
|
Map<TeachModeEnum, List<CourseSchedule>> teachModeCourseMap = surplusCourses.stream()
|
|
|
.collect(Collectors.groupingBy(CourseSchedule::getTeachMode));
|
|
|
List<CourseSchedule> onlineCourses=teachModeCourseMap.get(TeachModeEnum.ONLINE);
|
|
@@ -2974,51 +2950,53 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
offlineCourseTotalTimes=offlineCourses.size();
|
|
|
}
|
|
|
}
|
|
|
- for (int i=0;i<surplusCourses.size();i++) {
|
|
|
- CourseSchedule courseSchedule=surplusCourses.get(i);
|
|
|
- if(courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)){
|
|
|
- offlineCourseTimes+=1;
|
|
|
- }else if(courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)){
|
|
|
- onlineCourseTimes+=1;
|
|
|
- }
|
|
|
- if(hasGiveClass
|
|
|
- &&vipGroup.getGiveTeachMode() == courseSchedule.getTeachMode()){
|
|
|
- if(courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)
|
|
|
- &&offlineCourseTimes>(offlineCourseTotalTimes-giveClassTimes)){
|
|
|
- continue;
|
|
|
- }
|
|
|
|
|
|
+ //生成学生单课缴费信息
|
|
|
+ for (Integer studentId:studentIds) {
|
|
|
+ offlineCourseTimes=0;
|
|
|
+ onlineCourseTimes=0;
|
|
|
+ surplusCoursesPrice=new BigDecimal(0);
|
|
|
+
|
|
|
+ if(studentCoursePriceMap.containsKey(studentId)){
|
|
|
+ VipGroupStudentCoursePrice vipGroupStudentCoursePrice = studentCoursePriceMap.get(studentId);
|
|
|
+ vipGroup.setOfflineClassesUnitPrice(vipGroupStudentCoursePrice.getOfflineClassesUnitPrice());
|
|
|
+ vipGroup.setOnlineClassesUnitPrice(vipGroupStudentCoursePrice.getOnlineClassesUnitPrice());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ for (int i=0;i<surplusCourses.size();i++) {
|
|
|
+ CourseSchedule courseSchedule=surplusCourses.get(i);
|
|
|
+ if(courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)){
|
|
|
+ offlineCourseTimes+=1;
|
|
|
+ }else if(courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)){
|
|
|
+ onlineCourseTimes+=1;
|
|
|
+ }
|
|
|
if(hasGiveClass
|
|
|
&&vipGroup.getGiveTeachMode() == courseSchedule.getTeachMode()){
|
|
|
- if(courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)
|
|
|
- &&onlineCourseTimes>(onlineCourseTotalTimes-giveClassTimes)){
|
|
|
+ if(courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)
|
|
|
+ &&offlineCourseTimes>(offlineCourseTotalTimes-giveClassTimes)){
|
|
|
continue;
|
|
|
}
|
|
|
+
|
|
|
+ if(hasGiveClass
|
|
|
+ &&vipGroup.getGiveTeachMode() == courseSchedule.getTeachMode()){
|
|
|
+ if(courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)
|
|
|
+ &&onlineCourseTimes>(onlineCourseTotalTimes-giveClassTimes)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)){
|
|
|
+ surplusCoursesPrice=surplusCoursesPrice.add(vipGroup.getOfflineClassesUnitPrice());
|
|
|
+ }else if(courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)){
|
|
|
+ surplusCoursesPrice=surplusCoursesPrice.add(vipGroup.getOnlineClassesUnitPrice());
|
|
|
}
|
|
|
}
|
|
|
- if(courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)){
|
|
|
- surplusCoursesPrice=surplusCoursesPrice.add(vipGroup.getOfflineClassesUnitPrice());
|
|
|
- }else if(courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)){
|
|
|
- surplusCoursesPrice=surplusCoursesPrice.add(vipGroup.getOnlineClassesUnitPrice());
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- BigDecimal discount=null;
|
|
|
- if(Objects.nonNull(vipGroupActivity)&&vipGroupActivity.getType().equals(VipGroupActivityTypeEnum.DISCOUNT)){
|
|
|
- discount=new BigDecimal(vipGroupActivity.getAttribute1()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
|
|
|
- surplusCoursesPrice=surplusCoursesPrice.multiply(discount).setScale(CommonConstants.DECIMAL_FINAL_PLACE,BigDecimal.ROUND_HALF_UP);
|
|
|
- }
|
|
|
-
|
|
|
- //生成学生单课缴费信息
|
|
|
- for (Integer studentId:studentIds) {
|
|
|
- if(Objects.isNull(vipGroupActivity)){
|
|
|
- VipGroupStudentCoursePrice vipGroupStudentCoursePrice = studentCoursePriceMap.get(studentId);
|
|
|
- if(Objects.isNull(vipGroupStudentCoursePrice)||Objects.isNull(vipGroupStudentCoursePrice.getOfflineClassesUnitPrice())||Objects.isNull(vipGroupStudentCoursePrice.getOnlineClassesUnitPrice())){
|
|
|
- throw new BizException("学员缴费设置有误");
|
|
|
- }
|
|
|
- vipGroup.setOfflineClassesUnitPrice(vipGroupStudentCoursePrice.getOfflineClassesUnitPrice());
|
|
|
- vipGroup.setOnlineClassesUnitPrice(vipGroupStudentCoursePrice.getOnlineClassesUnitPrice());
|
|
|
- surplusCoursesPrice = vipGroupStudentCoursePrice.getOfflineClassesUnitPrice().multiply(new BigDecimal(offlineCourseTimes)).add(vipGroupStudentCoursePrice.getOnlineClassesUnitPrice().multiply(new BigDecimal(onlineCourseTimes)));
|
|
|
+ BigDecimal discount=null;
|
|
|
+ if(Objects.nonNull(vipGroupActivity)&&vipGroupActivity.getType().equals(VipGroupActivityTypeEnum.DISCOUNT)){
|
|
|
+ discount=new BigDecimal(vipGroupActivity.getAttribute1()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
|
|
|
+ surplusCoursesPrice=surplusCoursesPrice.multiply(discount).setScale(CommonConstants.DECIMAL_FINAL_PLACE,BigDecimal.ROUND_HALF_UP);
|
|
|
}
|
|
|
|
|
|
sysUserCashAccountService.subtractFromCourseBalanceAndBalance(studentId,surplusCoursesPrice,PlatformCashAccountDetailTypeEnum.PAY_FEE, "后台添加学员扣减账户金额");
|