shangke 2 年之前
父節點
當前提交
adc6d38f53

+ 10 - 1
mec-im/src/main/java/com/ym/controller/RoomController.java

@@ -29,7 +29,16 @@ public class RoomController{
 
     @RequestMapping(value = "/join", method = RequestMethod.POST)
     public BaseResponse joinRoom(@RequestBody ReqUserData data) throws Exception {
-        return roomService.joinRoom(data.getRoomId());
+        return roomService.joinRoom(data.getRoomId(), true);
+    }
+
+    @ApiOperation("查询网络教室信息")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "roomId", value = "房间id", required = true, dataType = "String", paramType = "query")
+    })
+    @GetMapping(value = "/info")
+    public BaseResponse getRoomInfo(@RequestParam String roomId) throws Exception {
+        return roomService.joinRoom(roomId, false);
     }
 
     @RequestMapping(value = "/signIn", method = RequestMethod.POST)

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

@@ -166,7 +166,7 @@ public class RoomServiceImpl implements RoomService {
 
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     @Override
-    public BaseResponse joinRoom(String roomId) throws Exception {
+    public BaseResponse joinRoom(String roomId, Boolean joinRoom) throws Exception {
         CheckUtils.checkArgument(roomId != null, "roomId must't be null");
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         String userId = sysUser.getId().toString();
@@ -257,10 +257,12 @@ public class RoomServiceImpl implements RoomService {
             userResult.setCamera(true);
             userResult.setHandUpOn(false);
             userResult.setJoinTime(curTime);
-            saveRoomMember(userId, sysUser.getAvatar(), userName, roomId, roleEnum.getValue(), curTime, microphone);
+            if (Optional.ofNullable(joinRoom).orElse(true)) {
+                saveRoomMember(userId, sysUser.getAvatar(), userName, roomId, roleEnum.getValue(), curTime, microphone);
+            }
         } else {
             roleEnum = RoleEnum.getEnumByValue(member.getRole());
-            if (roleEnum == RoleTeacher) {
+            if (roleEnum == RoleTeacher && Optional.ofNullable(joinRoom).orElse(true)) {
                 courseScheduleStudentPaymentDao.adjustPlayMidi(courseId, null, null);
             }
             userName = member.getName();
@@ -299,10 +301,12 @@ public class RoomServiceImpl implements RoomService {
                     .setGroupId(roomId);
         }
 
-        // 创建IM群聊
-        this.joinImGroup(roomId, courseSchedule.getActualTeacherId(), courseSchedule);
-        // RTC服务提供方
-        roomResult.setServiceProvider(Optional.ofNullable(courseSchedule.getServiceProvider()).orElse("rongCloud"));
+        if (Optional.ofNullable(joinRoom).orElse(true)) {
+            // 创建IM群聊
+            this.joinImGroup(roomId, courseSchedule.getActualTeacherId(), courseSchedule);
+            // RTC服务提供方
+            roomResult.setServiceProvider(Optional.ofNullable(courseSchedule.getServiceProvider()).orElse("rongCloud"));
+        }
 
         List<CourseScheduleStudentMusicScore> scheduleStudentMusicScores = courseScheduleStudentMusicScoreDao.queryByScoreIdAndCourseId(null, courseId, null, null, null);
         Room room = roomDao.findByRid(roomId);
@@ -712,7 +716,7 @@ public class RoomServiceImpl implements RoomService {
         // 用户退出房间多次触发调用判定
         RoomMember roomMember = roomMemberDao.findByRidAndUid(roomId, userId);
         if (Objects.isNull(roomMember)) {
-            log.error("leaveRoomSuccess: REPEATED_EXECUTION roomId={}, userId={}, deviceNum={}", roomId, userId, deviceNum);
+            log.warn("leaveRoomSuccess: REPEATED_EXECUTION roomId={}, userId={}, deviceNum={}", roomId, userId, deviceNum);
             return;
         }
         log.info("leaveRoomSuccess: roomId={}, userId={}, deviceNum={}", roomId, userId, deviceNum);
@@ -767,10 +771,7 @@ public class RoomServiceImpl implements RoomService {
             updateDisplay(roomId, userId, "", 0);
         }
 
-        List<String> collect = roomMemberDao.findByRid(roomId).stream()
-                .map(RoomMember::getUid).distinct().collect(Collectors.toList());
-        int roomMembers = roomMemberDao.countByRid(roomId);
-        if (roomMembers <= 1 || CollectionUtils.size(collect) <= 1) {
+        if (roomMemberDao.countByRid(roomId) <= 1) {
             // 删除群组用户信息
             roomMemberDao.deleteUserByRidAndUid(roomId, userId);
             // 删除群组信息
@@ -781,8 +782,7 @@ public class RoomServiceImpl implements RoomService {
             this.dismissImGroup(userId, roomId, courseSchedule.getServiceProvider());
             //关闭所有曲目播放
             courseScheduleStudentMusicScoreDao.closePlayStatus(courseSchedule.getId(), null, null);
-            log.info("leaveRoomSuccess dismiss the room: {}, userId: {}, userIds={}, roomMembers={}, role={}", roomId, userId,
-                    JSON.toJSONString(collect), roomMembers, roleEnum.name());
+            log.info("leaveRoomSuccess dismiss the room: {}, userId: {}, role={}", roomId, userId, roleEnum.name());
         } else {
             roomMemberDao.deleteUserByRidAndUid(roomId, userId);
 

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

@@ -12,7 +12,7 @@ import java.util.List;
  */
 public interface RoomService {
     //everyone
-    BaseResponse joinRoom(String roomId) throws Exception;
+    BaseResponse joinRoom(String roomId, Boolean joinRoom) throws Exception;
 
     Integer getCurrentCourseId(String roomId);