|  | @@ -876,39 +876,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |  		BigDecimal totalClassNum=offlineClassNum.add(onlineClassNum);
 | 
	
		
			
				|  |  |  		BigDecimal teacherOnlineSalary=null,teacherOfflineSalary=null;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		//教师课酬线上单课酬计算
 | 
	
		
			
				|  |  | -		if(Objects.nonNull(vipGroupSalarySettlementDto.getOnlineSalarySettlement())){
 | 
	
		
			
				|  |  | -            if(vipGroup instanceof VipGroupApplyBaseInfoDto&&!useDefaultTeacherSalary
 | 
	
		
			
				|  |  | -                    &&vipGroupActivity.getSalaryReadonlyFlag().equals("1")){
 | 
	
		
			
				|  |  | -                teacherOnlineSalary=((VipGroupApplyBaseInfoDto) vipGroup).getOnlineTeacherSalary();
 | 
	
		
			
				|  |  | -                results.put("onlineTeacherSalary",teacherOnlineSalary);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if(Objects.isNull(teacherOnlineSalary)){
 | 
	
		
			
				|  |  | -                switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()){
 | 
	
		
			
				|  |  | -                    case TEACHER_DEFAULT:
 | 
	
		
			
				|  |  | -                        if(Objects.isNull(teacherDefaultVipGroupSalary)||Objects.isNull(teacherDefaultVipGroupSalary.getOnlineClassesSalary())){
 | 
	
		
			
				|  |  | -                            teacherOnlineSalary=new BigDecimal(0);
 | 
	
		
			
				|  |  | -                        }else{
 | 
	
		
			
				|  |  | -                            teacherOnlineSalary=teacherDefaultVipGroupSalary.getOnlineClassesSalary();
 | 
	
		
			
				|  |  | -                        }
 | 
	
		
			
				|  |  | -//                        teacherOnlineSalary=teacherOnlineSalary.multiply(classTimeDuty);
 | 
	
		
			
				|  |  | -                        results.put("onlineTeacherSalary",teacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | -                    case RATIO_DISCOUNT:
 | 
	
		
			
				|  |  | -                        results.put("onlineTeacherSalary",onlineClassesUnitPrice.multiply((vipGroupSalarySettlementDto.getOnlineSalarySettlement().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.getOnlineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
 | 
	
		
			
				|  |  | -                        break;
 | 
	
		
			
				|  |  | -                    default:
 | 
	
		
			
				|  |  | -                        throw new BizException("未指定课酬结算标准!");
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -		}else{
 | 
	
		
			
				|  |  | -			results.put("onlineTeacherSalary", new BigDecimal(0));
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  		//教师线下单课酬计算
 | 
	
		
			
				|  |  |  		if(Objects.nonNull(vipGroupSalarySettlementDto.getOfflineSalarySettlement())){
 | 
	
		
			
				|  |  |              if(vipGroup instanceof VipGroupApplyBaseInfoDto&&!useDefaultTeacherSalary
 | 
	
	
		
			
				|  | @@ -945,41 +912,75 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |              throw new BizException("此活动未设置活动类型");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		if(computeTotalPrice){
 | 
	
		
			
				|  |  | -			//课程购买费用计算
 | 
	
		
			
				|  |  | -			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).setScale(CommonConstants.DECIMAL_FINAL_PLACE,BigDecimal.ROUND_HALF_UP);
 | 
	
		
			
				|  |  | -					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("请指定赠送课程类型!");
 | 
	
		
			
				|  |  | +		//课程购买费用计算
 | 
	
		
			
				|  |  | +		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).setScale(CommonConstants.DECIMAL_FINAL_PLACE,BigDecimal.ROUND_HALF_UP);
 | 
	
		
			
				|  |  | +				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()));
 | 
	
		
			
				|  |  |  					}
 | 
	
		
			
				|  |  | -					totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
 | 
	
		
			
				|  |  | -					break;
 | 
	
		
			
				|  |  | -				default:
 | 
	
		
			
				|  |  | -					throw new BizException("活动类型错误!");
 | 
	
		
			
				|  |  | +					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));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		//教师课酬线上单课酬计算
 | 
	
		
			
				|  |  | +		if(Objects.nonNull(vipGroupSalarySettlementDto.getOnlineSalarySettlement())){
 | 
	
		
			
				|  |  | +			if(vipGroup instanceof VipGroupApplyBaseInfoDto&&!useDefaultTeacherSalary
 | 
	
		
			
				|  |  | +					&&vipGroupActivity.getSalaryReadonlyFlag().equals("1")){
 | 
	
		
			
				|  |  | +				teacherOnlineSalary=((VipGroupApplyBaseInfoDto) vipGroup).getOnlineTeacherSalary();
 | 
	
		
			
				|  |  | +				results.put("onlineTeacherSalary",teacherOnlineSalary);
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  | -			results.put("totalPrice",totalPrice.setScale(0,BigDecimal.ROUND_CEILING));
 | 
	
		
			
				|  |  | +			if(Objects.isNull(teacherOnlineSalary)){
 | 
	
		
			
				|  |  | +				switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()){
 | 
	
		
			
				|  |  | +					case TEACHER_DEFAULT:
 | 
	
		
			
				|  |  | +						if(Objects.isNull(teacherDefaultVipGroupSalary)||Objects.isNull(teacherDefaultVipGroupSalary.getOnlineClassesSalary())){
 | 
	
		
			
				|  |  | +							teacherOnlineSalary=new BigDecimal(0);
 | 
	
		
			
				|  |  | +						}else{
 | 
	
		
			
				|  |  | +							teacherOnlineSalary=teacherDefaultVipGroupSalary.getOnlineClassesSalary();
 | 
	
		
			
				|  |  | +						}
 | 
	
		
			
				|  |  | +						results.put("onlineTeacherSalary",teacherOnlineSalary.setScale(0, BigDecimal.ROUND_HALF_UP));
 | 
	
		
			
				|  |  | +						break;
 | 
	
		
			
				|  |  | +					case RATIO_DISCOUNT:
 | 
	
		
			
				|  |  | +						BigDecimal tos=results.get("totalPrice").divide(onlineClassNum.add(offlineClassNum), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN)
 | 
	
		
			
				|  |  | +								.multiply(new BigDecimal(0.6));
 | 
	
		
			
				|  |  | +//						results.put("onlineTeacherSalary",onlineClassesUnitPrice.multiply((vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue())).divide(new BigDecimal(100), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).setScale(0,BigDecimal.ROUND_HALF_UP));
 | 
	
		
			
				|  |  | +						results.put("onlineTeacherSalary", tos);
 | 
	
		
			
				|  |  | +						break;
 | 
	
		
			
				|  |  | +					case FIXED_SALARY:
 | 
	
		
			
				|  |  | +						results.put("onlineTeacherSalary",vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue().setScale(0, BigDecimal.ROUND_HALF_UP));
 | 
	
		
			
				|  |  | +						break;
 | 
	
		
			
				|  |  | +					default:
 | 
	
		
			
				|  |  | +						throw new BizException("未指定课酬结算标准!");
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}else{
 | 
	
		
			
				|  |  | +			results.put("onlineTeacherSalary", new BigDecimal(0));
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          return results;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1266,7 +1267,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		//将学生加入到班级,更新班级报名状态及人数信息
 | 
	
		
			
				|  |  |  		if(!isOk){
 | 
	
		
			
				|  |  | -			if(CollectionUtils.isEmpty(statusOrdersMap.get(DealStatusEnum.ING))){
 | 
	
		
			
				|  |  | +			if(CollectionUtils.isEmpty(statusOrdersMap.get(DealStatusEnum.ING))||(!CollectionUtils.isEmpty(statusOrdersMap.get(DealStatusEnum.ING))&&statusOrdersMap.get(DealStatusEnum.ING).size()<=1)){
 | 
	
		
			
				|  |  |  				updateVipGroupStudentNumAndStatus(vipGroupId,classGroup,-1,false);
 | 
	
		
			
				|  |  |  				classGroupStudentMapperDao.deleteStudentByMusicGroupId(vipGroupId.toString(),userId);
 | 
	
		
			
				|  |  |  			}
 |