Преглед на файлове

针对直播课的冲突校验更改

zouxuan преди 2 години
родител
ревизия
78830f87b4

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -752,6 +752,8 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 
     List<CourseSchedule> findByClassDate(@Param("classDates") List<String> classDates, @Param("tenantId") Integer tenantId);
 
+    List<CourseSchedule> findByClassDateAndStu(@Param("classDates") List<String> classDates, @Param("tenantId") Integer tenantId, @Param("userId") Integer userId);
+
     /**
      * 查询学生明天的课程数
      *

+ 8 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -1874,13 +1874,18 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 	@Transactional(rollbackFor = Exception.class)
     public HttpResponseResult checkCourseSchedules(List<CourseSchedule> courseSchedules, boolean checkExistCourseSchedule,Boolean postponeFlag,ClassGroupStudentMapper classGroupStudentMapper) {
+
 		if (CollectionUtils.isEmpty(courseSchedules)) {
 			return BaseController.failed();
 		}
 		List<String> classDates = courseSchedules.stream().map(courseSchedule -> DateUtil.dateToString(courseSchedule.getClassDate(), "yyyy-MM-dd"))
 				.collect(Collectors.toList());
-
-		List<CourseSchedule> existCourseSchedules = courseScheduleDao.findByClassDate(classDates, TenantContextHolder.getTenantId());
+		List<CourseSchedule> existCourseSchedules;
+		if(Objects.nonNull(classGroupStudentMapper)){
+			existCourseSchedules = courseScheduleDao.findByClassDateAndStu(classDates, TenantContextHolder.getTenantId(),classGroupStudentMapper.getUserId());
+		}else {
+			existCourseSchedules = courseScheduleDao.findByClassDate(classDates, TenantContextHolder.getTenantId());
+		}
 
 		//只需要调整课程信息的课程编号列表
 		List<Long> updateCourseScheduleIds = courseSchedules
@@ -1928,17 +1933,14 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				.distinct()
 				.collect(Collectors.toList());
 		//班级与学生的关联记录
+		List<ClassGroupStudentMapper> classGroupStudentMappers = classGroupStudentMapperDao.findByClassGroups(classGroupIds);
 		Boolean liveFlag = false;
-		List<ClassGroupStudentMapper> classGroupStudentMappers = new ArrayList<>();
 		if(Objects.nonNull(classGroupStudentMapper)){
 			classGroupStudentMappers.add(classGroupStudentMapper);
 			if(classGroupStudentMapper.getGroupType() == LIVE){
 				liveFlag = true;
 			}
-		}else {
-			classGroupStudentMappers = classGroupStudentMapperDao.findByClassGroups(classGroupIds);
 		}
-
 		Map<Integer, List<ClassGroupStudentMapper>> classGroupStudentsMap = classGroupStudentMappers
 				.stream()
 				.collect(Collectors.groupingBy(ClassGroupStudentMapper::getClassGroupId));

+ 24 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -1915,6 +1915,30 @@
         AND (cs.del_flag_ IS NULL OR cs.del_flag_=0)
         AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
     </select>
+    <select id="findByClassDateAndStu" resultMap="CourseSchedule">
+        SELECT
+        cs.id_,
+        cs.music_group_id_,
+        cs.class_group_id_,
+        cs.class_date_,
+        CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
+        CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
+        cs.type_,
+        cs.name_,
+        cs.share_mode_,
+        cs.actual_teacher_id_
+        FROM
+        course_schedule cs
+        left join course_schedule_student_payment cssp ON cs.id_ = cssp.course_schedule_id_
+        WHERE (cs.class_date_ IN
+        <foreach collection="classDates" item="classDate" open="(" close=")" separator=",">
+            #{classDate}
+        </foreach>
+        )
+        and cs.tenant_id_ = #{tenantId} AND cssp.user_id_ = #{userId}
+        AND (cs.del_flag_ IS NULL OR cs.del_flag_=0)
+        AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_)
+    </select>
 
     <select id="queryStudentCoursesTimesOfTomorrow" resultMap="Mapper">
         select cssp.user_id_ key_, count(1) value_