|
@@ -2310,6 +2310,154 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
results.put("giveOfflineTeacherSalary", gofts);
|
|
|
return results;
|
|
|
}
|
|
|
+ @Override
|
|
|
+ public <K extends VipGroup> Map<String,BigDecimal> countVipGroupPredictFee(K vipGroup,
|
|
|
+ Integer teacherId){
|
|
|
+ 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课课酬");
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String,BigDecimal> results=new HashMap<>(1);
|
|
|
+
|
|
|
+ VipGroupSalarySettlementTypeDto vipOnlineSalarySettlement = null;
|
|
|
+ VipGroupSalarySettlementTypeDto giveVipOnlineSalarySettlement = null;
|
|
|
+ VipGroupSalarySettlementTypeDto vipOfflineSalarySettlement = null;
|
|
|
+ VipGroupSalarySettlementTypeDto giveVipOfflineSalarySettlement = null;
|
|
|
+ BigDecimal discount = new BigDecimal(100);
|
|
|
+ if(vipGroup.getVipGroupActivityId() != null){
|
|
|
+ VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId());
|
|
|
+ discount = vipGroupActivity.getDiscount();
|
|
|
+ VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class);
|
|
|
+ if(Objects.isNull(vipGroupSalarySettlementDto)){
|
|
|
+ throw new BizException("课酬结算方案错误");
|
|
|
+ }
|
|
|
+ vipOnlineSalarySettlement = vipGroupSalarySettlementDto.getVipOnlineSalarySettlement();
|
|
|
+ giveVipOnlineSalarySettlement = vipGroupSalarySettlementDto.getGiveVipOnlineSalarySettlement();
|
|
|
+ vipOfflineSalarySettlement = vipGroupSalarySettlementDto.getVipOfflineSalarySettlement();
|
|
|
+ giveVipOfflineSalarySettlement = vipGroupSalarySettlementDto.getGiveVipOfflineSalarySettlement();
|
|
|
+ }
|
|
|
+
|
|
|
+ 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 teacherOnlineSalary = BigDecimal.ZERO,teacherOfflineSalary = BigDecimal.ZERO;
|
|
|
+ BigDecimal giveTeacherOnlineSalary = BigDecimal.ZERO,giveTeacherOfflineSalary = BigDecimal.ZERO;
|
|
|
+
|
|
|
+ //课程购买费用计算
|
|
|
+ BigDecimal totalPrice = onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
|
+ totalPrice = totalPrice.multiply(discount).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));
|
|
|
+
|
|
|
+ Integer studentNum = vipGroup.getStudentIdList().split(",").length;
|
|
|
+
|
|
|
+ //教师课酬线上单课酬计算
|
|
|
+ teacherOnlineSalary = teacherDefaultVipGroupSalary.getOnlineClassesSalary();
|
|
|
+ if(Objects.nonNull(vipOnlineSalarySettlement)){
|
|
|
+ if(vipOnlineSalarySettlement.getSalarySettlementType() == SalarySettlementTypeEnum.FIXED_SALARY){
|
|
|
+ teacherOnlineSalary = vipOnlineSalarySettlement.getSettlementValue();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ results.put("onlineTeacherSalary",teacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+
|
|
|
+ //教师课酬赠送线上单课酬计算
|
|
|
+ giveTeacherOnlineSalary = teacherDefaultVipGroupSalary.getOnlineClassesSalary();
|
|
|
+ if(Objects.nonNull(giveVipOnlineSalarySettlement)){
|
|
|
+ if (giveVipOnlineSalarySettlement.getSalarySettlementType() == SalarySettlementTypeEnum.FIXED_SALARY){
|
|
|
+ giveTeacherOnlineSalary = giveVipOnlineSalarySettlement.getSettlementValue();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ results.put("giveOnlineTeacherSalary",giveTeacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+
|
|
|
+ //教师线下单课酬计算
|
|
|
+ teacherOfflineSalary = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
+ if(Objects.nonNull(vipOfflineSalarySettlement)){
|
|
|
+ if(vipOfflineSalarySettlement.getSalarySettlementType() == SalarySettlementTypeEnum.FIXED_SALARY){
|
|
|
+ teacherOfflineSalary = vipOfflineSalarySettlement.getSettlementValue();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ results.put("offlineTeacherSalary",teacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+
|
|
|
+ //教师赠送线下单课酬计算
|
|
|
+ giveTeacherOfflineSalary = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
+ if(Objects.nonNull(giveVipOfflineSalarySettlement)){
|
|
|
+ if(giveVipOfflineSalarySettlement.getSalarySettlementType() == SalarySettlementTypeEnum.FIXED_SALARY){
|
|
|
+ giveTeacherOfflineSalary = giveVipOfflineSalarySettlement.getSettlementValue();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ results.put("giveOfflineTeacherSalary",giveTeacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
+
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+ BigDecimal gots = results.get("giveOnlineTeacherSalary");
|
|
|
+ if(Objects.isNull(gots)){
|
|
|
+ gots = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
+ }
|
|
|
+ if(Objects.isNull(gots)){
|
|
|
+ gots = BigDecimal.ZERO;
|
|
|
+ }
|
|
|
+ BigDecimal gofts = results.get("giveOfflineTeacherSalary");
|
|
|
+ if(Objects.isNull(gofts)){
|
|
|
+ gofts = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
+ }
|
|
|
+ if(Objects.isNull(gofts)){
|
|
|
+ gofts = 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);
|
|
|
+// gots = gots.divide(new BigDecimal(vipGroupCategory.getStudentNum()),CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
+// gofts = gofts.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);
|
|
|
+ results.put("giveOnlineTeacherSalary", gots);
|
|
|
+ results.put("giveOfflineTeacherSalary", gofts);
|
|
|
+ return results;
|
|
|
+ }
|
|
|
// @Override
|
|
|
// BigDecimal calcActivityFee(VipGroupActivity vipGroupActivity){
|
|
|
// Map<String,BigDecimal> results = new HashMap<>(1);
|