|
@@ -2,8 +2,7 @@ package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
import static com.ym.mec.biz.dal.enums.GroupType.VIP;
|
|
|
import static com.ym.mec.biz.dal.enums.SysUserRoleEnum.ORGAN_MANAGER;
|
|
|
-import static java.math.BigDecimal.ROUND_DOWN;
|
|
|
-import static java.math.BigDecimal.ZERO;
|
|
|
+import static java.math.BigDecimal.*;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.time.LocalDate;
|
|
@@ -1967,6 +1966,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
VipGroupSalarySettlementTypeDto vipOfflineSalarySettlement = null;
|
|
|
VipGroupSalarySettlementTypeDto giveVipOfflineSalarySettlement = null;
|
|
|
BigDecimal discount = new BigDecimal(100);
|
|
|
+ BigDecimal totalPrice = null;
|
|
|
if (vipGroup.getVipGroupActivityId() != null) {
|
|
|
VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId());
|
|
|
discount = vipGroupActivity.getDiscount();
|
|
@@ -1976,7 +1976,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
}
|
|
|
vipOfflineSalarySettlement = vipGroupSalarySettlementDto.getOfflineSalarySettlement();
|
|
|
giveVipOfflineSalarySettlement = vipGroupSalarySettlementDto.getGiveVipOfflineSalarySettlement();
|
|
|
-
|
|
|
+ if(vipGroupActivity.getFixedCourseNumFlag()){
|
|
|
+ totalPrice = vipGroupActivity.getMarketPrice();
|
|
|
+ vipGroup.setTotalPrice(totalPrice);
|
|
|
+ }
|
|
|
//是否是赠送课程
|
|
|
ActivityUserMapper activityUserMapper = activityUserMapperService.findVipUserMapper(vipGroup.getId(), "VIP", null);
|
|
|
if (activityUserMapper != null) {
|
|
@@ -1986,35 +1989,35 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
vipOfflineSalarySettlement = vipGroupSalarySettlementDto.getOfflineSalarySettlement();
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
+ if(totalPrice == null){
|
|
|
+ BigDecimal onlineClassesUnitPrice = vipGroup.getOnlineClassesUnitPrice();
|
|
|
+ if (Objects.isNull(onlineClassesUnitPrice)) {
|
|
|
+ throw new BizException("课程单价异常");
|
|
|
+ }
|
|
|
+ BigDecimal offlineClassesUnitPrice = vipGroup.getOfflineClassesUnitPrice();
|
|
|
+ if (Objects.isNull(offlineClassesUnitPrice)) {
|
|
|
+ throw new BizException("课程单价异常");
|
|
|
+ }
|
|
|
+ BigDecimal offlineClassNum = new BigDecimal(vipGroup.getOfflineClassesNum());
|
|
|
+ BigDecimal onlineClassNum = new BigDecimal(vipGroup.getOnlineClassesNum());
|
|
|
+ BigDecimal onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
|
|
|
|
|
|
- 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 teacherOfflineSalary = BigDecimal.ZERO;
|
|
|
- BigDecimal giveTeacherOfflineSalary = BigDecimal.ZERO;
|
|
|
+ BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
|
|
|
|
|
|
- //课程购买费用计算
|
|
|
- BigDecimal totalPrice = onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
|
- totalPrice = totalPrice.multiply(discount).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
|
|
|
+ //课程购买费用计算
|
|
|
+ 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));
|
|
|
+ vipGroup.setTotalPrice(totalPrice.setScale(0, BigDecimal.ROUND_CEILING));
|
|
|
+ }
|
|
|
+ results.put("totalPrice", vipGroup.getTotalPrice());
|
|
|
|
|
|
int normalStudentNum = classGroupStudentMapperDao.countGroupNormalStudentNum(VIP, vipGroup.getId().toString());
|
|
|
|
|
|
//教师线下单课酬计算
|
|
|
+ BigDecimal teacherOfflineSalary = BigDecimal.ZERO;
|
|
|
+ BigDecimal giveTeacherOfflineSalary = BigDecimal.ZERO;
|
|
|
if (vipGroupCategory.getMusicTheory()) {
|
|
|
teacherOfflineSalary = teacherDefaultVipGroupSalary.getOfflineClassesSalary().multiply(new BigDecimal(normalStudentNum > 5 ? 5 : normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
|
|
|
} else {
|
|
@@ -2095,6 +2098,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
VipGroupSalarySettlementTypeDto vipOfflineSalarySettlement = null;
|
|
|
VipGroupSalarySettlementTypeDto giveVipOfflineSalarySettlement = null;
|
|
|
BigDecimal discount = new BigDecimal(100);
|
|
|
+ BigDecimal totalPrice = null;
|
|
|
if (vipGroup.getVipGroupActivityId() != null) {
|
|
|
VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId());
|
|
|
discount = vipGroupActivity.getDiscount();
|
|
@@ -2104,32 +2108,37 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
}
|
|
|
vipOfflineSalarySettlement = vipGroupSalarySettlementDto.getOfflineSalarySettlement();
|
|
|
giveVipOfflineSalarySettlement = vipGroupSalarySettlementDto.getGiveVipOfflineSalarySettlement();
|
|
|
+ if(vipGroupActivity.getFixedCourseNumFlag()){
|
|
|
+ totalPrice = vipGroupActivity.getMarketPrice();
|
|
|
+ vipGroup.setTotalPrice(totalPrice);
|
|
|
+ }
|
|
|
}
|
|
|
+ if(totalPrice == null){
|
|
|
+ BigDecimal onlineClassesUnitPrice = vipGroup.getOnlineClassesUnitPrice();
|
|
|
+ if (Objects.isNull(onlineClassesUnitPrice)) {
|
|
|
+ throw new BizException("课程单价异常");
|
|
|
+ }
|
|
|
+ BigDecimal offlineClassesUnitPrice = vipGroup.getOfflineClassesUnitPrice();
|
|
|
+ if (Objects.isNull(offlineClassesUnitPrice)) {
|
|
|
+ throw new BizException("课程单价异常");
|
|
|
+ }
|
|
|
+ BigDecimal offlineClassNum = new BigDecimal(vipGroup.getOfflineClassesNum());
|
|
|
+ BigDecimal onlineClassNum = new BigDecimal(vipGroup.getOnlineClassesNum());
|
|
|
+ BigDecimal onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
|
|
|
|
|
|
- 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 offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
|
|
|
|
|
|
- BigDecimal offlineClassesUnitPrice = vipGroup.getOfflineClassesUnitPrice();
|
|
|
- if (Objects.isNull(offlineClassesUnitPrice)) {
|
|
|
- throw new BizException("课程单价异常");
|
|
|
+ //课程购买费用计算
|
|
|
+ totalPrice = onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
|
+ totalPrice = totalPrice.multiply(discount).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
|
|
|
+ vipGroup.setTotalPrice(totalPrice.setScale(0, BigDecimal.ROUND_CEILING));
|
|
|
}
|
|
|
- BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
|
|
|
- BigDecimal teacherOfflineSalary = BigDecimal.ZERO;
|
|
|
- BigDecimal 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));
|
|
|
+ results.put("totalPrice", vipGroup.getTotalPrice());
|
|
|
|
|
|
//教师线下单课酬计算
|
|
|
+ BigDecimal teacherOfflineSalary = BigDecimal.ZERO;
|
|
|
+ BigDecimal giveTeacherOfflineSalary = BigDecimal.ZERO;
|
|
|
teacherOfflineSalary = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
|
|
|
if (Objects.nonNull(vipOfflineSalarySettlement)) {
|
|
|
if (vipOfflineSalarySettlement.getSalarySettlementType() == SalarySettlementTypeEnum.FIXED_SALARY) {
|