zouxuan %!s(int64=4) %!d(string=hai) anos
pai
achega
dd0effe931

+ 20 - 9
edu-im/edu-im-server/src/main/java/com/keao/edu/im/service/Impl/RoomServiceImpl.java

@@ -76,7 +76,7 @@ public class RoomServiceImpl implements RoomService {
         return baseResponse;
     }
 
-    /*public void exitRoom(String roomId,String userId){
+    public void exitRoom(String roomId,String userId){
         List<RoomMember> byRidAndRole = roomMemberDao.findByRidAndRole(roomId, 3);
         if(byRidAndRole != null && byRidAndRole.size() > 0){
             log.info("学员加入时,将其他学员退出房间 byRidAndRole{}",byRidAndRole);
@@ -85,17 +85,17 @@ public class RoomServiceImpl implements RoomService {
                     continue;
                 }
                 roomMemberDao.deleteUserByRidAndUid(roomId, e.getUid());
-                MemberChangedMessage msg = new MemberChangedMessage(MemberChangedMessage.Action_Leave, userId, 3);
-                msg.setUserName(e.getName());
+//                MemberChangedMessage msg = new MemberChangedMessage(MemberChangedMessage.Action_Leave, userId, 3);
+//                msg.setUserName(e.getName());
                 userDao.deleteByUid(userId);
-                try {
-                    imHelper.publishMessage(userId, roomId, msg);
-                } catch (Exception e1) {
-                    e1.printStackTrace();
-                }
+//                try {
+//                    imHelper.publishMessage(userId, roomId, msg);
+//                } catch (Exception e1) {
+//                    e1.printStackTrace();
+//                }
             }
         }
-    }*/
+    }
 
     public void joinRoomSuccess(RoomMember roomMember) throws Exception {
         String roomId = roomMember.getRid();
@@ -213,6 +213,17 @@ public class RoomServiceImpl implements RoomService {
         roomResult.setRoomId(roomId);
         if (registrationId != null){
             roomResult.setRegistrationId(registrationId);
+            List<RoomMember> byRidAndRole = roomMemberDao.findByRidAndRole(roomId, 3);
+            if(byRidAndRole != null && byRidAndRole.size() > 0){
+                log.info("学员加入时,将其他学员退出房间 byRidAndRole{}",byRidAndRole);
+                for (RoomMember e: byRidAndRole) {
+                    if (e.getUid().equals(userId)) {
+                        continue;
+                    }
+                    roomMemberDao.deleteUserByRidAndUid(roomId, e.getUid());
+                    userDao.deleteByUid(userId);
+                }
+            }
         }
         roomResult.setExamFlag(examRoom.getExamFlag());
         roomResult.setMembers(roomMemberDao.findByRid(roomId),examRoom.getShieldUserId());