|
@@ -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, "");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|