|
@@ -876,6 +876,45 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
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).setScale(CommonConstants.DECIMAL_FINAL_PLACE,BigDecimal.ROUND_HALF_UP);
|
|
|
+ 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("活动类型错误!");
|
|
|
+ }
|
|
|
+ totalPrice=totalPrice.setScale(0,BigDecimal.ROUND_CEILING);
|
|
|
+ results.put("totalPrice",totalPrice);
|
|
|
+
|
|
|
//教师课酬线上单课酬计算
|
|
|
if(Objects.nonNull(vipGroupSalarySettlementDto.getOnlineSalarySettlement())){
|
|
|
if(vipGroup instanceof VipGroupApplyBaseInfoDto&&!useDefaultTeacherSalary
|
|
@@ -895,7 +934,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
results.put("onlineTeacherSalary",teacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
break;
|
|
|
case RATIO_DISCOUNT:
|
|
|
- results.put("onlineTeacherSalary",onlineClassesUnitPrice.multiply((vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue())).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
|
|
|
+// results.put("onlineTeacherSalary",onlineClassesUnitPrice.multiply((vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue())).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
|
|
|
+ results.put("onlineTeacherSalary",totalPrice.divide(totalClassNum, RoundingMode.HALF_UP).multiply(vipGroupSalarySettlementDto.getOnlineSalarySettlement().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));
|
|
@@ -924,11 +964,11 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
}else{
|
|
|
teacherOfflineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
}
|
|
|
-// teacherOfflineSalary=teacherOfflineSalary.multiply(classTimeDuty);
|
|
|
results.put("offlineTeacherSalary",teacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
break;
|
|
|
case RATIO_DISCOUNT:
|
|
|
- results.put("offlineTeacherSalary",offlineClassesUnitPrice.multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
|
|
|
+// results.put("offlineTeacherSalary",offlineClassesUnitPrice.multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
|
|
|
+ results.put("offlineTeacherSalary",totalPrice.divide(totalClassNum, RoundingMode.HALF_UP).multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().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));
|
|
@@ -941,45 +981,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
results.put("offlineTeacherSalary", new BigDecimal(0));
|
|
|
}
|
|
|
|
|
|
- if(Objects.isNull(vipGroupActivity.getType())){
|
|
|
- throw new BizException("此活动未设置活动类型");
|
|
|
- }
|
|
|
-
|
|
|
- if(computeTotalPrice){
|
|
|
- //课程购买费用计算
|
|
|
- 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).setScale(CommonConstants.DECIMAL_FINAL_PLACE,BigDecimal.ROUND_HALF_UP);
|
|
|
- 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));
|
|
|
- }
|
|
|
return results;
|
|
|
}
|
|
|
|