Browse Source

活动排课

zouxuan 4 years ago
parent
commit
5ea1997b17

+ 11 - 43
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupActivity.java

@@ -1,8 +1,8 @@
 package com.ym.mec.biz.dal.entity;
 
 import com.ym.mec.biz.dal.enums.PeriodEnum;
-import com.ym.mec.biz.dal.enums.VipGroupActivityTypeEnum;
 import io.swagger.annotations.ApiModelProperty;
+
 import java.math.BigDecimal;
 import java.util.Date;
 
@@ -50,8 +50,8 @@ public class VipGroupActivity {
 	@ApiModelProperty(value = "可排课截至时间")
 	private java.util.Date coursesEndTime;
 
-	@ApiModelProperty(value = "活动类型(基础活动、折扣、赠送课时)")
-	private VipGroupActivityTypeEnum type;
+//	@ApiModelProperty(value = "活动类型(基础活动、折扣、赠送课时)")
+//	private VipGroupActivityTypeEnum type;
 
 	@ApiModelProperty(value = "折扣)")
 	private BigDecimal discount = new BigDecimal(100);
@@ -92,14 +92,14 @@ public class VipGroupActivity {
 	@ApiModelProperty(value = "是否充值到余额")
 	private boolean isPayToBalance = true;
 
-	@ApiModelProperty(value = "活动变量1")
-	private String attribute1;
-
-	@ApiModelProperty(value = "活动变量2")
-	private String attribute2;
-
-	@ApiModelProperty(value = "活动变量3")
-	private String attribute3;
+//	@ApiModelProperty(value = "活动变量1")
+//	private String attribute1;
+//
+//	@ApiModelProperty(value = "活动变量2")
+//	private String attribute2;
+//
+//	@ApiModelProperty(value = "活动变量3")
+//	private String attribute3;
 
 	@ApiModelProperty(value = "薪水只读标识(1-只读 0-可写)")
 	private Integer salaryReadonlyFlag = 0;
@@ -302,14 +302,6 @@ public class VipGroupActivity {
 		this.coursesEndTime = coursesEndTime;
 	}
 
-	public VipGroupActivityTypeEnum getType() {
-		return type;
-	}
-
-	public void setType(VipGroupActivityTypeEnum type) {
-		this.type = type;
-	}
-
 	public BigDecimal getDiscount() {
 		return discount;
 	}
@@ -398,30 +390,6 @@ public class VipGroupActivity {
 		isPayToBalance = payToBalance;
 	}
 
-	public String getAttribute1() {
-		return attribute1;
-	}
-
-	public void setAttribute1(String attribute1) {
-		this.attribute1 = attribute1;
-	}
-
-	public String getAttribute2() {
-		return attribute2;
-	}
-
-	public void setAttribute2(String attribute2) {
-		this.attribute2 = attribute2;
-	}
-
-	public String getAttribute3() {
-		return attribute3;
-	}
-
-	public void setAttribute3(String attribute3) {
-		this.attribute3 = attribute3;
-	}
-
 	public Integer getSalaryReadonlyFlag() {
 		return salaryReadonlyFlag;
 	}

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

@@ -177,9 +177,9 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
      * @param teacherId: 要计算课酬的老师的编号
      * @return java.util.Map
      */
-    <K extends VipGroup> Map<String, BigDecimal> countVipGroupPredictFee(K vipGroup,
-                                                                         Integer teacherId,
-                                                                         Long courseId);
+//    <K extends VipGroup> Map<String, BigDecimal> countVipGroupPredictFee(K vipGroup,
+//                                                                         Integer teacherId,
+//                                                                         Long courseId);
 
     /**
      * @describe 计算vip课程购买总价,及老师课酬
@@ -202,9 +202,9 @@ public interface VipGroupService extends BaseService<Long, VipGroup> {
      * @return java.util.Map
      */
     @Deprecated
-    <K extends VipGroup> Map<String, BigDecimal> countVipGroupCoursePredictFee(K vipGroup,
-                                                                         Integer teacherId,
-                                                                               Long courseId);
+//    <K extends VipGroup> Map<String, BigDecimal> countVipGroupCoursePredictFee(K vipGroup,
+//                                                                         Integer teacherId,
+//                                                                               Long courseId);
 
 
     /**

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

@@ -1898,213 +1898,213 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         teacherSalary=vipOnlineSalary.add(vipOfflineSalary).add(giveVipOnlineSalary).add(giveVipOfflineSalary);
         return new VipGroupCostCountDto(null,teacherSalary);
     }*/
-
-    @Override
-    public <K extends VipGroup> Map<String,BigDecimal> countVipGroupPredictFee(K vipGroup,
-																			   Integer teacherId,
-																			   Long courseId){
-
-		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课课酬");
-		}
-
-		VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId());
-
-		Map<String,BigDecimal> results=new HashMap<>(1);
-
-		int normalStudentNum = 0;
-		if(Objects.nonNull(courseId)){
-			normalStudentNum = courseScheduleStudentPaymentDao.countStudentNum(courseId.intValue());
-		}
-		if(normalStudentNum<=0&&Objects.nonNull(vipGroup.getId())){
-			normalStudentNum = classGroupStudentMapperDao.countGroupNormalStudentNum(GroupType.VIP, vipGroup.getId().toString());
-		}
-
-		if(!vipGroupCategory.getMusicTheory()&&Objects.isNull(vipGroupActivity)){
-			throw new BizException("活动设置错误");
-		}
-
-		if(!vipGroupCategory.getMusicTheory()){
-			VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class);
-
-			if(Objects.isNull(vipGroupSalarySettlementDto)){
-				throw new BizException("课酬结算方案错误");
-			}
-
-			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 totalClassNum=offlineClassNum.add(onlineClassNum);
-			BigDecimal teacherOnlineSalary=null,teacherOfflineSalary=null;
-
-			//课程购买费用计算
-			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);
-					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));
-			vipGroup.setTotalPrice(totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
-
-			//教师课酬线上单课酬计算
-			if(Objects.nonNull(vipGroupSalarySettlementDto.getVipOnlineSalarySettlement())){
-				if(Objects.isNull(teacherOnlineSalary)){
-					switch (vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSalarySettlementType()){
-						case TEACHER_DEFAULT:
-							teacherOnlineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
-							results.put("onlineTeacherSalary",teacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
-							break;
-						case RATIO_DISCOUNT:
-							results.put("onlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum()))
-									.divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN)
-									.multiply(vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().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.getVipOnlineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
-							break;
-						default:
-							throw new BizException("未指定课酬结算标准!");
-					}
-
-				}
-			}
-
-			//教师线下单课酬计算
-			if(Objects.nonNull(vipGroupSalarySettlementDto.getVipOfflineSalarySettlement())){
-				if(Objects.isNull(teacherOfflineSalary)){
-					switch (vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().getSalarySettlementType()){
-						case TEACHER_DEFAULT:
-							teacherOfflineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
-							results.put("offlineTeacherSalary",teacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
-							break;
-						case RATIO_DISCOUNT:
-							results.put("offlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum())).divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().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.getVipOfflineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
-							break;
-						default:
-							throw new BizException("未指定课酬结算标准!");
-					}
-				}
-			}
-
-			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;
-			}
-			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);
-			}
-
-			results.put("onlineTeacherSalary", ots);
-			results.put("offlineTeacherSalary", ofts);
-		}
-
-		if(vipGroupCategory.getMusicTheory()){
-			BigDecimal ots = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
-			BigDecimal ofts = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
-			if(Objects.nonNull(vipGroup.getStatus())&&vipGroupCategory.getMusicTheory()){
-				ots = ots.multiply(new BigDecimal(normalStudentNum>5?5:normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
-				ofts = ofts.multiply(new BigDecimal(normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
-			}
-			results.put("totalPrice",vipGroup.getTotalPrice());
-			results.put("onlineTeacherSalary",ots);
-			results.put("offlineTeacherSalary",ofts);
-		}
-
-		if(vipGroup instanceof VipGroupApplyBaseInfoDto&&!CollectionUtils.isEmpty(((VipGroupApplyBaseInfoDto)vipGroup).getVipGroupStudentCoursePrices())){
-			if(vipGroupCategory.getMusicTheory()){
-				vipGroup.setTotalPrice(new BigDecimal(0));
-			}
-			for (VipGroupStudentCoursePrice vscp : ((VipGroupApplyBaseInfoDto)vipGroup).getVipGroupStudentCoursePrices()) {
-				if(!vipGroupCategory.getMusicTheory()){
-					results.put(vscp.getStudentId().toString(), vipGroup.getTotalPrice());
-					continue;
-				}
-				if(Objects.isNull(vscp.getOnlineClassesUnitPrice())||Objects.isNull(vscp.getOfflineClassesUnitPrice())){
-					throw new BizException("请设置课程单价");
-				}
-				vscp.setPaymentPrice(vscp.getOfflineClassesUnitPrice().multiply(new BigDecimal(vipGroup.getOfflineClassesNum())).add(vscp.getOnlineClassesUnitPrice().multiply(new BigDecimal(vipGroup.getOnlineClassesNum()))));
-				vipGroup.setTotalPrice(vipGroup.getTotalPrice().add(vscp.getPaymentPrice()));
-				results.put(vscp.getStudentId().toString(), vscp.getPaymentPrice());
-			}
-		}
-
-        return results;
-    }
+//
+//    @Override
+//    public <K extends VipGroup> Map<String,BigDecimal> countVipGroupPredictFee(K vipGroup,
+//																			   Integer teacherId,
+//																			   Long courseId){
+//
+//		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课课酬");
+//		}
+//
+//		VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId());
+//
+//		Map<String,BigDecimal> results=new HashMap<>(1);
+//
+//		int normalStudentNum = 0;
+//		if(Objects.nonNull(courseId)){
+//			normalStudentNum = courseScheduleStudentPaymentDao.countStudentNum(courseId.intValue());
+//		}
+//		if(normalStudentNum<=0&&Objects.nonNull(vipGroup.getId())){
+//			normalStudentNum = classGroupStudentMapperDao.countGroupNormalStudentNum(GroupType.VIP, vipGroup.getId().toString());
+//		}
+//
+//		if(!vipGroupCategory.getMusicTheory()&&Objects.isNull(vipGroupActivity)){
+//			throw new BizException("活动设置错误");
+//		}
+//
+//		if(!vipGroupCategory.getMusicTheory()){
+//			VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class);
+//
+//			if(Objects.isNull(vipGroupSalarySettlementDto)){
+//				throw new BizException("课酬结算方案错误");
+//			}
+//
+//			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 totalClassNum=offlineClassNum.add(onlineClassNum);
+//			BigDecimal teacherOnlineSalary=null,teacherOfflineSalary=null;
+//
+//			//课程购买费用计算
+//			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);
+//					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));
+//			vipGroup.setTotalPrice(totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
+//
+//			//教师课酬线上单课酬计算
+//			if(Objects.nonNull(vipGroupSalarySettlementDto.getVipOnlineSalarySettlement())){
+//				if(Objects.isNull(teacherOnlineSalary)){
+//					switch (vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSalarySettlementType()){
+//						case TEACHER_DEFAULT:
+//							teacherOnlineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
+//							results.put("onlineTeacherSalary",teacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
+//							break;
+//						case RATIO_DISCOUNT:
+//							results.put("onlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum()))
+//									.divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN)
+//									.multiply(vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().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.getVipOnlineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
+//							break;
+//						default:
+//							throw new BizException("未指定课酬结算标准!");
+//					}
+//
+//				}
+//			}
+//
+//			//教师线下单课酬计算
+//			if(Objects.nonNull(vipGroupSalarySettlementDto.getVipOfflineSalarySettlement())){
+//				if(Objects.isNull(teacherOfflineSalary)){
+//					switch (vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().getSalarySettlementType()){
+//						case TEACHER_DEFAULT:
+//							teacherOfflineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
+//							results.put("offlineTeacherSalary",teacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
+//							break;
+//						case RATIO_DISCOUNT:
+//							results.put("offlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum())).divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().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.getVipOfflineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
+//							break;
+//						default:
+//							throw new BizException("未指定课酬结算标准!");
+//					}
+//				}
+//			}
+//
+//			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;
+//			}
+//			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);
+//			}
+//
+//			results.put("onlineTeacherSalary", ots);
+//			results.put("offlineTeacherSalary", ofts);
+//		}
+//
+//		if(vipGroupCategory.getMusicTheory()){
+//			BigDecimal ots = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
+//			BigDecimal ofts = teacherDefaultVipGroupSalary.getOfflineClassesSalary();
+//			if(Objects.nonNull(vipGroup.getStatus())&&vipGroupCategory.getMusicTheory()){
+//				ots = ots.multiply(new BigDecimal(normalStudentNum>5?5:normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
+//				ofts = ofts.multiply(new BigDecimal(normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
+//			}
+//			results.put("totalPrice",vipGroup.getTotalPrice());
+//			results.put("onlineTeacherSalary",ots);
+//			results.put("offlineTeacherSalary",ofts);
+//		}
+//
+//		if(vipGroup instanceof VipGroupApplyBaseInfoDto&&!CollectionUtils.isEmpty(((VipGroupApplyBaseInfoDto)vipGroup).getVipGroupStudentCoursePrices())){
+//			if(vipGroupCategory.getMusicTheory()){
+//				vipGroup.setTotalPrice(new BigDecimal(0));
+//			}
+//			for (VipGroupStudentCoursePrice vscp : ((VipGroupApplyBaseInfoDto)vipGroup).getVipGroupStudentCoursePrices()) {
+//				if(!vipGroupCategory.getMusicTheory()){
+//					results.put(vscp.getStudentId().toString(), vipGroup.getTotalPrice());
+//					continue;
+//				}
+//				if(Objects.isNull(vscp.getOnlineClassesUnitPrice())||Objects.isNull(vscp.getOfflineClassesUnitPrice())){
+//					throw new BizException("请设置课程单价");
+//				}
+//				vscp.setPaymentPrice(vscp.getOfflineClassesUnitPrice().multiply(new BigDecimal(vipGroup.getOfflineClassesNum())).add(vscp.getOnlineClassesUnitPrice().multiply(new BigDecimal(vipGroup.getOnlineClassesNum()))));
+//				vipGroup.setTotalPrice(vipGroup.getTotalPrice().add(vscp.getPaymentPrice()));
+//				results.put(vscp.getStudentId().toString(), vscp.getPaymentPrice());
+//			}
+//		}
+//
+//        return results;
+//    }
 
     @Override
     public <K extends VipGroup> Map<String,BigDecimal> countVipGroupPredictFee1(K vipGroup,
@@ -2140,7 +2140,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		if(Objects.nonNull(courseId)){
 			normalStudentNum = courseScheduleStudentPaymentDao.countStudentNum(courseId.intValue());
 		}
-		if(normalStudentNum<=0 && Objects.nonNull(vipGroup.getId())){
+		if(normalStudentNum <= 0 && Objects.nonNull(vipGroup.getId())){
 			normalStudentNum = classGroupStudentMapperDao.countGroupNormalStudentNum(GroupType.VIP, vipGroup.getId().toString());
 		}
 
@@ -2185,13 +2185,14 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		results.put("totalPrice",totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
 		vipGroup.setTotalPrice(totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
 
+		Integer studentNum = vipGroup.getStudentIdList().split(",").length;
 		//教师课酬线上单课酬计算
 		if(Objects.nonNull(vipOnlineSalarySettlement)){
 			if(Objects.isNull(teacherOnlineSalary)){
 				switch (vipOnlineSalarySettlement.getSalarySettlementType()){
 					case TEACHER_DEFAULT:
 						if(vipGroupCategory.getMusicTheory()){
-							teacherOnlineSalary = teacherDefaultVipGroupSalary.getOnlineClassesSalary().multiply(new BigDecimal(normalStudentNum>5?5:normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
+							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.getOfflineClassesSalary();
@@ -2213,7 +2214,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				switch (giveVipOnlineSalarySettlement.getSalarySettlementType()){
 					case TEACHER_DEFAULT:
 						if(vipGroupCategory.getMusicTheory()){
-							giveTeacherOnlineSalary = teacherDefaultVipGroupSalary.getOnlineClassesSalary().multiply(new BigDecimal(normalStudentNum>5?5:normalStudentNum)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP);
+							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.getOfflineClassesSalary();
@@ -2341,187 +2342,187 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 //        return results;
 //    }
 
-	@Override
-	public <K extends VipGroup> Map<String,BigDecimal> countVipGroupCoursePredictFee(K vipGroup,
-																			   Integer teacherId,
-																					 Long courseId){
-
-		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(vipGroup.getVipGroupActivityId())){
-			throw new BizException("请指定活动方案");
-		}
-
-		VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId().intValue());
-
-		if(Objects.isNull(vipGroupActivity)){
-			throw new BizException("指定的活动方案不存在");
-		}
-
-		VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class);
-
-		if(Objects.isNull(vipGroupSalarySettlementDto)){
-			throw new BizException("课酬结算方案错误");
-		}
-
-		Map<String,BigDecimal> results=new HashMap<>(1);
-
-		BigDecimal offlineClassNum=new BigDecimal(vipGroup.getOfflineClassesNum());
-		BigDecimal onlineClassNum=new BigDecimal(vipGroup.getOnlineClassesNum());
-		BigDecimal onlineClassesUnitPrice=vipGroup.getOnlineClassesUnitPrice();
-		if(Objects.isNull(onlineClassesUnitPrice)){
-			onlineClassesUnitPrice = BigDecimal.ZERO;
-		}
-		BigDecimal onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
-		BigDecimal offlineClassesUnitPrice=vipGroup.getOfflineClassesUnitPrice();
-		if(Objects.isNull(offlineClassesUnitPrice)){
-			offlineClassesUnitPrice = BigDecimal.ZERO;
-		}
-		BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
-		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);
-				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));
-
-		int normalStudentNum = 0;
-		if(Objects.nonNull(vipGroup.getId())){
-			normalStudentNum = courseScheduleStudentPaymentDao.countStudentNum(courseId.intValue());
-		}
-
-		//教师课酬线上单课酬计算
-		if(Objects.nonNull(vipGroupSalarySettlementDto.getVipOnlineSalarySettlement())){
-			if(Objects.isNull(teacherOnlineSalary)){
-				switch (vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSalarySettlementType()){
-					case TEACHER_DEFAULT:
-						if(Objects.isNull(teacherDefaultVipGroupSalary)||Objects.isNull(teacherDefaultVipGroupSalary.getOfflineClassesSalary())){
-							teacherOnlineSalary=new BigDecimal(0);
-						}else{
-							teacherOnlineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
-						}
-						results.put("onlineTeacherSalary",teacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
-						break;
-					case RATIO_DISCOUNT:
-						results.put("onlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum()))
-								.divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN)
-								.multiply(vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().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.getVipOnlineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
-						break;
-					default:
-						throw new BizException("未指定课酬结算标准!");
-				}
-
-			}
-		}
-
-		//教师线下单课酬计算
-		if(Objects.nonNull(vipGroupSalarySettlementDto.getVipOfflineSalarySettlement())){
-			if(Objects.isNull(teacherOfflineSalary)){
-				switch (vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().getSalarySettlementType()){
-					case TEACHER_DEFAULT:
-						if(Objects.isNull(teacherDefaultVipGroupSalary)||Objects.isNull(teacherDefaultVipGroupSalary.getOfflineClassesSalary())){
-							teacherOfflineSalary=new BigDecimal(0);
-						}else{
-							teacherOfflineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
-						}
-						results.put("offlineTeacherSalary",teacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
-						break;
-					case RATIO_DISCOUNT:
-						results.put("offlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum())).divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().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.getVipOfflineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
-						break;
-					default:
-						throw new BizException("未指定课酬结算标准!");
-				}
-			}
-		}
-
-		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;
-		}
-		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);
-		}
-
-		results.put("onlineTeacherSalary", ots);
-		results.put("offlineTeacherSalary", ofts);
-
-		return results;
-	}
+//	@Override
+//	public <K extends VipGroup> Map<String,BigDecimal> countVipGroupCoursePredictFee(K vipGroup,
+//																			   Integer teacherId,
+//																					 Long courseId){
+//
+//		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(vipGroup.getVipGroupActivityId())){
+//			throw new BizException("请指定活动方案");
+//		}
+//
+//		VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId().intValue());
+//
+//		if(Objects.isNull(vipGroupActivity)){
+//			throw new BizException("指定的活动方案不存在");
+//		}
+//
+//		VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class);
+//
+//		if(Objects.isNull(vipGroupSalarySettlementDto)){
+//			throw new BizException("课酬结算方案错误");
+//		}
+//
+//		Map<String,BigDecimal> results=new HashMap<>(1);
+//
+//		BigDecimal offlineClassNum=new BigDecimal(vipGroup.getOfflineClassesNum());
+//		BigDecimal onlineClassNum=new BigDecimal(vipGroup.getOnlineClassesNum());
+//		BigDecimal onlineClassesUnitPrice=vipGroup.getOnlineClassesUnitPrice();
+//		if(Objects.isNull(onlineClassesUnitPrice)){
+//			onlineClassesUnitPrice = BigDecimal.ZERO;
+//		}
+//		BigDecimal onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
+//		BigDecimal offlineClassesUnitPrice=vipGroup.getOfflineClassesUnitPrice();
+//		if(Objects.isNull(offlineClassesUnitPrice)){
+//			offlineClassesUnitPrice = BigDecimal.ZERO;
+//		}
+//		BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
+//		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);
+//				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));
+//
+//		int normalStudentNum = 0;
+//		if(Objects.nonNull(vipGroup.getId())){
+//			normalStudentNum = courseScheduleStudentPaymentDao.countStudentNum(courseId.intValue());
+//		}
+//
+//		//教师课酬线上单课酬计算
+//		if(Objects.nonNull(vipGroupSalarySettlementDto.getVipOnlineSalarySettlement())){
+//			if(Objects.isNull(teacherOnlineSalary)){
+//				switch (vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().getSalarySettlementType()){
+//					case TEACHER_DEFAULT:
+//						if(Objects.isNull(teacherDefaultVipGroupSalary)||Objects.isNull(teacherDefaultVipGroupSalary.getOfflineClassesSalary())){
+//							teacherOnlineSalary=new BigDecimal(0);
+//						}else{
+//							teacherOnlineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
+//						}
+//						results.put("onlineTeacherSalary",teacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
+//						break;
+//					case RATIO_DISCOUNT:
+//						results.put("onlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum()))
+//								.divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN)
+//								.multiply(vipGroupSalarySettlementDto.getVipOnlineSalarySettlement().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.getVipOnlineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
+//						break;
+//					default:
+//						throw new BizException("未指定课酬结算标准!");
+//				}
+//
+//			}
+//		}
+//
+//		//教师线下单课酬计算
+//		if(Objects.nonNull(vipGroupSalarySettlementDto.getVipOfflineSalarySettlement())){
+//			if(Objects.isNull(teacherOfflineSalary)){
+//				switch (vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().getSalarySettlementType()){
+//					case TEACHER_DEFAULT:
+//						if(Objects.isNull(teacherDefaultVipGroupSalary)||Objects.isNull(teacherDefaultVipGroupSalary.getOfflineClassesSalary())){
+//							teacherOfflineSalary=new BigDecimal(0);
+//						}else{
+//							teacherOfflineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary();
+//						}
+//						results.put("offlineTeacherSalary",teacherOfflineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
+//						break;
+//					case RATIO_DISCOUNT:
+//						results.put("offlineTeacherSalary",totalPrice.multiply(new BigDecimal(vipGroupCategory.getStudentNum())).divide(totalClassNum, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(vipGroupSalarySettlementDto.getVipOfflineSalarySettlement().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.getVipOfflineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
+//						break;
+//					default:
+//						throw new BizException("未指定课酬结算标准!");
+//				}
+//			}
+//		}
+//
+//		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;
+//		}
+//		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);
+//		}
+//
+//		results.put("onlineTeacherSalary", ots);
+//		results.put("offlineTeacherSalary", ofts);
+//
+//		return results;
+//	}
 
 	@Override
 	public void enableBuyVipGroup(Integer vipGroupId, Integer userId) {
@@ -4195,23 +4196,22 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			onlineCourseTotalTimes=0,
 			offlineCourseTotalTimes=0,
 			giveClassTimes=0;
-		if(vipGroup.getStatus().equals(VipGroupStatusEnum.APPLYING)
-				&&Objects.nonNull(vipGroupActivity)
-			&&vipGroupActivity.getType().equals(VipGroupActivityTypeEnum.GIVE_CLASS)
-			&&surplusCourses.size()>=Integer.parseInt(vipGroupActivity.getAttribute1())){
-			hasGiveClass=true;
-			giveClassTimes=Integer.parseInt(vipGroupActivity.getAttribute2());
-			Map<TeachModeEnum, List<CourseSchedule>> teachModeCourseMap = surplusCourses.stream()
-					.collect(Collectors.groupingBy(CourseSchedule::getTeachMode));
-			List<CourseSchedule> onlineCourses=teachModeCourseMap.get(TeachModeEnum.ONLINE);
-			if(!CollectionUtils.isEmpty(onlineCourses)){
-				onlineCourseTotalTimes=onlineCourses.size();
-			}
-			List<CourseSchedule> offlineCourses=teachModeCourseMap.get(TeachModeEnum.OFFLINE);
-			if(!CollectionUtils.isEmpty(offlineCourses)){
-				offlineCourseTotalTimes=offlineCourses.size();
-			}
-		}
+//		if(vipGroup.getStatus().equals(VipGroupStatusEnum.APPLYING) && Objects.nonNull(vipGroupActivity)
+//			&& vipGroupActivity.getType().equals(VipGroupActivityTypeEnum.GIVE_CLASS)
+//			&&surplusCourses.size()>=Integer.parseInt(vipGroupActivity.getAttribute1())){
+//			hasGiveClass=true;
+//			giveClassTimes=Integer.parseInt(vipGroupActivity.getAttribute2());
+//			Map<TeachModeEnum, List<CourseSchedule>> teachModeCourseMap = surplusCourses.stream()
+//					.collect(Collectors.groupingBy(CourseSchedule::getTeachMode));
+//			List<CourseSchedule> onlineCourses=teachModeCourseMap.get(TeachModeEnum.ONLINE);
+//			if(!CollectionUtils.isEmpty(onlineCourses)){
+//				onlineCourseTotalTimes=onlineCourses.size();
+//			}
+//			List<CourseSchedule> offlineCourses=teachModeCourseMap.get(TeachModeEnum.OFFLINE);
+//			if(!CollectionUtils.isEmpty(offlineCourses)){
+//				offlineCourseTotalTimes=offlineCourses.size();
+//			}
+//		}
 
 		//生成学生单课缴费信息
 		for (Integer studentId:studentIds) {
@@ -4256,9 +4256,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			}
 
 			BigDecimal discount=null;
-			if(Objects.nonNull(vipGroupActivity)&&vipGroupActivity.getType().equals(VipGroupActivityTypeEnum.DISCOUNT)){
-				discount=new BigDecimal(vipGroupActivity.getAttribute1()).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
-				surplusCoursesPrice=surplusCoursesPrice.multiply(discount).setScale(CommonConstants.DECIMAL_FINAL_PLACE,BigDecimal.ROUND_HALF_UP);
+			if(Objects.nonNull(vipGroupActivity)){
+				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);
 			}
 
 			sysUserCashAccountService.subtractFromCourseBalanceAndBalance(studentId,surplusCoursesPrice,PlatformCashAccountDetailTypeEnum.PAY_FEE, "后台添加学员金额扣减");

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/VipGroupActivityMapper.xml

@@ -189,9 +189,15 @@
 		<if test="activityQueryDto.newStudentNum != null">
 			AND ast.new_student_ != #{activityQueryDto.newStudentNum}
 		</if>
+		<if test="activityQueryDto.newStudentNum == null">
+			AND ast.new_student_ = -1
+		</if>
 		<if test="activityQueryDto.memberNum != null">
 			AND ast.member_flag_ != #{activityQueryDto.memberNum}
 		</if>
+		<if test="activityQueryDto.memberNum == null">
+			AND ast.member_flag_ = -1
+		</if>
 	</select>
     <select id="queryNamesById" resultType="java.util.Map">
 		SELECT vga.id_ `key`,vga.name_ `value` FROM vip_group_activity vga WHERE FIND_IN_SET(vga.id_,#{activityIds}) AND vga.del_flag_=0