瀏覽代碼

Merge remote-tracking branch 'origin/zx-06-15-live' into zx-06-15-live

zouxuan 2 年之前
父節點
當前提交
8fa4a4fb42

+ 86 - 61
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -1539,7 +1539,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
             //课程结束时间必须在21:00之前
             if(DateUtil.getHour(existCours.getEndClassTime()) > 20 && DateUtil.getMinute(existCours.getEndClassTime()) > 0){
-            	throw new BizException("课程结束时间不能超过21:00,请重新调整上课时间");
+				throw new BizException("课程结束时间不能超过21:00,请重新调整上课时间");
             }
 
 			if(!DateUtil.isSameDay(existCours.getStartClassTime(), existCours.getEndClassTime())){
@@ -6108,69 +6108,87 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 	@Override
 	public void sendChatRoomMessage(List<CourseSchedule> courseSchedules) {
-		// 直播课消息推送
-		ExecutorService executor = Executors.newCachedThreadPool();
-		CompletableFuture.runAsync(() ->
-			courseSchedules.parallelStream().filter(e->e.getGroupType() == LIVE).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;
-				}
+		List<CourseSchedule> collect = courseSchedules.stream()
+				.filter(x -> x.getGroupType() == LIVE).collect(Collectors.toList());
 
-				// 直播课关联直播间编号
-				String liveRoomId = getCourseScheduleLiveRoomId(newCourseSchedule, continueCourseTime, Lists.newArrayList(), Lists.newArrayList(), updateFlag);
+		for (CourseSchedule item : collect) {
 
-				if (StringUtils.isBlank(liveRoomId)) {
-					liveRoomId = item.getLiveRoomId();
-				}
+			// 是否是连堂课
+			String continueCourseTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.ONLINE_CONTINUE_COURSE_TIME, item.getTenantId());
+			if (StringUtils.isEmpty(continueCourseTime)) {
+				continueCourseTime = "5";
+			}
 
-				ImLiveBroadcastRoom liveRoom = imLiveBroadcastRoomService.getByRoomUid(liveRoomId);
-				if (Objects.isNull(liveRoom)) {
-					log.warn("liveRoom sendChatRoomMessage is null, liveRoomId:{}", liveRoomId);
-					return;
-				}
+			// 查询最新课程信息
+			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;
+			}
+
+			List<CourseSchedule> newCourseSchedules = Lists.newArrayList();
+			// 直播课关联直播间编号
+			String liveRoomId = getCourseScheduleLiveRoomId(newCourseSchedule, continueCourseTime, newCourseSchedules, 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:{}, updateFlag={}, item.liveId={}", liveRoomId,
+						updateFlag, item.getLiveRoomId());
+
+				/*boolean anyMatch = newCourseSchedules.stream().anyMatch(x -> x.getId().longValue() == x.getId())
+						&& newCourseSchedules.size() > 1;
+				if (!updateFlag && (Optional.ofNullable(item.getContinuousCourse()).orElse(false) || anyMatch)) {
+					throw new BizException("课程信息已变更,请重新操作");
+				}*/
+				return;
+			}
+
+			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);
+			}
+
+		}
+
+		// 直播课消息推送
+		/*ExecutorService executor = Executors.newCachedThreadPool();
+		CompletableFuture.runAsync(() ->
+			courseSchedules.parallelStream().filter(e->e.getGroupType() == LIVE).forEach(item -> {
 
-				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);
-				}
 			}),executor
 		);
-		executor.shutdown();
+		executor.shutdown();*/
 	}
 
 	@Override
@@ -6592,7 +6610,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()))
+                                //.filter(o -> CourseStatusEnum.NOT_START.equals(o.getStatus()))
 								.map(CourseSchedule::getId)
 								.distinct().collect(Collectors.toList());
 						if (CollectionUtils.isNotEmpty(collect)) {
@@ -6604,15 +6622,22 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 					// 课程后连堂状态
 					if (afterCourse.get(0).getContinuousCourse()) {
 						collect = afterCourse.stream()
-                                .filter(o -> CourseStatusEnum.NOT_START.equals(o.getStatus()))
+                                //.filter(o -> CourseStatusEnum.NOT_START.equals(o.getStatus()))
                                 .map(CourseSchedule::getId).distinct().collect(Collectors.toList());
 
 						if (CollectionUtils.isNotEmpty(collect)) {
-							// 关联直播间编号
-							courseScheduleDao.batchUpdateLiveRoomId(collect, "");
 							// 更新连堂课状态
 							courseScheduleDao.batchUpdateContinuousCourse(collect, false);
 						}
+
+						collect = afterCourse.stream()
+								.filter(o -> CourseStatusEnum.NOT_START.equals(o.getStatus()))
+								.map(CourseSchedule::getId).distinct().collect(Collectors.toList());
+
+						if (CollectionUtils.isNotEmpty(collect)) {
+							// 关联直播间编号
+							courseScheduleDao.batchUpdateLiveRoomId(collect, "");
+						}
 					}
 				}
 

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -5133,7 +5133,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
         DateTime time = DateTime.parse(liveStartTime, DateTimeFormat.forPattern(DateUtil.DEFAULT_PATTERN + " " + DateUtil.EXPANDED_TIME_FORMAT));
 
-        String roomUid = "LIVE-" + roomId + "-" + courseSchedule.getActualTeacherId().toString() + time.toDate().getTime();
+        String roomUid = "LIVE-" + roomId + "-" + courseSchedule.getActualTeacherId().toString()+"-" + time.toDate().getTime();
         ImLiveBroadcastRoom room = imLiveBroadcastRoomService.getByRoomUid(roomUid);
         if (Objects.nonNull(room)) {
             liveRoom.setId(room.getId());

+ 1 - 1
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -400,7 +400,7 @@ public class RoomServiceImpl implements RoomService {
 
         DateTime time = DateTime.parse(liveStartTime, DateTimeFormat.forPattern(DateUtil.DEFAULT_PATTERN + " " + DateUtil.EXPANDED_TIME_FORMAT));
 
-        String roomUid = "LIVE-" + roomId + "-" + courseSchedule.getActualTeacherId().toString() + time.toDate().getTime();
+        String roomUid = "LIVE-" + roomId + "-" + courseSchedule.getActualTeacherId().toString()+"-" + time.toDate().getTime();
         ImLiveBroadcastRoom liveRoom = JSON.parseObject(vipGroup.getLiveConfigJson(), ImLiveBroadcastRoom.class);
 
         try {