Ver Fonte

Merge remote-tracking branch 'origin/feature/0529-live' into feature/0529-live

zouxuan há 2 anos atrás
pai
commit
15908bb885

+ 76 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -6424,17 +6424,73 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 		// 课程连堂状态
 		if (beforeCourse.get(beforeCourse.size() - 1).getContinuousCourse()) {
-			List<CourseSchedule> collect = beforeCourse.stream()
+
+			// 倒序排序
+			beforeCourse = beforeCourse.stream()
+					.sorted(Comparator.comparing(CourseSchedule::getStartClassTime).reversed())
+					.collect(Collectors.toList());
+
+			for (int i = 0; i < beforeCourse.size(); i++) {
+				CourseSchedule current = beforeCourse.get(i);
+				if (current.getContinuousCourse()) {
+					newCourseSchedules.add(current);
+				}
+
+				if (i + 1 < beforeCourse.size()) {
+					CourseSchedule next = beforeCourse.get(i + 1);
+
+					if (!next.getContinuousCourse()) {
+						newCourseSchedules.add(next);
+						break;
+					}
+				}
+			}
+
+			// 正序排序
+			beforeCourse = beforeCourse.stream()
+					.sorted(Comparator.comparing(CourseSchedule::getStartClassTime))
+					.collect(Collectors.toList());
+
+			/*for (int i = beforeCourse.size() - 1; i >= 0 ; i--) {
+				CourseSchedule current = beforeCourse.get(i);
+				CourseSchedule next = null;
+				if ((i - 1) >= 0) {
+					next = beforeCourse.get(i - 1);
+				}
+				if (next != null && current.getContinuousCourse() && next.getContinuousCourse()) {
+					newCourseSchedules.addAll(Lists.newArrayList(current, next));
+				}
+			}*/
+
+			/*List<CourseSchedule> collect = beforeCourse.stream()
 					.filter(CourseSchedule::getContinuousCourse)
 					.collect(Collectors.toList());
 			if (CollectionUtils.isNotEmpty(collect)) {
 				newCourseSchedules.addAll(collect);
-			}
+			}*/
 		}
 
 		// 课程后连堂状态
 		updateContinuousCourseStatus(continueCourseTime, afterCourse);
 		if (afterCourse.get(0).getContinuousCourse()) {
+
+			for (int i = 0; i < afterCourse.size(); i++) {
+				CourseSchedule current = afterCourse.get(i);
+				if (current.getContinuousCourse()) {
+					newCourseSchedules.add(current);
+				}
+
+				if (i + 1 < afterCourse.size()) {
+					CourseSchedule next = afterCourse.get(i + 1);
+
+					if (!next.getContinuousCourse()) {
+						newCourseSchedules.add(next);
+						break;
+					}
+				}
+			}
+
+			/*
 			List<CourseSchedule> collect = afterCourse.stream()
 					.filter(CourseSchedule::getContinuousCourse)
 					.collect(Collectors.toList());
@@ -6445,11 +6501,20 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				} else {
 					newCourseSchedules.addAll(collect.subList(1, collect.size()));
 				}
-			}
+			}*/
 		}
 
 		if (CollectionUtils.isNotEmpty(newCourseSchedules)) {
 
+            // newCourseSchedules集合去重
+            newCourseSchedules = newCourseSchedules.stream()
+                    .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(CourseSchedule::getId))), ArrayList::new));
+
+			// 课程按开始时间排序
+			newCourseSchedules = newCourseSchedules.stream()
+					.sorted(Comparator.comparing(CourseSchedule::getStartClassTime))
+					.collect(Collectors.toList());
+
 			// 连党课程信息
 			for (CourseSchedule item : newCourseSchedules) {
 				courseScheduleTimes.add(CourseScheduleWrapper.CourseScheduleTime.builder()
@@ -6487,6 +6552,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 						int size = beforeCourse.size();
 						collect = beforeCourse.subList(size - 2, size).stream()
+                                .filter(o -> CourseStatusEnum.NOT_START.equals(o.getStatus()))
 								.map(CourseSchedule::getId)
 								.distinct().collect(Collectors.toList());
 						if (CollectionUtils.isNotEmpty(collect)) {
@@ -6497,9 +6563,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 					// 课程后连堂状态
 					if (afterCourse.get(0).getContinuousCourse()) {
-						collect = afterCourse.subList(1, afterCourse.size()).stream()
-								.map(CourseSchedule::getId)
-								.distinct().collect(Collectors.toList());
+						collect = afterCourse.stream()
+                                .filter(o -> CourseStatusEnum.NOT_START.equals(o.getStatus()))
+                                .map(CourseSchedule::getId).distinct().collect(Collectors.toList());
 
 						if (CollectionUtils.isNotEmpty(collect)) {
 							// 关联直播间编号
@@ -6519,6 +6585,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			} catch (Exception e) {
 				log.error("getLiveCourseScheduleTime courseScheduleIds={}", collect, e);
 			}
+
 			// 连堂课直播间编号
 			liveRoomId = finalCourseSchedule.getLiveRoomId();
 		} else {
@@ -6559,11 +6626,13 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				endTime = getDateTime(next.getClassDate(), next.getStartClassTime());
 				// 如果当前课程结束时间和下一节课开始时间间隔小于5分钟,那么合并时间(修复代码合并)
 				if ((startTime.isBefore(endTime) || startTime.isEqual(endTime))
-						&& startTime.plusMinutes(Integer.parseInt(continueCourseTime) + 1).isAfter(endTime)) {
+						&& startTime.plusSeconds(Integer.parseInt(continueCourseTime) * 60 + 10).isAfter(endTime)) {
 					// 上节连堂状态
 					current.setContinuousCourse(true);
 					// 下节连堂状态
 					next.setContinuousCourse(true);
+				} else {
+					current.setContinuousCourse(false);
 				}
 			}
 		}