瀏覽代碼

活动排课

zouxuan 3 年之前
父節點
當前提交
ed9742aa26

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/VipGroupService.java

@@ -192,6 +192,16 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
     <K extends VipGroup> Map<String, BigDecimal> countVipGroupPredictFee1(K vipGroup,
                                                                          Integer teacherId,
                                                                          Long courseId);
+    /**
+     * @describe 计算vip课程购买总价,及老师课酬
+     * @author Joburgess
+     * @date 2019/10/23
+     * @param vipGroup: vip课程
+     * @param teacherId: 要计算课酬的老师的编号
+     * @return java.util.Map
+     */
+    <K extends VipGroup> Map<String, BigDecimal> countVipGroupPredictFee(K vipGroup,
+                                                                         Integer teacherId);
 
     /**
      * @describe 计算vip课程购买总价,及老师课酬-只是学生人数统计方式不同

+ 148 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -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);

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/VipGroupManageController.java

@@ -372,7 +372,7 @@ public class VipGroupManageController extends BaseController {
     @PostMapping("/getVipGroupCostCount")
     @PreAuthorize("@pcs.hasPermissions('vipGroupManage/getVipGroupCostCount')")
     public Object getVipGroupCostCount(@RequestBody VipGroupApplyBaseInfoDto vipGroup){
-        Map results = vipGroupService.countVipGroupPredictFee1(vipGroup,vipGroup.getUserId(), null);
+        Map results = vipGroupService.countVipGroupPredictFee(vipGroup,vipGroup.getUserId());
         return succeed(results);
     }