shangke 1 year ago
parent
commit
066e77ea20

+ 111 - 173
.idea/httpRequests/http-requests-log.http

@@ -1,3 +1,114 @@
+GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
+Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-15T221721.200.json
+
+###
+
+GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
+Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-15T221523.200.json
+
+###
+
+GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
+Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-15T221236.200.json
+
+###
+
+GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
+Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-15T220649.200.json
+
+###
+
+GET http://127.0.0.1:9002/teacherCourseSchedule/getCourseSchedulesWithDate?date=2023-06-05 00:00:00
+Content-Type: application/json
+Authorization: bearer 4d8e23a1-3acd-42e4-a1ca-b4d595506d98
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-15T220555.200.json
+
+###
+
+GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
+Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-15T220546.200.json
+
+###
+
+GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
+Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-15T220439.200.json
+
+###
+
+GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
+Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-15T220236.200.json
+
+###
+
+GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
+Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-15T215903.200.json
+
+###
+
+GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
+Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-15T215426.200.json
+
+###
+
+GET http://127.0.0.1:9002/teacherCourseSchedule/liveCourseScheduleTime?courseScheduleId=2548
+Authorization: bearer e70c68c9-05e3-4502-aed4-f7001a0e2766
+Proxy-Connection: Keep-Alive
+User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
+Accept-Encoding: br,deflate,gzip,x-gzip
+
+<> 2023-06-15T215131.200.json
+
+###
+
 POST https://online.lexiaoya.cn/api-backend/open/schoolTeacherStudent/importPlan?fileUrl=https://polestar-oss.oss-cn-shenzhen.aliyuncs.com/assets/excel/0614/0614单簧管导入表.xlsx
 Content-Length: 0
 Connection: Keep-Alive
@@ -507,176 +618,3 @@ Accept-Encoding: br,deflate,gzip,x-gzip
 
 ###
 
-GET http://127.0.0.1:9002/teacherCourseSchedule/findCourseAttendanceDetailHeadInfo?courseScheduleId=2002
-authorization: bearer 97fd8e85-bb3c-4967-8a07-47c44957f94a
-Content-Type: application/json
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-08T162615.200.json
-
-###
-
-POST http://127.0.0.1:9002/teacherCourseSchedule/liveCoursePage
-authorization: bearer fe63240c-4f7d-4b67-90f8-7d51eaafdfb7
-Content-Type: application/json
-Content-Length: 152
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "page": 1,
-  "rows": 10,
-//  "startTime": "2023-06-06 10:14:57",
-//  "endTime": "2023-06-08 10:14:57",
-//  "search": "",
-//  "status": "NOT_START"
-}
-
-<> 2023-06-08T162147.200.json
-
-###
-
-POST http://127.0.0.1:9002/teacherAttendance/getLiveCurrentCourseStudents
-authorization: bearer 97fd8e85-bb3c-4967-8a07-47c44957f94a
-Content-Type: application/json
-Content-Length: 70
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "courseScheduleId": 2001,
-  "status": "PURCHASE",
-  "search": ""
-}
-
-<> 2023-06-08T162015.200.json
-
-###
-
-POST http://127.0.0.1:9002/teacherAttendance/getLiveCurrentCourseStudents
-authorization: bearer 97fd8e85-bb3c-4967-8a07-47c44957f94a
-Content-Type: application/json
-Content-Length: 67
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "courseScheduleId": 2001,
-  "status": "SHARE",
-  "search": ""
-}
-
-<> 2023-06-08T161954.200.json
-
-###
-
-GET http://127.0.0.1:8005/task/closeLiveCourseRoom
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-08T161900.200.json
-
-###
-
-GET http://127.0.0.1:8005/task/closeLiveCourseRoom
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-08T161723.200.json
-
-###
-
-GET http://127.0.0.1:8005/task/closeLiveCourseRoom
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-<> 2023-06-08T161420.200.json
-
-###
-
-POST http://127.0.0.1:9002/teacherCourseSchedule/liveCoursePage
-authorization: bearer 1238347b-3b06-444e-9d35-d122639121ad
-Content-Type: application/json
-Content-Length: 152
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "page": 1,
-  "rows": 10,
-//  "startTime": "2023-06-06 10:14:57",
-//  "endTime": "2023-06-08 10:14:57",
-//  "search": "",
-//  "status": "NOT_START"
-}
-
-<> 2023-06-08T155851.200.json
-
-###
-
-POST http://127.0.0.1:9002/teacherCourseSchedule/liveCoursePage
-authorization: bearer 1238347b-3b06-444e-9d35-d122639121ad
-Content-Type: application/json
-Content-Length: 152
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "page": 1,
-  "rows": 10,
-//  "startTime": "2023-06-06 10:14:57",
-//  "endTime": "2023-06-08 10:14:57",
-//  "search": "",
-//  "status": "NOT_START"
-}
-
-<> 2023-06-08T155845.200.json
-
-###
-
-POST http://127.0.0.1:9002/teacherAttendance/getLiveCurrentCourseStudents
-authorization: bearer 97fd8e85-bb3c-4967-8a07-47c44957f94a
-Content-Type: application/json
-Content-Length: 70
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "courseScheduleId": 2001,
-//  "status": "NORMAL",
-  "search": ""
-}
-
-<> 2023-06-08T155815.200.json
-
-###
-
-POST http://127.0.0.1:9002/teacherAttendance/getLiveCurrentCourseStudents
-authorization: bearer 97fd8e85-bb3c-4967-8a07-47c44957f94a
-Content-Type: application/json
-Content-Length: 70
-Connection: Keep-Alive
-User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.6)
-Accept-Encoding: br,deflate,gzip,x-gzip
-
-{
-  "courseScheduleId": 2001,
-//  "status": "NORMAL",
-  "search": ""
-}
-
-<> 2023-06-08T155623.200.json
-
-###
-

+ 103 - 84
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -3560,71 +3560,65 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		// 直播课消息推送
 		if (CollectionUtils.isNotEmpty(liveCourseSchedules)) {
 
-			CompletableFuture.runAsync(() ->
-
-				liveCourseSchedules.parallelStream().forEach(item -> {
-
-					// 是否是连堂课
-					String continueCourseTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.ONLINE_CONTINUE_COURSE_TIME, item.getTenantId());
-					if (StringUtils.isEmpty(continueCourseTime)) {
-						continueCourseTime = "5";
-					}
-
-					// 查询最新课程信息
-					CourseSchedule newCourseSchedule = courseScheduleDao.get(item.getId());
-					// 连堂课更新标识
-					boolean updateFlag = true;
-					// 新课时间
-					Date newCourseScheduleDate = getDateTime(newCourseSchedule.getClassDate(), newCourseSchedule.getStartClassTime()).toDate();
-					Date oldCourseScheduleDate = getDateTime(item.getClassDate(), item.getStartClassTime()).toDate();
-					if (newCourseScheduleDate.getTime() > oldCourseScheduleDate.getTime()) {
-						newCourseSchedule = item;
-						// 更新标识
-						updateFlag = false;
-					}
-
-					// 直播课关联直播间编号
-					String liveRoomId = getCourseScheduleLiveRoomId(newCourseSchedule, continueCourseTime, Lists.newArrayList(), Lists.newArrayList(), updateFlag);
-
-					if (StringUtils.isBlank(liveRoomId)) {
-						liveRoomId = item.getLiveRoomId();
-					}
-
-					ImLiveBroadcastRoom liveRoom = imLiveBroadcastRoomService.getByRoomUid(liveRoomId);
-					if (Objects.isNull(liveRoom)) {
-						log.warn("liveRoom sendChatRoomMessage is null, liveRoomId:{}", liveRoomId);
-						return;
-					}
-
-					// 重置连堂课顺序
+			liveCourseSchedules.parallelStream().forEach(item -> {
 
+				// 是否是连堂课
+				String continueCourseTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.ONLINE_CONTINUE_COURSE_TIME, item.getTenantId());
+				if (StringUtils.isEmpty(continueCourseTime)) {
+					continueCourseTime = "5";
+				}
 
-					try {
-						LivePluginService pluginService = livePluginContext.getPluginService(liveRoom.getServiceProvider());
+				// 查询最新课程信息
+				CourseSchedule newCourseSchedule = courseScheduleDao.get(item.getId());
+				// 连堂课更新标识
+				boolean updateFlag = true;
+				// 新课时间
+				Date newCourseScheduleDate = getDateTime(newCourseSchedule.getClassDate(), newCourseSchedule.getStartClassTime()).toDate();
+				Date oldCourseScheduleDate = getDateTime(item.getClassDate(), item.getStartClassTime()).toDate();
+				if (newCourseScheduleDate.getTime() > oldCourseScheduleDate.getTime()) {
+					newCourseSchedule = item;
+					// 更新标识
+					updateFlag = false;
+				}
 
-						LiveRoomMessage message = new LiveRoomMessage();
-						message.setIsIncludeSender(1);
-						message.setFromUserId(newCourseSchedule.getActualTeacherId().toString());
-						message.setToChatRoomId(liveRoom.getRoomUid());
-						message.setObjectName(LiveRoomMessage.LIVE_STATUS_CHANGE);
+				// 直播课关联直播间编号
+				String liveRoomId = getCourseScheduleLiveRoomId(newCourseSchedule, continueCourseTime, Lists.newArrayList(), Lists.newArrayList(), updateFlag);
 
-						// 发送用户信息
-						LiveRoomMessage.MessageUser messageUser = LiveRoomMessage.MessageUser.builder()
-								.sendUserId("")
-								.sendUserName("")
-								.avatarUrl("")
-								.build();
+				if (StringUtils.isBlank(liveRoomId)) {
+					liveRoomId = item.getLiveRoomId();
+				}
 
-						message.setContent(LiveRoomMessage.MessageContent.builder()
-								.sendUserInfo(messageUser).build());
+				ImLiveBroadcastRoom liveRoom = imLiveBroadcastRoomService.getByRoomUid(liveRoomId);
+				if (Objects.isNull(liveRoom)) {
+					log.warn("liveRoom sendChatRoomMessage is null, liveRoomId:{}", liveRoomId);
+					return;
+				}
 
-						pluginService.sendChatRoomMessage(message);
-						log.info("liveRoom sendChatRoomMessage success, liveRoomId:{}", liveRoomId);
-					} catch (Exception e) {
-						log.error("liveRoom sendChatRoomMessage error", e);
-					}
-				})
-			);
+				try {
+					LivePluginService pluginService = livePluginContext.getPluginService(liveRoom.getServiceProvider());
+
+					LiveRoomMessage message = new LiveRoomMessage();
+					message.setIsIncludeSender(1);
+					message.setFromUserId(newCourseSchedule.getActualTeacherId().toString());
+					message.setToChatRoomId(liveRoom.getRoomUid());
+					message.setObjectName(LiveRoomMessage.LIVE_STATUS_CHANGE);
+
+					// 发送用户信息
+					LiveRoomMessage.MessageUser messageUser = LiveRoomMessage.MessageUser.builder()
+							.sendUserId("")
+							.sendUserName("")
+							.avatarUrl("")
+							.build();
+
+					message.setContent(LiveRoomMessage.MessageContent.builder()
+							.sendUserInfo(messageUser).build());
+
+					pluginService.sendChatRoomMessage(message);
+					log.info("liveRoom sendChatRoomMessage success, liveRoomId:{}", liveRoomId);
+				} catch (Exception e) {
+					log.error("liveRoom sendChatRoomMessage error", e);
+				}
+			});
 
 		}
 		return BaseController.succeed();
@@ -6379,6 +6373,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			if (item.getId().longValue() == courseSchedule.getId()) {
 				continue;
 			}
+			// 重置连堂状态
+			item.setContinuousCourse(false);
 
 			schedule = JSON.parseObject(JSON.toJSONString(item), CourseSchedule.class);
 			if (item.getEndClassTime().getTime() <= courseSchedule.getStartClassTime().getTime()) {
@@ -6390,6 +6386,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			}
 		}
 
+		courseSchedule.setContinuousCourse(false);
 		// 当前课程之前连堂课
 		beforeCourse.add(JSON.parseObject(JSON.toJSONString(courseSchedule), CourseSchedule.class));
 		// 当前课程之后连堂课
@@ -6436,43 +6433,65 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 			// 获取连堂课第一节信息
 			CourseSchedule finalCourseSchedule = newCourseSchedules.get(0);
-			CompletableFuture.runAsync(() -> {
 
-				List<Long> collect = newCourseSchedules.stream()
-						.map(CourseSchedule::getId)
-						.distinct().collect(Collectors.toList());
-				try {
+			List<Long> collect = newCourseSchedules.stream()
+					.map(CourseSchedule::getId)
+					.distinct().collect(Collectors.toList());
+			try {
 
-					if (Optional.ofNullable(updateFlag).orElse(true)) {
-						// 关联直播间编号
-						courseScheduleDao.batchUpdateLiveRoomId(collect, finalCourseSchedule.getLiveRoomId());
-					}
+				if (Optional.ofNullable(updateFlag).orElse(true)) {
+					// 关联直播间编号
+					courseScheduleDao.batchUpdateLiveRoomId(collect, finalCourseSchedule.getLiveRoomId());
+				}
+
+				if (CollectionUtils.size(collect) > 1) {
+					collect = newCourseSchedules.subList(0, newCourseSchedules.size() - 1).stream()
+							.map(CourseSchedule::getId)
+							.distinct().collect(Collectors.toList());
 
-					if (CollectionUtils.size(collect) > 1) {
-						collect = newCourseSchedules.subList(0, newCourseSchedules.size() - 1).stream()
+					// 更新连堂课状态
+					courseScheduleDao.batchUpdateContinuousCourse(collect, true);
+				}
+
+				if (!Optional.ofNullable(updateFlag).orElse(true)) {
+
+					// 课程连堂状态
+					if (beforeCourse.get(beforeCourse.size() - 1).getContinuousCourse()) {
+
+						int size = beforeCourse.size();
+						collect = beforeCourse.subList(size - 2, size).stream()
 								.map(CourseSchedule::getId)
 								.distinct().collect(Collectors.toList());
-
-						// 更新连堂课状态
-						courseScheduleDao.batchUpdateContinuousCourse(collect, true);
+						if (CollectionUtils.isNotEmpty(collect)) {
+							// 更新连堂课状态
+							courseScheduleDao.batchUpdateContinuousCourse(collect, false);
+						}
 					}
 
-					if (!Optional.ofNullable(updateFlag).orElse(true)) {
-						// 更新连堂课状态
-						courseScheduleDao.batchUpdateContinuousCourse(Lists.newArrayList(courseSchedule.getId()), false);
-					}
+					// 课程后连堂状态
+					if (afterCourse.get(0).getContinuousCourse()) {
+						collect = afterCourse.subList(1, afterCourse.size()).stream()
+								.map(CourseSchedule::getId)
+								.distinct().collect(Collectors.toList());
 
-					// 更新连堂课状态,最后一节课重置
-					CourseSchedule lastCourseSchedule = newCourseSchedules.get(newCourseSchedules.size() - 1);
-					if (Objects.nonNull(lastCourseSchedule)) {
-						courseScheduleDao.batchUpdateContinuousCourse(Lists.newArrayList(lastCourseSchedule.getId()), false);
+						if (CollectionUtils.isNotEmpty(collect)) {
+							// 关联直播间编号
+							courseScheduleDao.batchUpdateLiveRoomId(collect, "");
+							// 更新连堂课状态
+							courseScheduleDao.batchUpdateContinuousCourse(collect, false);
+						}
 					}
+				}
 
-				} catch (Exception e) {
-				    log.error("getLiveCourseScheduleTime courseScheduleIds={}", collect, e);
+				// 更新连堂课状态,最后一节课重置
+				CourseSchedule lastCourseSchedule = newCourseSchedules.get(newCourseSchedules.size() - 1);
+				if (Objects.nonNull(lastCourseSchedule)) {
+					courseScheduleDao.batchUpdateContinuousCourse(Lists.newArrayList(lastCourseSchedule.getId()), false);
 				}
 
-			});
+			} catch (Exception e) {
+				log.error("getLiveCourseScheduleTime courseScheduleIds={}", collect, e);
+			}
 			// 连堂课直播间编号
 			liveRoomId = finalCourseSchedule.getLiveRoomId();
 		} else {