|
|
@@ -1898,213 +1898,213 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
teacherSalary=vipOnlineSalary.add(vipOfflineSalary).add(giveVipOnlineSalary).add(giveVipOfflineSalary);
|
|
|
return new VipGroupCostCountDto(null,teacherSalary);
|
|
|
}*/
|
|
|
-
|
|
|
- @Override
|
|
|
- public <K extends VipGroup> Map<String,BigDecimal> countVipGroupPredictFee(K vipGroup,
|
|
|
- Integer teacherId,
|
|
|
- Long courseId){
|
|
|
-
|
|
|
- if(Objects.isNull(teacherId)){
|
|
|
- throw new BizException("请指定教师");
|
|
|
- }
|
|
|
-
|
|
|
- if(Objects.isNull(vipGroup.getVipGroupCategoryId())){
|
|
|
- throw new BizException("请指定课程形式");
|
|
|
- }
|
|
|
-
|
|
|
- VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroup.getVipGroupCategoryId().intValue());
|
|
|
- if(Objects.isNull(vipGroupCategory)){
|
|
|
- throw new BizException("课程形式不存在");
|
|
|
- }
|
|
|
-
|
|
|
- TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(teacherId,
|
|
|
- vipGroup.getVipGroupCategoryId());
|
|
|
-
|
|
|
- if(Objects.isNull(teacherDefaultVipGroupSalary)){
|
|
|
- throw new BizException("请设置教师课酬");
|
|
|
- }
|
|
|
-
|
|
|
- if(Objects.isNull(teacherDefaultVipGroupSalary)||Objects.isNull(teacherDefaultVipGroupSalary.getOfflineClassesSalary())){
|
|
|
- throw new BizException("请设置教师VIP课课酬");
|
|
|
- }
|
|
|
-
|
|
|
- VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId());
|
|
|
-
|
|
|
- Map<String,BigDecimal> results=new HashMap<>(1);
|
|
|
-
|
|
|
- int normalStudentNum = 0;
|
|
|
- if(Objects.nonNull(courseId)){
|
|
|
- normalStudentNum = courseScheduleStudentPaymentDao.countStudentNum(courseId.intValue());
|
|
|
- }
|
|
|
- if(normalStudentNum<=0&&Objects.nonNull(vipGroup.getId())){
|
|
|
- normalStudentNum = classGroupStudentMapperDao.countGroupNormalStudentNum(GroupType.VIP, vipGroup.getId().toString());
|
|
|
- }
|
|
|
-
|
|
|
- if(!vipGroupCategory.getMusicTheory()&&Objects.isNull(vipGroupActivity)){
|
|
|
- throw new BizException("活动设置错误");
|
|
|
- }
|
|
|
-
|
|
|
- if(!vipGroupCategory.getMusicTheory()){
|
|
|
- VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class);
|
|
|
-
|
|
|
- if(Objects.isNull(vipGroupSalarySettlementDto)){
|
|
|
- throw new BizException("课酬结算方案错误");
|
|
|
- }
|
|
|
-
|
|
|
- BigDecimal offlineClassNum=new BigDecimal(vipGroup.getOfflineClassesNum());
|
|
|
- BigDecimal onlineClassNum=new BigDecimal(vipGroup.getOnlineClassesNum());
|
|
|
- BigDecimal onlineClassesUnitPrice=vipGroup.getOnlineClassesUnitPrice();
|
|
|
- if(Objects.isNull(onlineClassesUnitPrice)){
|
|
|
- throw new BizException("课程单价异常");
|
|
|
- }
|
|
|
- BigDecimal onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
|
|
|
-
|
|
|
- BigDecimal offlineClassesUnitPrice=vipGroup.getOfflineClassesUnitPrice();
|
|
|
- if(Objects.isNull(offlineClassesUnitPrice)){
|
|
|
- throw new BizException("课程单价异常");
|
|
|
- }
|
|
|
- BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
|
|
|
- BigDecimal totalClassNum=offlineClassNum.add(onlineClassNum);
|
|
|
- BigDecimal teacherOnlineSalary=null,teacherOfflineSalary=null;
|
|
|
-
|
|
|
- //课程购买费用计算
|
|
|
- BigDecimal totalPrice;
|
|
|
- switch (vipGroupActivity.getType()){
|
|
|
- case BASE_ACTIVITY:
|
|
|
- totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
|
- break;
|
|
|
- case DISCOUNT:
|
|
|
- BigDecimal discount=new BigDecimal(vipGroupActivity.getAttribute1());
|
|
|
- totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
|
- totalPrice=totalPrice.multiply(discount).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
|
|
|
- break;
|
|
|
- case GIVE_CLASS:
|
|
|
- if(totalClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))<0){
|
|
|
-
|
|
|
- }else if(vipGroup.getGiveTeachMode()==TeachModeEnum.OFFLINE){
|
|
|
- if(totalClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){
|
|
|
- offlineClassNum=offlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
|
|
|
- }
|
|
|
- offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
|
|
|
- }else if(vipGroup.getGiveTeachMode()==TeachModeEnum.ONLINE){
|
|
|
- if(totalClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){
|
|
|
- onlineClassNum=onlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
|
|
|
- }
|
|
|
- onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
|
|
|
- }else{
|
|
|
- throw new BizException("请指定赠送课程类型!");
|
|
|
- }
|
|
|
- totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
|
- break;
|
|
|
- default:
|
|
|
- throw new BizException("活动类型错误!");
|
|
|
- }
|
|
|
-
|
|
|
- results.put("totalPrice",totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
|
|
|
- vipGroup.setTotalPrice(totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
|
|
|
-
|
|
|
- //教师课酬线上单课酬计算
|
|
|
- if(Objects.nonNull(vipGroupSalarySettlementDto.getVipOnlineSalarySettlement())){
|
|
|
- if(Objects.isNull(teacherOnlineSalary)){
|
|
|
- switch (vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSalarySettlementType()){
|
|
|
- case TEACHER_DEFAULT:
|
|
|
- teacherOnlineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
- results.put("onlineTeacherSalary",teacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
- break;
|
|
|
- case RATIO_DISCOUNT:
|
|
|
- results.put("onlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum()))
|
|
|
- .divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN)
|
|
|
- .multiply(vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSettlementValue())
|
|
|
- .divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN)
|
|
|
- .setScale(0,BigDecimal.ROUND_HALF_UP));
|
|
|
-
|
|
|
- break;
|
|
|
- case FIXED_SALARY:
|
|
|
- results.put("onlineTeacherSalary",vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
- break;
|
|
|
- default:
|
|
|
- throw new BizException("未指定课酬结算标准!");
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //教师线下单课酬计算
|
|
|
- if(Objects.nonNull(vipGroupSalarySettlementDto.getVipOfflineSalarySettlement())){
|
|
|
- if(Objects.isNull(teacherOfflineSalary)){
|
|
|
- switch (vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().getSalarySettlementType()){
|
|
|
- case TEACHER_DEFAULT:
|
|
|
- teacherOfflineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
- results.put("offlineTeacherSalary",teacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
- break;
|
|
|
- case RATIO_DISCOUNT:
|
|
|
- results.put("offlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum())).divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().getSettlementValue()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
|
|
|
-
|
|
|
- break;
|
|
|
- case FIXED_SALARY:
|
|
|
- results.put("offlineTeacherSalary",vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
- break;
|
|
|
- default:
|
|
|
- throw new BizException("未指定课酬结算标准!");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- BigDecimal ots = results.get("onlineTeacherSalary");
|
|
|
- if(Objects.isNull(ots)){
|
|
|
- ots = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
- }
|
|
|
- if(Objects.isNull(ots)){
|
|
|
- ots = BigDecimal.ZERO;
|
|
|
- }
|
|
|
- BigDecimal ofts = results.get("offlineTeacherSalary");
|
|
|
- if(Objects.isNull(ofts)){
|
|
|
- ofts = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
- }
|
|
|
- if(Objects.isNull(ofts)){
|
|
|
- ofts = BigDecimal.ZERO;
|
|
|
- }
|
|
|
- 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);
|
|
|
- }
|
|
|
-
|
|
|
- results.put("onlineTeacherSalary", ots);
|
|
|
- results.put("offlineTeacherSalary", ofts);
|
|
|
- }
|
|
|
-
|
|
|
- if(vipGroupCategory.getMusicTheory()){
|
|
|
- BigDecimal ots = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
- BigDecimal ofts = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
- if(Objects.nonNull(vipGroup.getStatus())&&vipGroupCategory.getMusicTheory()){
|
|
|
- ots = ots.multiply(new BigDecimal(normalStudentNum>5?5:normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
- ofts = ofts.multiply(new BigDecimal(normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
- }
|
|
|
- results.put("totalPrice",vipGroup.getTotalPrice());
|
|
|
- results.put("onlineTeacherSalary",ots);
|
|
|
- results.put("offlineTeacherSalary",ofts);
|
|
|
- }
|
|
|
-
|
|
|
- if(vipGroup instanceof VipGroupApplyBaseInfoDto&&!CollectionUtils.isEmpty(((VipGroupApplyBaseInfoDto)vipGroup).getVipGroupStudentCoursePrices())){
|
|
|
- if(vipGroupCategory.getMusicTheory()){
|
|
|
- vipGroup.setTotalPrice(new BigDecimal(0));
|
|
|
- }
|
|
|
- for (VipGroupStudentCoursePrice vscp : ((VipGroupApplyBaseInfoDto)vipGroup).getVipGroupStudentCoursePrices()) {
|
|
|
- if(!vipGroupCategory.getMusicTheory()){
|
|
|
- results.put(vscp.getStudentId().toString(), vipGroup.getTotalPrice());
|
|
|
- continue;
|
|
|
- }
|
|
|
- if(Objects.isNull(vscp.getOnlineClassesUnitPrice())||Objects.isNull(vscp.getOfflineClassesUnitPrice())){
|
|
|
- throw new BizException("请设置课程单价");
|
|
|
- }
|
|
|
- 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());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return results;
|
|
|
- }
|
|
|
+//
|
|
|
+// @Override
|
|
|
+// public <K extends VipGroup> Map<String,BigDecimal> countVipGroupPredictFee(K vipGroup,
|
|
|
+// Integer teacherId,
|
|
|
+// Long courseId){
|
|
|
+//
|
|
|
+// if(Objects.isNull(teacherId)){
|
|
|
+// throw new BizException("请指定教师");
|
|
|
+// }
|
|
|
+//
|
|
|
+// if(Objects.isNull(vipGroup.getVipGroupCategoryId())){
|
|
|
+// throw new BizException("请指定课程形式");
|
|
|
+// }
|
|
|
+//
|
|
|
+// VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroup.getVipGroupCategoryId().intValue());
|
|
|
+// if(Objects.isNull(vipGroupCategory)){
|
|
|
+// throw new BizException("课程形式不存在");
|
|
|
+// }
|
|
|
+//
|
|
|
+// TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(teacherId,
|
|
|
+// vipGroup.getVipGroupCategoryId());
|
|
|
+//
|
|
|
+// if(Objects.isNull(teacherDefaultVipGroupSalary)){
|
|
|
+// throw new BizException("请设置教师课酬");
|
|
|
+// }
|
|
|
+//
|
|
|
+// if(Objects.isNull(teacherDefaultVipGroupSalary)||Objects.isNull(teacherDefaultVipGroupSalary.getOfflineClassesSalary())){
|
|
|
+// throw new BizException("请设置教师VIP课课酬");
|
|
|
+// }
|
|
|
+//
|
|
|
+// VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId());
|
|
|
+//
|
|
|
+// Map<String,BigDecimal> results=new HashMap<>(1);
|
|
|
+//
|
|
|
+// int normalStudentNum = 0;
|
|
|
+// if(Objects.nonNull(courseId)){
|
|
|
+// normalStudentNum = courseScheduleStudentPaymentDao.countStudentNum(courseId.intValue());
|
|
|
+// }
|
|
|
+// if(normalStudentNum<=0&&Objects.nonNull(vipGroup.getId())){
|
|
|
+// normalStudentNum = classGroupStudentMapperDao.countGroupNormalStudentNum(GroupType.VIP, vipGroup.getId().toString());
|
|
|
+// }
|
|
|
+//
|
|
|
+// if(!vipGroupCategory.getMusicTheory()&&Objects.isNull(vipGroupActivity)){
|
|
|
+// throw new BizException("活动设置错误");
|
|
|
+// }
|
|
|
+//
|
|
|
+// if(!vipGroupCategory.getMusicTheory()){
|
|
|
+// VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class);
|
|
|
+//
|
|
|
+// if(Objects.isNull(vipGroupSalarySettlementDto)){
|
|
|
+// throw new BizException("课酬结算方案错误");
|
|
|
+// }
|
|
|
+//
|
|
|
+// BigDecimal offlineClassNum=new BigDecimal(vipGroup.getOfflineClassesNum());
|
|
|
+// BigDecimal onlineClassNum=new BigDecimal(vipGroup.getOnlineClassesNum());
|
|
|
+// BigDecimal onlineClassesUnitPrice=vipGroup.getOnlineClassesUnitPrice();
|
|
|
+// if(Objects.isNull(onlineClassesUnitPrice)){
|
|
|
+// throw new BizException("课程单价异常");
|
|
|
+// }
|
|
|
+// BigDecimal onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
|
|
|
+//
|
|
|
+// BigDecimal offlineClassesUnitPrice=vipGroup.getOfflineClassesUnitPrice();
|
|
|
+// if(Objects.isNull(offlineClassesUnitPrice)){
|
|
|
+// throw new BizException("课程单价异常");
|
|
|
+// }
|
|
|
+// BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
|
|
|
+// BigDecimal totalClassNum=offlineClassNum.add(onlineClassNum);
|
|
|
+// BigDecimal teacherOnlineSalary=null,teacherOfflineSalary=null;
|
|
|
+//
|
|
|
+// //课程购买费用计算
|
|
|
+// BigDecimal totalPrice;
|
|
|
+// switch (vipGroupActivity.getType()){
|
|
|
+// case BASE_ACTIVITY:
|
|
|
+// totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
|
+// break;
|
|
|
+// case DISCOUNT:
|
|
|
+// BigDecimal discount=new BigDecimal(vipGroupActivity.getAttribute1());
|
|
|
+// totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
|
+// totalPrice=totalPrice.multiply(discount).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
|
|
|
+// break;
|
|
|
+// case GIVE_CLASS:
|
|
|
+// if(totalClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))<0){
|
|
|
+//
|
|
|
+// }else if(vipGroup.getGiveTeachMode()==TeachModeEnum.OFFLINE){
|
|
|
+// if(totalClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){
|
|
|
+// offlineClassNum=offlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
|
|
|
+// }
|
|
|
+// offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
|
|
|
+// }else if(vipGroup.getGiveTeachMode()==TeachModeEnum.ONLINE){
|
|
|
+// if(totalClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){
|
|
|
+// onlineClassNum=onlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
|
|
|
+// }
|
|
|
+// onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
|
|
|
+// }else{
|
|
|
+// throw new BizException("请指定赠送课程类型!");
|
|
|
+// }
|
|
|
+// totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
|
+// break;
|
|
|
+// default:
|
|
|
+// throw new BizException("活动类型错误!");
|
|
|
+// }
|
|
|
+//
|
|
|
+// results.put("totalPrice",totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
|
|
|
+// vipGroup.setTotalPrice(totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
|
|
|
+//
|
|
|
+// //教师课酬线上单课酬计算
|
|
|
+// if(Objects.nonNull(vipGroupSalarySettlementDto.getVipOnlineSalarySettlement())){
|
|
|
+// if(Objects.isNull(teacherOnlineSalary)){
|
|
|
+// switch (vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSalarySettlementType()){
|
|
|
+// case TEACHER_DEFAULT:
|
|
|
+// teacherOnlineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
+// results.put("onlineTeacherSalary",teacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+// break;
|
|
|
+// case RATIO_DISCOUNT:
|
|
|
+// results.put("onlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum()))
|
|
|
+// .divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN)
|
|
|
+// .multiply(vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSettlementValue())
|
|
|
+// .divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN)
|
|
|
+// .setScale(0,BigDecimal.ROUND_HALF_UP));
|
|
|
+//
|
|
|
+// break;
|
|
|
+// case FIXED_SALARY:
|
|
|
+// results.put("onlineTeacherSalary",vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+// break;
|
|
|
+// default:
|
|
|
+// throw new BizException("未指定课酬结算标准!");
|
|
|
+// }
|
|
|
+//
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// //教师线下单课酬计算
|
|
|
+// if(Objects.nonNull(vipGroupSalarySettlementDto.getVipOfflineSalarySettlement())){
|
|
|
+// if(Objects.isNull(teacherOfflineSalary)){
|
|
|
+// switch (vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().getSalarySettlementType()){
|
|
|
+// case TEACHER_DEFAULT:
|
|
|
+// teacherOfflineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
+// results.put("offlineTeacherSalary",teacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+// break;
|
|
|
+// case RATIO_DISCOUNT:
|
|
|
+// results.put("offlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum())).divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().getSettlementValue()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
|
|
|
+//
|
|
|
+// break;
|
|
|
+// case FIXED_SALARY:
|
|
|
+// results.put("offlineTeacherSalary",vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+// break;
|
|
|
+// default:
|
|
|
+// throw new BizException("未指定课酬结算标准!");
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// BigDecimal ots = results.get("onlineTeacherSalary");
|
|
|
+// if(Objects.isNull(ots)){
|
|
|
+// ots = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
+// }
|
|
|
+// if(Objects.isNull(ots)){
|
|
|
+// ots = BigDecimal.ZERO;
|
|
|
+// }
|
|
|
+// BigDecimal ofts = results.get("offlineTeacherSalary");
|
|
|
+// if(Objects.isNull(ofts)){
|
|
|
+// ofts = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
+// }
|
|
|
+// if(Objects.isNull(ofts)){
|
|
|
+// ofts = BigDecimal.ZERO;
|
|
|
+// }
|
|
|
+// 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);
|
|
|
+// }
|
|
|
+//
|
|
|
+// results.put("onlineTeacherSalary", ots);
|
|
|
+// results.put("offlineTeacherSalary", ofts);
|
|
|
+// }
|
|
|
+//
|
|
|
+// if(vipGroupCategory.getMusicTheory()){
|
|
|
+// BigDecimal ots = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
+// BigDecimal ofts = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
+// if(Objects.nonNull(vipGroup.getStatus())&&vipGroupCategory.getMusicTheory()){
|
|
|
+// ots = ots.multiply(new BigDecimal(normalStudentNum>5?5:normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
+// ofts = ofts.multiply(new BigDecimal(normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
+// }
|
|
|
+// results.put("totalPrice",vipGroup.getTotalPrice());
|
|
|
+// results.put("onlineTeacherSalary",ots);
|
|
|
+// results.put("offlineTeacherSalary",ofts);
|
|
|
+// }
|
|
|
+//
|
|
|
+// if(vipGroup instanceof VipGroupApplyBaseInfoDto&&!CollectionUtils.isEmpty(((VipGroupApplyBaseInfoDto)vipGroup).getVipGroupStudentCoursePrices())){
|
|
|
+// if(vipGroupCategory.getMusicTheory()){
|
|
|
+// vipGroup.setTotalPrice(new BigDecimal(0));
|
|
|
+// }
|
|
|
+// for (VipGroupStudentCoursePrice vscp : ((VipGroupApplyBaseInfoDto)vipGroup).getVipGroupStudentCoursePrices()) {
|
|
|
+// if(!vipGroupCategory.getMusicTheory()){
|
|
|
+// results.put(vscp.getStudentId().toString(), vipGroup.getTotalPrice());
|
|
|
+// continue;
|
|
|
+// }
|
|
|
+// if(Objects.isNull(vscp.getOnlineClassesUnitPrice())||Objects.isNull(vscp.getOfflineClassesUnitPrice())){
|
|
|
+// throw new BizException("请设置课程单价");
|
|
|
+// }
|
|
|
+// 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());
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// return results;
|
|
|
+// }
|
|
|
|
|
|
@Override
|
|
|
public <K extends VipGroup> Map<String,BigDecimal> countVipGroupPredictFee1(K vipGroup,
|
|
|
@@ -2140,7 +2140,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
if(Objects.nonNull(courseId)){
|
|
|
normalStudentNum = courseScheduleStudentPaymentDao.countStudentNum(courseId.intValue());
|
|
|
}
|
|
|
- if(normalStudentNum<=0 && Objects.nonNull(vipGroup.getId())){
|
|
|
+ if(normalStudentNum <= 0 && Objects.nonNull(vipGroup.getId())){
|
|
|
normalStudentNum = classGroupStudentMapperDao.countGroupNormalStudentNum(GroupType.VIP, vipGroup.getId().toString());
|
|
|
}
|
|
|
|
|
|
@@ -2185,13 +2185,14 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
results.put("totalPrice",totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
|
|
|
vipGroup.setTotalPrice(totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
|
|
|
|
|
|
+ Integer studentNum = vipGroup.getStudentIdList().split(",").length;
|
|
|
//教师课酬线上单课酬计算
|
|
|
if(Objects.nonNull(vipOnlineSalarySettlement)){
|
|
|
if(Objects.isNull(teacherOnlineSalary)){
|
|
|
switch (vipOnlineSalarySettlement.getSalarySettlementType()){
|
|
|
case TEACHER_DEFAULT:
|
|
|
if(vipGroupCategory.getMusicTheory()){
|
|
|
- teacherOnlineSalary = teacherDefaultVipGroupSalary.getOnlineClassesSalary().multiply(new BigDecimal(normalStudentNum>5?5:normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
+ teacherOnlineSalary = teacherDefaultVipGroupSalary.getOnlineClassesSalary().multiply(new BigDecimal(studentNum>5?5:studentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
results.put("onlineTeacherSalary",teacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
}else {
|
|
|
teacherOnlineSalary = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
@@ -2213,7 +2214,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
switch (giveVipOnlineSalarySettlement.getSalarySettlementType()){
|
|
|
case TEACHER_DEFAULT:
|
|
|
if(vipGroupCategory.getMusicTheory()){
|
|
|
- giveTeacherOnlineSalary = teacherDefaultVipGroupSalary.getOnlineClassesSalary().multiply(new BigDecimal(normalStudentNum>5?5:normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
+ giveTeacherOnlineSalary = teacherDefaultVipGroupSalary.getOnlineClassesSalary().multiply(new BigDecimal(studentNum>5?5:studentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
results.put("giveOnlineTeacherSalary",giveTeacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
}else {
|
|
|
giveTeacherOnlineSalary = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
@@ -2341,187 +2342,187 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
// return results;
|
|
|
// }
|
|
|
|
|
|
- @Override
|
|
|
- public <K extends VipGroup> Map<String,BigDecimal> countVipGroupCoursePredictFee(K vipGroup,
|
|
|
- Integer teacherId,
|
|
|
- Long courseId){
|
|
|
-
|
|
|
- if(Objects.isNull(teacherId)){
|
|
|
- throw new BizException("请指定教师");
|
|
|
- }
|
|
|
-
|
|
|
- if(Objects.isNull(vipGroup.getVipGroupCategoryId())){
|
|
|
- throw new BizException("请指定课程形式");
|
|
|
- }
|
|
|
-
|
|
|
- VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroup.getVipGroupCategoryId().intValue());
|
|
|
- if(Objects.isNull(vipGroupCategory)){
|
|
|
- throw new BizException("未找到课程形式");
|
|
|
- }
|
|
|
-
|
|
|
- TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(teacherId,
|
|
|
- vipGroup.getVipGroupCategoryId());
|
|
|
-
|
|
|
- if(Objects.isNull(teacherDefaultVipGroupSalary)){
|
|
|
- throw new BizException("请设置教师课酬");
|
|
|
- }
|
|
|
-
|
|
|
- if(Objects.isNull(vipGroup.getVipGroupActivityId())){
|
|
|
- throw new BizException("请指定活动方案");
|
|
|
- }
|
|
|
-
|
|
|
- VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId().intValue());
|
|
|
-
|
|
|
- if(Objects.isNull(vipGroupActivity)){
|
|
|
- throw new BizException("指定的活动方案不存在");
|
|
|
- }
|
|
|
-
|
|
|
- VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class);
|
|
|
-
|
|
|
- if(Objects.isNull(vipGroupSalarySettlementDto)){
|
|
|
- throw new BizException("课酬结算方案错误");
|
|
|
- }
|
|
|
-
|
|
|
- Map<String,BigDecimal> results=new HashMap<>(1);
|
|
|
-
|
|
|
- BigDecimal offlineClassNum=new BigDecimal(vipGroup.getOfflineClassesNum());
|
|
|
- BigDecimal onlineClassNum=new BigDecimal(vipGroup.getOnlineClassesNum());
|
|
|
- BigDecimal onlineClassesUnitPrice=vipGroup.getOnlineClassesUnitPrice();
|
|
|
- if(Objects.isNull(onlineClassesUnitPrice)){
|
|
|
- onlineClassesUnitPrice = BigDecimal.ZERO;
|
|
|
- }
|
|
|
- BigDecimal onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
|
|
|
- BigDecimal offlineClassesUnitPrice=vipGroup.getOfflineClassesUnitPrice();
|
|
|
- if(Objects.isNull(offlineClassesUnitPrice)){
|
|
|
- offlineClassesUnitPrice = BigDecimal.ZERO;
|
|
|
- }
|
|
|
- BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
|
|
|
- BigDecimal totalClassNum=offlineClassNum.add(onlineClassNum);
|
|
|
- BigDecimal teacherOnlineSalary=null,teacherOfflineSalary=null;
|
|
|
-
|
|
|
- if(Objects.isNull(vipGroupActivity.getType())){
|
|
|
- throw new BizException("此活动未设置活动类型");
|
|
|
- }
|
|
|
-
|
|
|
- //课程购买费用计算
|
|
|
- BigDecimal totalPrice;
|
|
|
- switch (vipGroupActivity.getType()){
|
|
|
- case BASE_ACTIVITY:
|
|
|
- totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
|
- break;
|
|
|
- case DISCOUNT:
|
|
|
- BigDecimal discount=new BigDecimal(vipGroupActivity.getAttribute1());
|
|
|
- totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
|
- totalPrice=totalPrice.multiply(discount).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
|
|
|
- break;
|
|
|
- case GIVE_CLASS:
|
|
|
- if(totalClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))<0){
|
|
|
-
|
|
|
- }else if(vipGroup.getGiveTeachMode()==TeachModeEnum.OFFLINE){
|
|
|
- if(totalClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){
|
|
|
- offlineClassNum=offlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
|
|
|
- }
|
|
|
- offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
|
|
|
- }else if(vipGroup.getGiveTeachMode()==TeachModeEnum.ONLINE){
|
|
|
- if(totalClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){
|
|
|
- onlineClassNum=onlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
|
|
|
- }
|
|
|
- onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
|
|
|
- }else{
|
|
|
- throw new BizException("请指定赠送课程类型!");
|
|
|
- }
|
|
|
- totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
|
- break;
|
|
|
- default:
|
|
|
- throw new BizException("活动类型错误!");
|
|
|
- }
|
|
|
-
|
|
|
- results.put("totalPrice",totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
|
|
|
-
|
|
|
- int normalStudentNum = 0;
|
|
|
- if(Objects.nonNull(vipGroup.getId())){
|
|
|
- normalStudentNum = courseScheduleStudentPaymentDao.countStudentNum(courseId.intValue());
|
|
|
- }
|
|
|
-
|
|
|
- //教师课酬线上单课酬计算
|
|
|
- if(Objects.nonNull(vipGroupSalarySettlementDto.getVipOnlineSalarySettlement())){
|
|
|
- if(Objects.isNull(teacherOnlineSalary)){
|
|
|
- switch (vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSalarySettlementType()){
|
|
|
- case TEACHER_DEFAULT:
|
|
|
- if(Objects.isNull(teacherDefaultVipGroupSalary)||Objects.isNull(teacherDefaultVipGroupSalary.getOfflineClassesSalary())){
|
|
|
- teacherOnlineSalary=new BigDecimal(0);
|
|
|
- }else{
|
|
|
- teacherOnlineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
- }
|
|
|
- results.put("onlineTeacherSalary",teacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
- break;
|
|
|
- case RATIO_DISCOUNT:
|
|
|
- results.put("onlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum()))
|
|
|
- .divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN)
|
|
|
- .multiply(vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSettlementValue())
|
|
|
- .divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN)
|
|
|
- .setScale(0,BigDecimal.ROUND_HALF_UP));
|
|
|
-
|
|
|
- break;
|
|
|
- case FIXED_SALARY:
|
|
|
- results.put("onlineTeacherSalary",vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
- break;
|
|
|
- default:
|
|
|
- throw new BizException("未指定课酬结算标准!");
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //教师线下单课酬计算
|
|
|
- if(Objects.nonNull(vipGroupSalarySettlementDto.getVipOfflineSalarySettlement())){
|
|
|
- if(Objects.isNull(teacherOfflineSalary)){
|
|
|
- switch (vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().getSalarySettlementType()){
|
|
|
- case TEACHER_DEFAULT:
|
|
|
- if(Objects.isNull(teacherDefaultVipGroupSalary)||Objects.isNull(teacherDefaultVipGroupSalary.getOfflineClassesSalary())){
|
|
|
- teacherOfflineSalary=new BigDecimal(0);
|
|
|
- }else{
|
|
|
- teacherOfflineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
- }
|
|
|
- results.put("offlineTeacherSalary",teacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
- break;
|
|
|
- case RATIO_DISCOUNT:
|
|
|
- results.put("offlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum())).divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().getSettlementValue()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
|
|
|
-
|
|
|
- break;
|
|
|
- case FIXED_SALARY:
|
|
|
- results.put("offlineTeacherSalary",vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
- break;
|
|
|
- default:
|
|
|
- throw new BizException("未指定课酬结算标准!");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- BigDecimal ots = results.get("onlineTeacherSalary");
|
|
|
- if(Objects.isNull(ots)){
|
|
|
- ots = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
- }
|
|
|
- if(Objects.isNull(ots)){
|
|
|
- ots = BigDecimal.ZERO;
|
|
|
- }
|
|
|
- BigDecimal ofts = results.get("offlineTeacherSalary");
|
|
|
- if(Objects.isNull(ofts)){
|
|
|
- ofts = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
- }
|
|
|
- if(Objects.isNull(ofts)){
|
|
|
- ofts = BigDecimal.ZERO;
|
|
|
- }
|
|
|
- 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);
|
|
|
- }
|
|
|
-
|
|
|
- results.put("onlineTeacherSalary", ots);
|
|
|
- results.put("offlineTeacherSalary", ofts);
|
|
|
-
|
|
|
- return results;
|
|
|
- }
|
|
|
+// @Override
|
|
|
+// public <K extends VipGroup> Map<String,BigDecimal> countVipGroupCoursePredictFee(K vipGroup,
|
|
|
+// Integer teacherId,
|
|
|
+// Long courseId){
|
|
|
+//
|
|
|
+// if(Objects.isNull(teacherId)){
|
|
|
+// throw new BizException("请指定教师");
|
|
|
+// }
|
|
|
+//
|
|
|
+// if(Objects.isNull(vipGroup.getVipGroupCategoryId())){
|
|
|
+// throw new BizException("请指定课程形式");
|
|
|
+// }
|
|
|
+//
|
|
|
+// VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroup.getVipGroupCategoryId().intValue());
|
|
|
+// if(Objects.isNull(vipGroupCategory)){
|
|
|
+// throw new BizException("未找到课程形式");
|
|
|
+// }
|
|
|
+//
|
|
|
+// TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(teacherId,
|
|
|
+// vipGroup.getVipGroupCategoryId());
|
|
|
+//
|
|
|
+// if(Objects.isNull(teacherDefaultVipGroupSalary)){
|
|
|
+// throw new BizException("请设置教师课酬");
|
|
|
+// }
|
|
|
+//
|
|
|
+// if(Objects.isNull(vipGroup.getVipGroupActivityId())){
|
|
|
+// throw new BizException("请指定活动方案");
|
|
|
+// }
|
|
|
+//
|
|
|
+// VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId().intValue());
|
|
|
+//
|
|
|
+// if(Objects.isNull(vipGroupActivity)){
|
|
|
+// throw new BizException("指定的活动方案不存在");
|
|
|
+// }
|
|
|
+//
|
|
|
+// VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class);
|
|
|
+//
|
|
|
+// if(Objects.isNull(vipGroupSalarySettlementDto)){
|
|
|
+// throw new BizException("课酬结算方案错误");
|
|
|
+// }
|
|
|
+//
|
|
|
+// Map<String,BigDecimal> results=new HashMap<>(1);
|
|
|
+//
|
|
|
+// BigDecimal offlineClassNum=new BigDecimal(vipGroup.getOfflineClassesNum());
|
|
|
+// BigDecimal onlineClassNum=new BigDecimal(vipGroup.getOnlineClassesNum());
|
|
|
+// BigDecimal onlineClassesUnitPrice=vipGroup.getOnlineClassesUnitPrice();
|
|
|
+// if(Objects.isNull(onlineClassesUnitPrice)){
|
|
|
+// onlineClassesUnitPrice = BigDecimal.ZERO;
|
|
|
+// }
|
|
|
+// BigDecimal onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
|
|
|
+// BigDecimal offlineClassesUnitPrice=vipGroup.getOfflineClassesUnitPrice();
|
|
|
+// if(Objects.isNull(offlineClassesUnitPrice)){
|
|
|
+// offlineClassesUnitPrice = BigDecimal.ZERO;
|
|
|
+// }
|
|
|
+// BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
|
|
|
+// BigDecimal totalClassNum=offlineClassNum.add(onlineClassNum);
|
|
|
+// BigDecimal teacherOnlineSalary=null,teacherOfflineSalary=null;
|
|
|
+//
|
|
|
+// if(Objects.isNull(vipGroupActivity.getType())){
|
|
|
+// throw new BizException("此活动未设置活动类型");
|
|
|
+// }
|
|
|
+//
|
|
|
+// //课程购买费用计算
|
|
|
+// BigDecimal totalPrice;
|
|
|
+// switch (vipGroupActivity.getType()){
|
|
|
+// case BASE_ACTIVITY:
|
|
|
+// totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
|
+// break;
|
|
|
+// case DISCOUNT:
|
|
|
+// BigDecimal discount=new BigDecimal(vipGroupActivity.getAttribute1());
|
|
|
+// totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
|
+// totalPrice=totalPrice.multiply(discount).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
|
|
|
+// break;
|
|
|
+// case GIVE_CLASS:
|
|
|
+// if(totalClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))<0){
|
|
|
+//
|
|
|
+// }else if(vipGroup.getGiveTeachMode()==TeachModeEnum.OFFLINE){
|
|
|
+// if(totalClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){
|
|
|
+// offlineClassNum=offlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
|
|
|
+// }
|
|
|
+// offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
|
|
|
+// }else if(vipGroup.getGiveTeachMode()==TeachModeEnum.ONLINE){
|
|
|
+// if(totalClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){
|
|
|
+// onlineClassNum=onlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
|
|
|
+// }
|
|
|
+// onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
|
|
|
+// }else{
|
|
|
+// throw new BizException("请指定赠送课程类型!");
|
|
|
+// }
|
|
|
+// totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
|
+// break;
|
|
|
+// default:
|
|
|
+// throw new BizException("活动类型错误!");
|
|
|
+// }
|
|
|
+//
|
|
|
+// results.put("totalPrice",totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
|
|
|
+//
|
|
|
+// int normalStudentNum = 0;
|
|
|
+// if(Objects.nonNull(vipGroup.getId())){
|
|
|
+// normalStudentNum = courseScheduleStudentPaymentDao.countStudentNum(courseId.intValue());
|
|
|
+// }
|
|
|
+//
|
|
|
+// //教师课酬线上单课酬计算
|
|
|
+// if(Objects.nonNull(vipGroupSalarySettlementDto.getVipOnlineSalarySettlement())){
|
|
|
+// if(Objects.isNull(teacherOnlineSalary)){
|
|
|
+// switch (vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSalarySettlementType()){
|
|
|
+// case TEACHER_DEFAULT:
|
|
|
+// if(Objects.isNull(teacherDefaultVipGroupSalary)||Objects.isNull(teacherDefaultVipGroupSalary.getOfflineClassesSalary())){
|
|
|
+// teacherOnlineSalary=new BigDecimal(0);
|
|
|
+// }else{
|
|
|
+// teacherOnlineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
+// }
|
|
|
+// results.put("onlineTeacherSalary",teacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+// break;
|
|
|
+// case RATIO_DISCOUNT:
|
|
|
+// results.put("onlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum()))
|
|
|
+// .divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN)
|
|
|
+// .multiply(vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSettlementValue())
|
|
|
+// .divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN)
|
|
|
+// .setScale(0,BigDecimal.ROUND_HALF_UP));
|
|
|
+//
|
|
|
+// break;
|
|
|
+// case FIXED_SALARY:
|
|
|
+// results.put("onlineTeacherSalary",vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+// break;
|
|
|
+// default:
|
|
|
+// throw new BizException("未指定课酬结算标准!");
|
|
|
+// }
|
|
|
+//
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// //教师线下单课酬计算
|
|
|
+// if(Objects.nonNull(vipGroupSalarySettlementDto.getVipOfflineSalarySettlement())){
|
|
|
+// if(Objects.isNull(teacherOfflineSalary)){
|
|
|
+// switch (vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().getSalarySettlementType()){
|
|
|
+// case TEACHER_DEFAULT:
|
|
|
+// if(Objects.isNull(teacherDefaultVipGroupSalary)||Objects.isNull(teacherDefaultVipGroupSalary.getOfflineClassesSalary())){
|
|
|
+// teacherOfflineSalary=new BigDecimal(0);
|
|
|
+// }else{
|
|
|
+// teacherOfflineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
+// }
|
|
|
+// results.put("offlineTeacherSalary",teacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+// break;
|
|
|
+// case RATIO_DISCOUNT:
|
|
|
+// results.put("offlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum())).divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().getSettlementValue()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
|
|
|
+//
|
|
|
+// break;
|
|
|
+// case FIXED_SALARY:
|
|
|
+// results.put("offlineTeacherSalary",vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+// break;
|
|
|
+// default:
|
|
|
+// throw new BizException("未指定课酬结算标准!");
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// BigDecimal ots = results.get("onlineTeacherSalary");
|
|
|
+// if(Objects.isNull(ots)){
|
|
|
+// ots = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
+// }
|
|
|
+// if(Objects.isNull(ots)){
|
|
|
+// ots = BigDecimal.ZERO;
|
|
|
+// }
|
|
|
+// BigDecimal ofts = results.get("offlineTeacherSalary");
|
|
|
+// if(Objects.isNull(ofts)){
|
|
|
+// ofts = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
+// }
|
|
|
+// if(Objects.isNull(ofts)){
|
|
|
+// ofts = BigDecimal.ZERO;
|
|
|
+// }
|
|
|
+// 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);
|
|
|
+// }
|
|
|
+//
|
|
|
+// results.put("onlineTeacherSalary", ots);
|
|
|
+// results.put("offlineTeacherSalary", ofts);
|
|
|
+//
|
|
|
+// return results;
|
|
|
+// }
|
|
|
|
|
|
@Override
|
|
|
public void enableBuyVipGroup(Integer vipGroupId, Integer userId) {
|
|
|
@@ -4195,23 +4196,22 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
onlineCourseTotalTimes=0,
|
|
|
offlineCourseTotalTimes=0,
|
|
|
giveClassTimes=0;
|
|
|
- if(vipGroup.getStatus().equals(VipGroupStatusEnum.APPLYING)
|
|
|
- &&Objects.nonNull(vipGroupActivity)
|
|
|
- &&vipGroupActivity.getType().equals(VipGroupActivityTypeEnum.GIVE_CLASS)
|
|
|
- &&surplusCourses.size()>=Integer.parseInt(vipGroupActivity.getAttribute1())){
|
|
|
- hasGiveClass=true;
|
|
|
- giveClassTimes=Integer.parseInt(vipGroupActivity.getAttribute2());
|
|
|
- Map<TeachModeEnum, List<CourseSchedule>> teachModeCourseMap = surplusCourses.stream()
|
|
|
- .collect(Collectors.groupingBy(CourseSchedule::getTeachMode));
|
|
|
- List<CourseSchedule> onlineCourses=teachModeCourseMap.get(TeachModeEnum.ONLINE);
|
|
|
- if(!CollectionUtils.isEmpty(onlineCourses)){
|
|
|
- onlineCourseTotalTimes=onlineCourses.size();
|
|
|
- }
|
|
|
- List<CourseSchedule> offlineCourses=teachModeCourseMap.get(TeachModeEnum.OFFLINE);
|
|
|
- if(!CollectionUtils.isEmpty(offlineCourses)){
|
|
|
- offlineCourseTotalTimes=offlineCourses.size();
|
|
|
- }
|
|
|
- }
|
|
|
+// if(vipGroup.getStatus().equals(VipGroupStatusEnum.APPLYING) && Objects.nonNull(vipGroupActivity)
|
|
|
+// && vipGroupActivity.getType().equals(VipGroupActivityTypeEnum.GIVE_CLASS)
|
|
|
+// &&surplusCourses.size()>=Integer.parseInt(vipGroupActivity.getAttribute1())){
|
|
|
+// hasGiveClass=true;
|
|
|
+// giveClassTimes=Integer.parseInt(vipGroupActivity.getAttribute2());
|
|
|
+// Map<TeachModeEnum, List<CourseSchedule>> teachModeCourseMap = surplusCourses.stream()
|
|
|
+// .collect(Collectors.groupingBy(CourseSchedule::getTeachMode));
|
|
|
+// List<CourseSchedule> onlineCourses=teachModeCourseMap.get(TeachModeEnum.ONLINE);
|
|
|
+// if(!CollectionUtils.isEmpty(onlineCourses)){
|
|
|
+// onlineCourseTotalTimes=onlineCourses.size();
|
|
|
+// }
|
|
|
+// List<CourseSchedule> offlineCourses=teachModeCourseMap.get(TeachModeEnum.OFFLINE);
|
|
|
+// if(!CollectionUtils.isEmpty(offlineCourses)){
|
|
|
+// offlineCourseTotalTimes=offlineCourses.size();
|
|
|
+// }
|
|
|
+// }
|
|
|
|
|
|
//生成学生单课缴费信息
|
|
|
for (Integer studentId:studentIds) {
|
|
|
@@ -4256,9 +4256,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
}
|
|
|
|
|
|
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);
|
|
|
+ if(Objects.nonNull(vipGroupActivity)){
|
|
|
+ discount = vipGroupActivity.getDiscount().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, "后台添加学员金额扣减");
|