瀏覽代碼

Merge remote-tracking branch 'origin/saas' into saas

zouxuan 1 年之前
父節點
當前提交
0fe7d2a1da
共有 1 個文件被更改,包括 22 次插入10 次删除
  1. 22 10
      mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

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

@@ -156,12 +156,17 @@ public class RoomServiceImpl implements RoomService {
         return Integer.parseInt(roomId);
         return Integer.parseInt(roomId);
     }
     }
 
 
-    @Transactional(rollbackFor = Exception.class)
-    public String getCloseNetworkRoomTime(CourseSchedule courseSchedule, String continueCourseTime) {
+    public String getCloseNetworkRoomTime(CourseSchedule courseSchedule, String continueCourseTime, RoomResult roomResult) {
         String autoCloseNetworkRoomTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.COURSE_AFTER_BUFFER_TIME, courseSchedule.getTenantId());
         String autoCloseNetworkRoomTime = sysTenantConfigService.getTenantConfigValue(SysConfigService.COURSE_AFTER_BUFFER_TIME, courseSchedule.getTenantId());
         if (StringUtils.isEmpty(autoCloseNetworkRoomTime)) {
         if (StringUtils.isEmpty(autoCloseNetworkRoomTime)) {
             autoCloseNetworkRoomTime = "15";
             autoCloseNetworkRoomTime = "15";
         }
         }
+        // 课程结束后多少分钟关闭网络教室
+        // roomResult.setAutoCloseNetworkRoomTime(autoCloseNetworkRoomTime);
+
+        // 当前课剩余时长
+        int surplusTime = DateUtil.secondsBetween(new Date(), courseSchedule.getEndClassTime());
+
         CourseSchedule schedule = courseSchedule;
         CourseSchedule schedule = courseSchedule;
         //如果当前课程是连堂课,那么获取第一节课的课程编号
         //如果当前课程是连堂课,那么获取第一节课的课程编号
         while (true) {
         while (true) {
@@ -169,11 +174,14 @@ public class RoomServiceImpl implements RoomService {
             String endClassTime = DateUtil.format(schedule.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
             String endClassTime = DateUtil.format(schedule.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
             schedule = courseScheduleDao.getLastCourse(schedule.getClassGroupId(), classDate + " " + endClassTime, schedule.getActualTeacherId(), continueCourseTime);
             schedule = courseScheduleDao.getLastCourse(schedule.getClassGroupId(), classDate + " " + endClassTime, schedule.getActualTeacherId(), continueCourseTime);
             if (schedule != null) {
             if (schedule != null) {
-                autoCloseNetworkRoomTime = DateUtil.minutesBetween(new Date(), schedule.getEndClassTime()) + "";
+                surplusTime = DateUtil.secondsBetween(new Date(), schedule.getEndClassTime());
             } else {
             } else {
                 break;
                 break;
             }
             }
         }
         }
+        //获取当前课程剩余时长
+        roomResult.setSurplusTime(Math.max(surplusTime, 0));
+
         return autoCloseNetworkRoomTime;
         return autoCloseNetworkRoomTime;
     }
     }
 
 
@@ -205,7 +213,8 @@ public class RoomServiceImpl implements RoomService {
         RoomResult roomResult = new RoomResult();
         RoomResult roomResult = new RoomResult();
         // 直播间编号
         // 直播间编号
         roomResult.setLiveRoomId(courseSchedule.getLiveRoomId());
         roomResult.setLiveRoomId(courseSchedule.getLiveRoomId());
-        roomResult.setAutoCloseNetworkRoomTime(this.getCloseNetworkRoomTime(courseSchedule, continueCourseTime));
+        // 连堂课剩余时长和关闭网络教室时间
+        roomResult.setAutoCloseNetworkRoomTime(this.getCloseNetworkRoomTime(courseSchedule, continueCourseTime, roomResult));
         CourseSchedule schedule = courseSchedule;
         CourseSchedule schedule = courseSchedule;
         //如果当前课程是连堂课,那么获取第一节课的课程编号
         //如果当前课程是连堂课,那么获取第一节课的课程编号
         while (true) {
         while (true) {
@@ -219,6 +228,9 @@ public class RoomServiceImpl implements RoomService {
                 break;
                 break;
             }
             }
         }
         }
+        //获取当前课程剩余时长
+        // roomResult.setSurplusTime(DateUtil.secondsBetween(new Date(), schedule.getEndClassTime()));
+
         Long courseId = Long.parseLong(roomId);
         Long courseId = Long.parseLong(roomId);
         // 默认获取首节课的课程信息
         // 默认获取首节课的课程信息
         if (Objects.isNull(schedule)) {
         if (Objects.isNull(schedule)) {
@@ -244,8 +256,6 @@ public class RoomServiceImpl implements RoomService {
 
 
         // RTC服务提供方
         // RTC服务提供方
         roomResult.setServiceProvider(Optional.ofNullable(courseSchedule.getServiceProvider()).orElse("rongCloud"));
         roomResult.setServiceProvider(Optional.ofNullable(courseSchedule.getServiceProvider()).orElse("rongCloud"));
-        //获取当前课程剩余时长
-        roomResult.setSurplusTime(DateUtil.secondsBetween(new Date(), courseSchedule.getEndClassTime()));
         roomResult.setRoomId(roomId);
         roomResult.setRoomId(roomId);
 
 
         // 网络课形式:RTC房间,直播间
         // 网络课形式:RTC房间,直播间
@@ -521,7 +531,7 @@ public class RoomServiceImpl implements RoomService {
             userResult.setHandUpOn(false);
             userResult.setHandUpOn(false);
             userResult.setJoinTime(curTime);
             userResult.setJoinTime(curTime);
             if (Optional.ofNullable(joinRoom).orElse(true)) {
             if (Optional.ofNullable(joinRoom).orElse(true)) {
-                saveRoomMember(userId, sysUser.getAvatar(), userName, roomId, roleEnum.getValue(), curTime, microphone);
+                member = saveRoomMember(userId, sysUser.getAvatar(), userName, roomId, roleEnum.getValue(), curTime, microphone);
             }
             }
         } else {
         } else {
             roleEnum = RoleEnum.getEnumByValue(member.getRole());
             roleEnum = RoleEnum.getEnumByValue(member.getRole());
@@ -564,9 +574,11 @@ public class RoomServiceImpl implements RoomService {
             if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(roomResult.getServiceProvider())) {
             if (TencentCloudRTCPlugin.PLUGIN_NAME.equals(roomResult.getServiceProvider())) {
 
 
                 // 网络教室人员信息
                 // 网络教室人员信息
-                RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
-                // 发送消息
-                sendDisplayMessage(display, roomMember);
+//                RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
+                if (Objects.nonNull(member)) {
+                    // 发送消息
+                    sendDisplayMessage(display, member);
+                }
             }
             }
         } else {
         } else {
             ExamSongDownloadData examSongDownloadData;
             ExamSongDownloadData examSongDownloadData;