|  | @@ -24,10 +24,7 @@ import org.springframework.stereotype.Service;
 | 
											
												
													
														|  |  import org.springframework.transaction.annotation.Transactional;
 |  |  import org.springframework.transaction.annotation.Transactional;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  import java.math.BigDecimal;
 |  |  import java.math.BigDecimal;
 | 
											
												
													
														|  | -import java.util.ArrayList;
 |  | 
 | 
											
												
													
														|  | -import java.util.HashMap;
 |  | 
 | 
											
												
													
														|  | -import java.util.List;
 |  | 
 | 
											
												
													
														|  | -import java.util.Map;
 |  | 
 | 
											
												
													
														|  | 
 |  | +import java.util.*;
 | 
											
												
													
														|  |  import java.util.stream.Collectors;
 |  |  import java.util.stream.Collectors;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  @Service
 |  |  @Service
 | 
											
										
											
												
													
														|  | @@ -73,6 +70,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
											
												
													
														|  |  	@Override
 |  |  	@Override
 | 
											
												
													
														|  |  	public void createVipGroup(VipGroupApplyDto vipGroup) {
 |  |  	public void createVipGroup(VipGroupApplyDto vipGroup) {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +		if (Objects.isNull(vipGroup.getVipGroupApplyBaseInfo().getUserId())){
 | 
											
												
													
														|  | 
 |  | +			throw new BizException("请选择指导老师");
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  	    if(vipGroup.getCourseSchedules().size()!=vipGroup.getVipGroupApplyBaseInfo().getAllCourseNum()){
 |  |  	    if(vipGroup.getCourseSchedules().size()!=vipGroup.getVipGroupApplyBaseInfo().getAllCourseNum()){
 | 
											
												
													
														|  |  	        throw new BizException("课时总数不匹配!");
 |  |  	        throw new BizException("课时总数不匹配!");
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
										
											
												
													
														|  | @@ -85,10 +86,20 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
											
												
													
														|  |              throw new BizException("线上课课时数量安排有误!");
 |  |              throw new BizException("线上课课时数量安排有误!");
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +        //获取活动信息
 | 
											
												
													
														|  |          VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupApplyBaseInfo().getVipGroupActivityId().intValue());
 |  |          VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupApplyBaseInfo().getVipGroupActivityId().intValue());
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        //生成vip课信息
 | 
											
												
													
														|  |  		VipGroupApplyBaseInfoDto vipGroupApplyBaseInfoDto=vipGroup.getVipGroupApplyBaseInfo();
 |  |  		VipGroupApplyBaseInfoDto vipGroupApplyBaseInfoDto=vipGroup.getVipGroupApplyBaseInfo();
 | 
											
												
													
														|  | 
 |  | +		vipGroupApplyBaseInfoDto.setTotalPrice(countVipGroupPredictFee(vipGroupApplyBaseInfoDto,
 | 
											
												
													
														|  | 
 |  | +				vipGroupApplyBaseInfoDto.getOnlineClassesUnitPrice(),
 | 
											
												
													
														|  | 
 |  | +				vipGroupApplyBaseInfoDto.getOfflineClassesUnitPrice()));
 | 
											
												
													
														|  |  		vipGroupDao.insert(vipGroupApplyBaseInfoDto);
 |  |  		vipGroupDao.insert(vipGroupApplyBaseInfoDto);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		//获取vip课类型信息
 | 
											
												
													
														|  |  		VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroup.getVipGroupApplyBaseInfo().getVipGroupCategoryId().intValue());
 |  |  		VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroup.getVipGroupApplyBaseInfo().getVipGroupCategoryId().intValue());
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		//创建班级信息
 | 
											
												
													
														|  |  		ClassGroup classGroup=new ClassGroup();
 |  |  		ClassGroup classGroup=new ClassGroup();
 | 
											
												
													
														|  |  		classGroup.setExpectStudentNum(vipGroupCategory.getStudentNum());
 |  |  		classGroup.setExpectStudentNum(vipGroupCategory.getStudentNum());
 | 
											
												
													
														|  |  		classGroup.setName(vipGroupApplyBaseInfoDto.getName());
 |  |  		classGroup.setName(vipGroupApplyBaseInfoDto.getName());
 | 
											
										
											
												
													
														|  | @@ -96,15 +107,27 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
											
												
													
														|  |  		classGroup.setType(ClassGroupTypeEnum.VIP);
 |  |  		classGroup.setType(ClassGroupTypeEnum.VIP);
 | 
											
												
													
														|  |  		classGroup.setDelFlag(YesOrNoEnum.NO);
 |  |  		classGroup.setDelFlag(YesOrNoEnum.NO);
 | 
											
												
													
														|  |  		classGroupDao.insert(classGroup);
 |  |  		classGroupDao.insert(classGroup);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		//创建vip课班级关联记录
 | 
											
												
													
														|  |  		VipGroupClassGroupMapper vipGroupClassGroupMapper=new VipGroupClassGroupMapper();
 |  |  		VipGroupClassGroupMapper vipGroupClassGroupMapper=new VipGroupClassGroupMapper();
 | 
											
												
													
														|  |  		vipGroupClassGroupMapper.setVipGroupId(vipGroupApplyBaseInfoDto.getId());
 |  |  		vipGroupClassGroupMapper.setVipGroupId(vipGroupApplyBaseInfoDto.getId());
 | 
											
												
													
														|  |  		vipGroupClassGroupMapper.setClassGroupId(classGroup.getId());
 |  |  		vipGroupClassGroupMapper.setClassGroupId(classGroup.getId());
 | 
											
												
													
														|  |  		vipGroupClassGroupMapperDao.insert(vipGroupClassGroupMapper);
 |  |  		vipGroupClassGroupMapperDao.insert(vipGroupClassGroupMapper);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		//创建班级老师关联记录
 | 
											
												
													
														|  |  		ClassGroupTeacherMapper classGroupTeacherMapper=new ClassGroupTeacherMapper();
 |  |  		ClassGroupTeacherMapper classGroupTeacherMapper=new ClassGroupTeacherMapper();
 | 
											
												
													
														|  |  		classGroupTeacherMapper.setTeacherRole(TeachTypeEnum.TEACHING);
 |  |  		classGroupTeacherMapper.setTeacherRole(TeachTypeEnum.TEACHING);
 | 
											
												
													
														|  |  		classGroupTeacherMapper.setUserId(Integer.parseInt(vipGroupApplyBaseInfoDto.getTeacherId().toString()));
 |  |  		classGroupTeacherMapper.setUserId(Integer.parseInt(vipGroupApplyBaseInfoDto.getTeacherId().toString()));
 | 
											
												
													
														|  | -		classGroupTeacherMapper.setSalary(vipGroupApplyBaseInfoDto.getSalary());
 |  | 
 | 
											
												
													
														|  |  		classGroupTeacherMapperDao.insert(classGroupTeacherMapper);
 |  |  		classGroupTeacherMapperDao.insert(classGroupTeacherMapper);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		//创建班级与老师课酬记录
 | 
											
												
													
														|  | 
 |  | +		ClassGroupTeacherSalary classGroupTeacherSalary=new ClassGroupTeacherSalary();
 | 
											
												
													
														|  | 
 |  | +		classGroupTeacherSalary.setTeacherRole(TeachTypeEnum.TEACHING);
 | 
											
												
													
														|  | 
 |  | +		classGroupTeacherSalary.setUserId(Integer.parseInt(vipGroupApplyBaseInfoDto.getTeacherId().toString()));
 | 
											
												
													
														|  | 
 |  | +		classGroupTeacherSalary.setSalary(vipGroupApplyBaseInfoDto.getOfflineTeacherSalary());
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		//课程信息调整
 | 
											
												
													
														|  |  		vipGroup.getCourseSchedules().forEach(courseSchedule -> {
 |  |  		vipGroup.getCourseSchedules().forEach(courseSchedule -> {
 | 
											
												
													
														|  |  		    if(courseSchedule.getEndClassTime().after(vipGroupActivity.getCoursesEndTime())
 |  |  		    if(courseSchedule.getEndClassTime().after(vipGroupActivity.getCoursesEndTime())
 | 
											
												
													
														|  |                  &&courseSchedule.getStartClassTime().before(vipGroupActivity.getCoursesStartTime())){
 |  |                  &&courseSchedule.getStartClassTime().before(vipGroupActivity.getCoursesStartTime())){
 | 
											
										
											
												
													
														|  | @@ -113,6 +136,13 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
											
												
													
														|  |  			courseSchedule.setClassGroupId(classGroup.getId());
 |  |  			courseSchedule.setClassGroupId(classGroup.getId());
 | 
											
												
													
														|  |  		});
 |  |  		});
 | 
											
												
													
														|  |  		courseScheduleService.batchAddCourseSchedule(vipGroup.getCourseSchedules());
 |  |  		courseScheduleService.batchAddCourseSchedule(vipGroup.getCourseSchedules());
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		//创建老师与学生费用相关记录
 | 
											
												
													
														|  | 
 |  | +		List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries=new ArrayList<>();
 | 
											
												
													
														|  | 
 |  | +		Map<TeachModeEnum, List<CourseSchedule>> courseScheduleGroupByTeachMode = vipGroup.getCourseSchedules().stream().collect(Collectors.groupingBy(CourseSchedule::getTeachMode));
 | 
											
												
													
														|  | 
 |  | +		vipGroup.getCourseSchedules().forEach(courseSchedule -> {
 | 
											
												
													
														|  | 
 |  | +			CourseScheduleTeacherSalary courseScheduleTeacherSalary=new CourseScheduleTeacherSalary();
 | 
											
												
													
														|  | 
 |  | +		});
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	@Override
 |  |  	@Override
 | 
											
										
											
												
													
														|  | @@ -329,11 +359,31 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
											
												
													
														|  |       * 计算VIP课程预计收费
 |  |       * 计算VIP课程预计收费
 | 
											
												
													
														|  |       */
 |  |       */
 | 
											
												
													
														|  |      private BigDecimal countVipGroupPredictFee(VipGroup vipGroup,BigDecimal onlineClassesUnitPrice,BigDecimal offlineClassesUnitPrice){
 |  |      private BigDecimal countVipGroupPredictFee(VipGroup vipGroup,BigDecimal onlineClassesUnitPrice,BigDecimal offlineClassesUnitPrice){
 | 
											
												
													
														|  | -        BigDecimal offlineClassNum=new BigDecimal(vipGroup.getOfflineClassesNum());
 |  | 
 | 
											
												
													
														|  | -        BigDecimal onlineClassNum=new BigDecimal(vipGroup.getOnlineClassesNum());
 |  | 
 | 
											
												
													
														|  | -        BigDecimal onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
 |  | 
 | 
											
												
													
														|  | -        BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
 |  | 
 | 
											
												
													
														|  | -        return onlineVipGroupCharge.add(offlineVipGroupCharge);
 |  | 
 | 
											
												
													
														|  | 
 |  | +		VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId().intValue());
 | 
											
												
													
														|  | 
 |  | +		if(Objects.isNull(vipGroup)){
 | 
											
												
													
														|  | 
 |  | +			throw new BizException("该课未指定活动方案");
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		BigDecimal offlineClassNum=new BigDecimal(vipGroup.getOfflineClassesNum());
 | 
											
												
													
														|  | 
 |  | +		BigDecimal onlineClassNum=new BigDecimal(vipGroup.getOnlineClassesNum());
 | 
											
												
													
														|  | 
 |  | +		BigDecimal onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
 | 
											
												
													
														|  | 
 |  | +		BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
 | 
											
												
													
														|  | 
 |  | +		BigDecimal totalPrice=null;
 | 
											
												
													
														|  | 
 |  | +		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);
 | 
											
												
													
														|  | 
 |  | +				break;
 | 
											
												
													
														|  | 
 |  | +			case GIVE_CLASS:
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +				break;
 | 
											
												
													
														|  | 
 |  | +			default:
 | 
											
												
													
														|  | 
 |  | +				throw new BizException("活动类型错误!");
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +        return totalPrice;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	@Override
 |  |  	@Override
 |