|
@@ -2175,13 +2175,169 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
|
|
|
|
|
Map<String,BigDecimal> results=new HashMap<>(1);
|
|
Map<String,BigDecimal> results=new HashMap<>(1);
|
|
|
|
|
|
|
|
- int normalStudentNum = 0;
|
|
|
|
|
- if(Objects.nonNull(courseId)){
|
|
|
|
|
- normalStudentNum = courseScheduleStudentPaymentDao.countStudentNum(courseId.intValue());
|
|
|
|
|
|
|
+ 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();
|
|
|
}
|
|
}
|
|
|
- if(normalStudentNum <= 0 && Objects.nonNull(vipGroup.getId())){
|
|
|
|
|
- normalStudentNum = classGroupStudentMapperDao.countGroupNormalStudentNum(GroupType.VIP, vipGroup.getId().toString());
|
|
|
|
|
|
|
+
|
|
|
|
|
+ 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;
|
|
|
|
|
+
|
|
|
|
|
+ //教师课酬线上单课酬计算
|
|
|
|
|
+ if(vipGroupCategory.getMusicTheory()){
|
|
|
|
|
+ teacherOnlineSalary = teacherDefaultVipGroupSalary.getOnlineClassesSalary().multiply(new BigDecimal(studentNum>5?5:studentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
+ }else {
|
|
|
|
|
+ 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));
|
|
|
|
|
+
|
|
|
|
|
+ //教师课酬赠送线上单课酬计算
|
|
|
|
|
+ if(vipGroupCategory.getMusicTheory()){
|
|
|
|
|
+ giveTeacherOnlineSalary = teacherDefaultVipGroupSalary.getOnlineClassesSalary().multiply(new BigDecimal(studentNum>5?5:studentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
+ }else {
|
|
|
|
|
+ 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));
|
|
|
|
|
+
|
|
|
|
|
+ //教师线下单课酬计算
|
|
|
|
|
+ if(vipGroupCategory.getMusicTheory()){
|
|
|
|
|
+ teacherOfflineSalary = teacherDefaultVipGroupSalary.getOfflineClassesSalary().multiply(new BigDecimal(studentNum>5?5:studentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
+ }else {
|
|
|
|
|
+ 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));
|
|
|
|
|
+
|
|
|
|
|
+ //教师赠送线下单课酬计算
|
|
|
|
|
+ if(vipGroupCategory.getMusicTheory()){
|
|
|
|
|
+ giveTeacherOfflineSalary = teacherDefaultVipGroupSalary.getOfflineClassesSalary().multiply(new BigDecimal(studentNum>5?5:studentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
+ }else {
|
|
|
|
|
+ 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
|
|
|
|
|
+ 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 vipOnlineSalarySettlement = null;
|
|
|
VipGroupSalarySettlementTypeDto giveVipOnlineSalarySettlement = null;
|
|
VipGroupSalarySettlementTypeDto giveVipOnlineSalarySettlement = null;
|
|
@@ -2214,8 +2370,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
throw new BizException("课程单价异常");
|
|
throw new BizException("课程单价异常");
|
|
|
}
|
|
}
|
|
|
BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
|
|
BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
|
|
|
- BigDecimal teacherOnlineSalary=null,teacherOfflineSalary=null;
|
|
|
|
|
- BigDecimal giveTeacherOnlineSalary=null,giveTeacherOfflineSalary=null;
|
|
|
|
|
|
|
+ BigDecimal teacherOnlineSalary = BigDecimal.ZERO,teacherOfflineSalary = BigDecimal.ZERO;
|
|
|
|
|
+ BigDecimal giveTeacherOnlineSalary = BigDecimal.ZERO,giveTeacherOfflineSalary = BigDecimal.ZERO;
|
|
|
|
|
|
|
|
//课程购买费用计算
|
|
//课程购买费用计算
|
|
|
BigDecimal totalPrice = onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
BigDecimal totalPrice = onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
@@ -2225,93 +2381,42 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
vipGroup.setTotalPrice(totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
|
|
vipGroup.setTotalPrice(totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
|
|
|
|
|
|
|
|
Integer studentNum = vipGroup.getStudentIdList().split(",").length;
|
|
Integer studentNum = vipGroup.getStudentIdList().split(",").length;
|
|
|
|
|
+
|
|
|
//教师课酬线上单课酬计算
|
|
//教师课酬线上单课酬计算
|
|
|
|
|
+ teacherOnlineSalary = teacherDefaultVipGroupSalary.getOnlineClassesSalary();
|
|
|
if(Objects.nonNull(vipOnlineSalarySettlement)){
|
|
if(Objects.nonNull(vipOnlineSalarySettlement)){
|
|
|
- if(Objects.isNull(teacherOnlineSalary)){
|
|
|
|
|
- switch (vipOnlineSalarySettlement.getSalarySettlementType()){
|
|
|
|
|
- case TEACHER_DEFAULT:
|
|
|
|
|
- if(vipGroupCategory.getMusicTheory()){
|
|
|
|
|
- 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.getOnlineClassesSalary();
|
|
|
|
|
- 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("错误的课酬结算标准!");
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
|
|
+ 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(Objects.nonNull(giveVipOnlineSalarySettlement)){
|
|
|
- if(Objects.isNull(giveTeacherOnlineSalary)){
|
|
|
|
|
- switch (giveVipOnlineSalarySettlement.getSalarySettlementType()){
|
|
|
|
|
- case TEACHER_DEFAULT:
|
|
|
|
|
- if(vipGroupCategory.getMusicTheory()){
|
|
|
|
|
- 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.getOnlineClassesSalary();
|
|
|
|
|
- results.put("giveOnlineTeacherSalary",giveTeacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
|
|
- }
|
|
|
|
|
- break;
|
|
|
|
|
- case FIXED_SALARY:
|
|
|
|
|
- results.put("giveOnlineTeacherSalary",giveVipOnlineSalarySettlement.getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
|
|
- break;
|
|
|
|
|
- default:
|
|
|
|
|
- throw new BizException("错误的课酬结算标准!");
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
|
|
+ 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(Objects.nonNull(vipOfflineSalarySettlement)){
|
|
|
- if(Objects.isNull(teacherOfflineSalary)){
|
|
|
|
|
- switch (vipOfflineSalarySettlement.getSalarySettlementType()){
|
|
|
|
|
- case TEACHER_DEFAULT:
|
|
|
|
|
- if(vipGroupCategory.getMusicTheory()){
|
|
|
|
|
- teacherOfflineSalary = teacherDefaultVipGroupSalary.getOfflineClassesSalary().multiply(new BigDecimal(normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
- results.put("offlineTeacherSalary",teacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
|
|
- }else {
|
|
|
|
|
- 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("错误的课酬结算标准!");
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ 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(Objects.nonNull(giveVipOfflineSalarySettlement)){
|
|
|
- if(Objects.isNull(giveTeacherOfflineSalary)){
|
|
|
|
|
- switch (giveVipOfflineSalarySettlement.getSalarySettlementType()){
|
|
|
|
|
- case TEACHER_DEFAULT:
|
|
|
|
|
- if(vipGroupCategory.getMusicTheory()){
|
|
|
|
|
- giveTeacherOfflineSalary = teacherDefaultVipGroupSalary.getOfflineClassesSalary().multiply(new BigDecimal(normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
- results.put("giveOfflineTeacherSalary",giveTeacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
|
|
- }else {
|
|
|
|
|
- giveTeacherOfflineSalary = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
|
|
- results.put("giveOfflineTeacherSalary",giveTeacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
|
|
- }
|
|
|
|
|
- break;
|
|
|
|
|
- case FIXED_SALARY:
|
|
|
|
|
- results.put("giveOfflineTeacherSalary",giveVipOfflineSalarySettlement.getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
|
|
- break;
|
|
|
|
|
- default:
|
|
|
|
|
- throw new BizException("错误的课酬结算标准!");
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ if(giveVipOfflineSalarySettlement.getSalarySettlementType() == SalarySettlementTypeEnum.FIXED_SALARY){
|
|
|
|
|
+ giveTeacherOfflineSalary = giveVipOfflineSalarySettlement.getSettlementValue();
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ results.put("giveOfflineTeacherSalary",giveTeacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
|
|
|
|
|
|
|
|
BigDecimal ots = results.get("onlineTeacherSalary");
|
|
BigDecimal ots = results.get("onlineTeacherSalary");
|
|
|
if(Objects.isNull(ots)){
|
|
if(Objects.isNull(ots)){
|
|
@@ -4190,11 +4295,12 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId().intValue());
|
|
vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId().intValue());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if(Objects.nonNull(vipGroupActivity)&&Objects.nonNull(vipGroupActivity.getStudentMaxUsedTimes())&&vipGroupActivity.getStudentMaxUsedTimes()!=-1&&!CollectionUtils.isEmpty(studentIds)){
|
|
|
|
|
|
|
+ if(Objects.nonNull(vipGroupActivity) && Objects.nonNull(vipGroupActivity.getStudentMaxUsedTimes()) &&
|
|
|
|
|
+ vipGroupActivity.getStudentMaxUsedTimes() != -1 && !CollectionUtils.isEmpty(studentIds)){
|
|
|
List<Integer> errStudentIds = new ArrayList<>();
|
|
List<Integer> errStudentIds = new ArrayList<>();
|
|
|
for (Integer studentId : studentIds) {
|
|
for (Integer studentId : studentIds) {
|
|
|
int useNum = vipGroupDao.countStudentUseingActivityNum(vipGroup.getVipGroupActivityId(), Integer.valueOf(studentId));
|
|
int useNum = vipGroupDao.countStudentUseingActivityNum(vipGroup.getVipGroupActivityId(), Integer.valueOf(studentId));
|
|
|
- if(useNum>=vipGroupActivity.getStudentMaxUsedTimes()){
|
|
|
|
|
|
|
+ if(useNum >= vipGroupActivity.getStudentMaxUsedTimes()){
|
|
|
errStudentIds.add(studentId);
|
|
errStudentIds.add(studentId);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -4204,13 +4310,13 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- Date now=new Date();
|
|
|
|
|
|
|
+ Date now = new Date();
|
|
|
Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
|
|
Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
|
|
|
|
|
|
|
|
- if(vipGroup.getStatus().equals(VipGroupStatusEnum.APPLYING)||vipGroup.getStatus().equals(VipGroupStatusEnum.NOT_START)){
|
|
|
|
|
|
|
+ if(vipGroup.getStatus().equals(VipGroupStatusEnum.APPLYING) || vipGroup.getStatus().equals(VipGroupStatusEnum.NOT_START)){
|
|
|
List<CourseSchedule> courseSchedules = JSON.parseArray(vipGroup.getCourseSchedulesJson(),CourseSchedule.class);
|
|
List<CourseSchedule> courseSchedules = JSON.parseArray(vipGroup.getCourseSchedulesJson(),CourseSchedule.class);
|
|
|
int courseNum = courseScheduleDao.countVipGroupCourses(vipGroupId.intValue(),"VIP");
|
|
int courseNum = courseScheduleDao.countVipGroupCourses(vipGroupId.intValue(),"VIP");
|
|
|
- if(courseNum==0){
|
|
|
|
|
|
|
+ if(courseNum == 0){
|
|
|
courseScheduleService.batchAddCourseSchedule(courseSchedules);
|
|
courseScheduleService.batchAddCourseSchedule(courseSchedules);
|
|
|
|
|
|
|
|
Map<String, BigDecimal> salaryMap = countVipGroupPredictFee1(vipGroup, vipGroup.getUserId(), null);
|
|
Map<String, BigDecimal> salaryMap = countVipGroupPredictFee1(vipGroup, vipGroup.getUserId(), null);
|
|
@@ -4230,7 +4336,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
|
|
|
|
|
List<CourseSchedule> surplusCourses = courseScheduleDao.findByClassGroupAndStatus(classGroup.getId(), CourseStatusEnum.NOT_START.getCode());
|
|
List<CourseSchedule> surplusCourses = courseScheduleDao.findByClassGroupAndStatus(classGroup.getId(), CourseStatusEnum.NOT_START.getCode());
|
|
|
|
|
|
|
|
- List<ClassGroupStudentMapper> classGroupStudentMappers=new ArrayList<>();
|
|
|
|
|
|
|
+ List<ClassGroupStudentMapper> classGroupStudentMappers = new ArrayList<>();
|
|
|
|
|
|
|
|
List<ClassGroupStudentMapper> classGroupStudentsList = classGroupStudentMapperDao.findByClassGroupAndStudent(classGroup.getId(), studentIds);
|
|
List<ClassGroupStudentMapper> classGroupStudentsList = classGroupStudentMapperDao.findByClassGroupAndStudent(classGroup.getId(), studentIds);
|
|
|
Map<Integer, List<ClassGroupStudentMapper>> classGroupStudentsMap = classGroupStudentsList.stream()
|
|
Map<Integer, List<ClassGroupStudentMapper>> classGroupStudentsMap = classGroupStudentsList.stream()
|
|
@@ -4321,36 +4427,33 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
- for (int i=0;i<surplusCourses.size();i++) {
|
|
|
|
|
- CourseSchedule courseSchedule=surplusCourses.get(i);
|
|
|
|
|
|
|
+ for (int i = 0;i < surplusCourses.size();i++) {
|
|
|
|
|
+ CourseSchedule courseSchedule = surplusCourses.get(i);
|
|
|
if(courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)){
|
|
if(courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)){
|
|
|
- offlineCourseTimes+=1;
|
|
|
|
|
|
|
+ offlineCourseTimes += 1;
|
|
|
}else if(courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)){
|
|
}else if(courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)){
|
|
|
- onlineCourseTimes+=1;
|
|
|
|
|
|
|
+ onlineCourseTimes += 1;
|
|
|
}
|
|
}
|
|
|
- if(hasGiveClass
|
|
|
|
|
- &&vipGroup.getGiveTeachMode() == courseSchedule.getTeachMode()){
|
|
|
|
|
|
|
+ if(hasGiveClass && vipGroup.getGiveTeachMode() == courseSchedule.getTeachMode()){
|
|
|
if(courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)
|
|
if(courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)
|
|
|
- &&offlineCourseTimes>(offlineCourseTotalTimes-giveClassTimes)){
|
|
|
|
|
|
|
+ && offlineCourseTimes > (offlineCourseTotalTimes - giveClassTimes)){
|
|
|
continue;
|
|
continue;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if(hasGiveClass
|
|
|
|
|
- &&vipGroup.getGiveTeachMode() == courseSchedule.getTeachMode()){
|
|
|
|
|
- if(courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)
|
|
|
|
|
- &&onlineCourseTimes>(onlineCourseTotalTimes-giveClassTimes)){
|
|
|
|
|
|
|
+ if(hasGiveClass && vipGroup.getGiveTeachMode() == courseSchedule.getTeachMode()){
|
|
|
|
|
+ if(courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE) && onlineCourseTimes > (onlineCourseTotalTimes-giveClassTimes)){
|
|
|
continue;
|
|
continue;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
if(courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)){
|
|
if(courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)){
|
|
|
- surplusCoursesPrice=surplusCoursesPrice.add(vipGroup.getOfflineClassesUnitPrice());
|
|
|
|
|
|
|
+ surplusCoursesPrice = surplusCoursesPrice.add(vipGroup.getOfflineClassesUnitPrice());
|
|
|
}else if(courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)){
|
|
}else if(courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)){
|
|
|
- surplusCoursesPrice=surplusCoursesPrice.add(vipGroup.getOnlineClassesUnitPrice());
|
|
|
|
|
|
|
+ surplusCoursesPrice = surplusCoursesPrice.add(vipGroup.getOnlineClassesUnitPrice());
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- BigDecimal discount=null;
|
|
|
|
|
|
|
+ BigDecimal discount = null;
|
|
|
if(Objects.nonNull(vipGroupActivity)){
|
|
if(Objects.nonNull(vipGroupActivity)){
|
|
|
discount = vipGroupActivity.getDiscount().divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
|
|
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);
|
|
surplusCoursesPrice = surplusCoursesPrice.multiply(discount).setScale(CommonConstants.DECIMAL_FINAL_PLACE,BigDecimal.ROUND_HALF_UP);
|
|
@@ -4360,13 +4463,13 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
|
|
|
|
|
List<CourseScheduleStudentPayment> courseScheduleStudentPayments=new ArrayList<>();
|
|
List<CourseScheduleStudentPayment> courseScheduleStudentPayments=new ArrayList<>();
|
|
|
|
|
|
|
|
- offlineCourseTimes=0;
|
|
|
|
|
- onlineCourseTimes=0;
|
|
|
|
|
|
|
+ offlineCourseTimes = 0;
|
|
|
|
|
+ onlineCourseTimes = 0;
|
|
|
for (CourseSchedule vipGroupCourseSchedule : surplusCourses) {
|
|
for (CourseSchedule vipGroupCourseSchedule : surplusCourses) {
|
|
|
if(vipGroupCourseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)){
|
|
if(vipGroupCourseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)){
|
|
|
- offlineCourseTimes+=1;
|
|
|
|
|
|
|
+ offlineCourseTimes += 1;
|
|
|
}else if(vipGroupCourseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)){
|
|
}else if(vipGroupCourseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)){
|
|
|
- onlineCourseTimes+=1;
|
|
|
|
|
|
|
+ onlineCourseTimes += 1;
|
|
|
}
|
|
}
|
|
|
CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
|
|
CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
|
|
|
courseScheduleStudentPayment.setGroupType(GroupType.VIP);
|
|
courseScheduleStudentPayment.setGroupType(GroupType.VIP);
|
|
@@ -4381,8 +4484,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
courseScheduleStudentPayment.setExpectPrice(vipGroup.getOnlineClassesUnitPrice());
|
|
courseScheduleStudentPayment.setExpectPrice(vipGroup.getOnlineClassesUnitPrice());
|
|
|
courseScheduleStudentPayment.setOriginalPrice(vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice());
|
|
courseScheduleStudentPayment.setOriginalPrice(vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice());
|
|
|
}
|
|
}
|
|
|
- if(hasGiveClass
|
|
|
|
|
- &&vipGroup.getGiveTeachMode() == vipGroupCourseSchedule.getTeachMode()){
|
|
|
|
|
|
|
+ if(hasGiveClass && vipGroup.getGiveTeachMode() == vipGroupCourseSchedule.getTeachMode()){
|
|
|
if(vipGroupCourseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)
|
|
if(vipGroupCourseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)
|
|
|
&&offlineCourseTimes>(offlineCourseTotalTimes-giveClassTimes)){
|
|
&&offlineCourseTimes>(offlineCourseTotalTimes-giveClassTimes)){
|
|
|
courseScheduleStudentPayment.setExpectPrice(new BigDecimal(0));
|
|
courseScheduleStudentPayment.setExpectPrice(new BigDecimal(0));
|
|
@@ -4437,8 +4539,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
|
|
|
|
|
courseScheduleService.checkNewCourseSchedules(surplusCourses, false,false);
|
|
courseScheduleService.checkNewCourseSchedules(surplusCourses, false,false);
|
|
|
|
|
|
|
|
- VipGroupStatusEnum vipGroupStatus = vipGroup.getStatus();
|
|
|
|
|
-
|
|
|
|
|
Integer currentStudentNum = classGroupStudentMapperDao.countClassGroupStudentNum(classGroup.getId());
|
|
Integer currentStudentNum = classGroupStudentMapperDao.countClassGroupStudentNum(classGroup.getId());
|
|
|
if((!vipGroup.getStatus().equals(VipGroupStatusEnum.FINISHED)
|
|
if((!vipGroup.getStatus().equals(VipGroupStatusEnum.FINISHED)
|
|
|
||!vipGroup.getStatus().equals(VipGroupStatusEnum.CANCEL))
|
|
||!vipGroup.getStatus().equals(VipGroupStatusEnum.CANCEL))
|