|
@@ -88,6 +88,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
@Autowired
|
|
|
private TeacherDefaultVipGroupSalaryDao teacherDefaultVipGroupSalaryDao;
|
|
|
@Autowired
|
|
|
+ private TeacherDefaultPracticeGroupSalaryDao teacherDefaultPracticeGroupSalaryDao;
|
|
|
+ @Autowired
|
|
|
private StudentPaymentOrderDao studentPaymentOrderDao;
|
|
|
@Autowired
|
|
|
private StudentApplyRefundsDao studentApplyRefundsDao;
|
|
@@ -1540,48 +1542,50 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
return vipGroupDetail;
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
+ private BigDecimal getSalary(VipGroupSalarySettlementTypeDto salarySettlement,TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary,BigDecimal classNum){
|
|
|
+ if(salarySettlement != null){
|
|
|
+ switch (salarySettlement.getSalarySettlementType()){
|
|
|
+ case TEACHER_DEFAULT:
|
|
|
+ return teacherDefaultVipGroupSalary.getOfflineClassesSalary().multiply(classNum);
|
|
|
+ case FIXED_SALARY:
|
|
|
+ return salarySettlement.getSettlementValue().multiply(classNum);
|
|
|
+ default:
|
|
|
+ throw new BizException("未指定课酬结算标准!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return BigDecimal.ZERO;
|
|
|
+ }
|
|
|
+
|
|
|
+ /*@Override
|
|
|
public VipGroupCostCountDto vipGroupCostCount(VipGroupCostCountParamsDto vipGroupCostCountParamsDto) {
|
|
|
SysUser user = sysUserFeignService.queryUserInfo();
|
|
|
+ //老师默认VIP课酬
|
|
|
TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(user.getId(), vipGroupCostCountParamsDto.getVipGroupCategoryId());
|
|
|
- VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.get(vipGroupCostCountParamsDto.getVipGroupDefaultClassesUnitPriceId().intValue());
|
|
|
+
|
|
|
+ //老师默认VIP课酬
|
|
|
+ TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(user.getId(), vipGroupCostCountParamsDto.getC());
|
|
|
+
|
|
|
+ //老师默认网管课课酬
|
|
|
+ TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultPracticeGroupSalaryDao.findByTeacherAndCourseMinutes(user.getId(), vipGroupCostCountParamsDto.getVipGroupCategoryId());
|
|
|
+
|
|
|
+// VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.get(vipGroupCostCountParamsDto.getVipGroupDefaultClassesUnitPriceId().intValue());
|
|
|
VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroupCostCountParamsDto.getVipGroupActivityId().intValue());
|
|
|
- VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class);
|
|
|
- BigDecimal offlineClassNum=new BigDecimal(vipGroupCostCountParamsDto.getOfflineClassesNum());
|
|
|
- BigDecimal onlineClassNum=new BigDecimal(vipGroupCostCountParamsDto.getOnlineClassesNum());
|
|
|
|
|
|
+ VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class);
|
|
|
|
|
|
//教师课酬
|
|
|
- BigDecimal teacherOnlineSalary,teacherOfflineSalary,teacherSalary;
|
|
|
- switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()){
|
|
|
- case TEACHER_DEFAULT:
|
|
|
- teacherOnlineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary().multiply(onlineClassNum);
|
|
|
- break;
|
|
|
- case RATIO_DISCOUNT:
|
|
|
- teacherOnlineSalary=vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice().multiply(vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue()).multiply(onlineClassNum);
|
|
|
- break;
|
|
|
- case FIXED_SALARY:
|
|
|
- teacherOnlineSalary=vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue().multiply(onlineClassNum);
|
|
|
- break;
|
|
|
- default:
|
|
|
- throw new BizException("未指定课酬结算标准!");
|
|
|
- }
|
|
|
- switch (vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSalarySettlementType()){
|
|
|
- case TEACHER_DEFAULT:
|
|
|
- teacherOfflineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary().multiply(offlineClassNum);
|
|
|
- break;
|
|
|
- case RATIO_DISCOUNT:
|
|
|
- teacherOfflineSalary=vipGroupDefaultClassesUnitPrice.getOfflineClassesUnitPrice().multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()).multiply(offlineClassNum);
|
|
|
- break;
|
|
|
- case FIXED_SALARY:
|
|
|
- teacherOfflineSalary=vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue().multiply(offlineClassNum);
|
|
|
- break;
|
|
|
- default:
|
|
|
- throw new BizException("未指定课酬结算标准!");
|
|
|
- }
|
|
|
- teacherSalary=teacherOnlineSalary.add(teacherOfflineSalary);
|
|
|
+ BigDecimal teacherSalary;
|
|
|
+ BigDecimal vipOnlineSalary = getSalary(vipGroupSalarySettlementDto.getVipOnlineSalarySettlement(),teacherDefaultVipGroupSalary,vipGroupCostCountParamsDto.getVipOnlineClassesNum());
|
|
|
+
|
|
|
+ BigDecimal vipOfflineSalary = getSalary(vipGroupSalarySettlementDto.getVipOfflineSalarySettlement(),teacherDefaultVipGroupSalary,vipGroupCostCountParamsDto.getVipOfflineClassesNum());
|
|
|
+
|
|
|
+ BigDecimal giveVipOnlineSalary = getSalary(vipGroupSalarySettlementDto.getGiveVipOnlineSalarySettlement(),teacherDefaultVipGroupSalary,vipGroupCostCountParamsDto.getGiveVipOnlineClassesNum());
|
|
|
+
|
|
|
+ BigDecimal giveVipOfflineSalary = getSalary(vipGroupSalarySettlementDto.getGiveVipOfflineSalarySettlement(),teacherDefaultVipGroupSalary,vipGroupCostCountParamsDto.getGiveVipOfflineClassesNum());
|
|
|
+
|
|
|
+ teacherSalary=vipOnlineSalary.add(vipOfflineSalary).add(giveVipOnlineSalary).add(giveVipOfflineSalary);
|
|
|
return new VipGroupCostCountDto(null,teacherSalary);
|
|
|
- }
|
|
|
+ }*/
|
|
|
|
|
|
@Override
|
|
|
public <K extends VipGroup> Map<String,BigDecimal> countVipGroupPredictFee(K vipGroup,
|
|
@@ -1688,9 +1692,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
vipGroup.setTotalPrice(totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
|
|
|
|
|
|
//教师课酬线上单课酬计算
|
|
|
- if(Objects.nonNull(vipGroupSalarySettlementDto.getOnlineSalarySettlement())){
|
|
|
+ if(Objects.nonNull(vipGroupSalarySettlementDto.getVipOnlineSalarySettlement())){
|
|
|
if(Objects.isNull(teacherOnlineSalary)){
|
|
|
- switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()){
|
|
|
+ switch (vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSalarySettlementType()){
|
|
|
case TEACHER_DEFAULT:
|
|
|
teacherOnlineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
results.put("onlineTeacherSalary",teacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
@@ -1698,13 +1702,13 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
case RATIO_DISCOUNT:
|
|
|
results.put("onlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum()))
|
|
|
.divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN)
|
|
|
- .multiply(vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue())
|
|
|
+ .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.getOnlineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+ results.put("onlineTeacherSalary",vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
break;
|
|
|
default:
|
|
|
throw new BizException("未指定课酬结算标准!");
|
|
@@ -1714,19 +1718,19 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
}
|
|
|
|
|
|
//教师线下单课酬计算
|
|
|
- if(Objects.nonNull(vipGroupSalarySettlementDto.getOfflineSalarySettlement())){
|
|
|
+ if(Objects.nonNull(vipGroupSalarySettlementDto.getVipOfflineSalarySettlement())){
|
|
|
if(Objects.isNull(teacherOfflineSalary)){
|
|
|
- switch (vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSalarySettlementType()){
|
|
|
+ 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.getOfflineSalarySettlement().getSettlementValue()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
|
|
|
+ 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.getOfflineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+ results.put("offlineTeacherSalary",vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
break;
|
|
|
default:
|
|
|
throw new BizException("未指定课酬结算标准!");
|
|
@@ -1790,6 +1794,174 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
return results;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public <K extends VipGroup> Map<String,BigDecimal> countVipGroupPredictFee1(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 = onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
|
+ totalPrice = totalPrice.multiply(vipGroupActivity.getDiscount()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
|
|
|
+
|
|
|
+ results.put("totalPrice",totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
|
|
|
+ vipGroup.setTotalPrice(totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
|
|
|
+
|
|
|
+ VipGroupSalarySettlementTypeDto vipOnlineSalarySettlement = vipGroupSalarySettlementDto.getVipOnlineSalarySettlement();
|
|
|
+ //教师课酬线上单课酬计算
|
|
|
+ if(Objects.nonNull(vipOnlineSalarySettlement)){
|
|
|
+ if(Objects.isNull(teacherOnlineSalary)){
|
|
|
+ switch (vipOnlineSalarySettlement.getSalarySettlementType()){
|
|
|
+ case TEACHER_DEFAULT:
|
|
|
+ teacherOnlineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
+ results.put("onlineTeacherSalary",teacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+ break;
|
|
|
+ case FIXED_SALARY:
|
|
|
+ results.put("onlineTeacherSalary",vipOnlineSalarySettlement.getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ throw new BizException("错误的课酬结算标准!");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //教师线下单课酬计算
|
|
|
+ VipGroupSalarySettlementTypeDto vipOfflineSalarySettlement = vipGroupSalarySettlementDto.getVipOfflineSalarySettlement();
|
|
|
+ if(Objects.nonNull(vipOfflineSalarySettlement)){
|
|
|
+ if(Objects.isNull(teacherOfflineSalary)){
|
|
|
+ switch (vipOfflineSalarySettlement.getSalarySettlementType()){
|
|
|
+ case TEACHER_DEFAULT:
|
|
|
+ teacherOfflineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
+ results.put("offlineTeacherSalary",teacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+ break;
|
|
|
+ case FIXED_SALARY:
|
|
|
+ results.put("offlineTeacherSalary",vipOfflineSalarySettlement.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> countVipGroupCoursePredictFee(K vipGroup,
|
|
|
Integer teacherId,
|
|
@@ -1893,9 +2065,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
}
|
|
|
|
|
|
//教师课酬线上单课酬计算
|
|
|
- if(Objects.nonNull(vipGroupSalarySettlementDto.getOnlineSalarySettlement())){
|
|
|
+ if(Objects.nonNull(vipGroupSalarySettlementDto.getVipOnlineSalarySettlement())){
|
|
|
if(Objects.isNull(teacherOnlineSalary)){
|
|
|
- switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()){
|
|
|
+ switch (vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSalarySettlementType()){
|
|
|
case TEACHER_DEFAULT:
|
|
|
if(Objects.isNull(teacherDefaultVipGroupSalary)||Objects.isNull(teacherDefaultVipGroupSalary.getOfflineClassesSalary())){
|
|
|
teacherOnlineSalary=new BigDecimal(0);
|
|
@@ -1907,13 +2079,13 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
case RATIO_DISCOUNT:
|
|
|
results.put("onlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum()))
|
|
|
.divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN)
|
|
|
- .multiply(vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue())
|
|
|
+ .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.getOnlineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+ results.put("onlineTeacherSalary",vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
break;
|
|
|
default:
|
|
|
throw new BizException("未指定课酬结算标准!");
|
|
@@ -1923,9 +2095,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
}
|
|
|
|
|
|
//教师线下单课酬计算
|
|
|
- if(Objects.nonNull(vipGroupSalarySettlementDto.getOfflineSalarySettlement())){
|
|
|
+ if(Objects.nonNull(vipGroupSalarySettlementDto.getVipOfflineSalarySettlement())){
|
|
|
if(Objects.isNull(teacherOfflineSalary)){
|
|
|
- switch (vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSalarySettlementType()){
|
|
|
+ switch (vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().getSalarySettlementType()){
|
|
|
case TEACHER_DEFAULT:
|
|
|
if(Objects.isNull(teacherDefaultVipGroupSalary)||Objects.isNull(teacherDefaultVipGroupSalary.getOfflineClassesSalary())){
|
|
|
teacherOfflineSalary=new BigDecimal(0);
|
|
@@ -1935,11 +2107,11 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
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.getOfflineSalarySettlement().getSettlementValue()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
|
|
|
+ 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.getOfflineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+ results.put("offlineTeacherSalary",vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
break;
|
|
|
default:
|
|
|
throw new BizException("未指定课酬结算标准!");
|