|  | @@ -828,6 +828,38 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  | +     * 批量检查老师课时在数据库是否重复
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     * @param teacherId 老师id
 | 
	
		
			
				|  |  | +     * @param timeList  时间集合
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    private <T> void batchCheckTeacherCourseTime(Long teacherId, List<T> timeList, Function<T, Date> startTimeFun, Function<T, Date> endTimeFun) {
 | 
	
		
			
				|  |  | +        //再校验数据库中课程时间和传入时间是否有交集
 | 
	
		
			
				|  |  | +        timeList.forEach(o -> {
 | 
	
		
			
				|  |  | +            boolean checkDataTime = this.checkTeacherCourseTime(teacherId, startTimeFun.apply(o), endTimeFun.apply(o));
 | 
	
		
			
				|  |  | +            if (checkDataTime) {
 | 
	
		
			
				|  |  | +                throw new BizException("预计安排在" + DateUtil.dateToString(startTimeFun.apply(o), "yyyy年MM月dd号 HH点mm分") + "的课程时间存在冲突!");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 批量检查学生课时在数据库是否重复
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     * @param studentId 老师id
 | 
	
		
			
				|  |  | +     * @param timeList  时间集合
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    private <T> void batchCheckStudentCourseTime(Long studentId, List<T> timeList, Function<T, Date> startTimeFun, Function<T, Date> endTimeFun) {
 | 
	
		
			
				|  |  | +        //再校验数据库中课程时间和传入时间是否有交集
 | 
	
		
			
				|  |  | +        timeList.forEach(o -> {
 | 
	
		
			
				|  |  | +            boolean checkDataTime = this.checkStudentCourseTime(studentId, startTimeFun.apply(o), endTimeFun.apply(o));
 | 
	
		
			
				|  |  | +            if (checkDataTime) {
 | 
	
		
			
				|  |  | +                throw new BizException("预计安排在" + DateUtil.dateToString(startTimeFun.apply(o), "yyyy年MM月dd号 HH点mm分") + "的课程时间存在冲突!");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  |       * @Description: 学生购买陪练课
 | 
	
		
			
				|  |  |       * @Author: cy
 | 
	
		
			
				|  |  |       * @Date: 2022/4/21
 | 
	
	
		
			
				|  | @@ -842,8 +874,24 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          ObjectMapper objectMapper = new ObjectMapper();
 | 
	
		
			
				|  |  |          PracticeScheduleDto scheduleDto = objectMapper.convertValue(orderReqInfo.getBizContent(), PracticeScheduleDto.class);
 | 
	
		
			
				|  |  | +        List<CourseScheduleDate> dateList = scheduleDto.getClassTime();
 | 
	
		
			
				|  |  | +        Integer courseNum = scheduleDto.getCourseNum();//课程数
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //校验课时数
 | 
	
		
			
				|  |  | +        if (dateList.size() != courseNum) {
 | 
	
		
			
				|  |  | +            throw new BizException("课程数与课时数不符");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        BigDecimal price=baseMapper.selectPrice(scheduleDto.getTeacherId(), scheduleDto.getSubjectId());//老师设置声部价格
 | 
	
		
			
				|  |  | +        BigDecimal decimal = new BigDecimal(courseNum);//选购课程节数
 | 
	
		
			
				|  |  | +        BigDecimal multiply = price.multiply(decimal);//预计总价
 | 
	
		
			
				|  |  | +        if (multiply.compareTo(scheduleDto.getCoursePrice())!=0){
 | 
	
		
			
				|  |  | +            throw new BizException("价格异常。预计价格:{},实际价格:{}",multiply,scheduleDto.getCoursePrice());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        //校验课程数与价格
 | 
	
		
			
				|  |  | +        //批量检查老师课时在数据库是否重复
 | 
	
		
			
				|  |  | +        batchCheckTeacherCourseTime(scheduleDto.getTeacherId(), dateList, CourseScheduleDate::getStartTime, CourseScheduleDate::getEndTime);
 | 
	
		
			
				|  |  | +        //批量检查学生课时在数据库是否重复
 | 
	
		
			
				|  |  | +        batchCheckStudentCourseTime(studentId, dateList, CourseScheduleDate::getStartTime, CourseScheduleDate::getEndTime);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          String orderNo = orderReqInfo.getOrderNo();
 | 
	
		
			
				|  |  |          scheduleDto.setType(CourseScheduleEnum.PRACTICE.getCode());
 |