销毁聊天室时,清理聊天室相关数据

This commit is contained in:
heavyrain2012
2021-12-22 10:25:31 +08:00
parent 29a53955b6
commit f96f202b58
@@ -780,6 +780,15 @@ public class MemoryMessagesStore implements IMessagesStore {
return builder.build(); return builder.build();
} }
public void clearChatroomMembers(String chatroomId) {
MultiMap<String, UserClientEntry> chatroomMembers = m_Server.getHazelcastInstance().getMultiMap(CHATROOM_MEMBER_IDS);
IMap<String, String> userChatroomMap = m_Server.getHazelcastInstance().getMap(USER_CHATROOM);
chatroomMembers.get(chatroomId).forEach(userClientEntry -> {
userChatroomMap.remove(userClientEntry.userId);
});
chatroomMembers.remove(chatroomId);
}
@Override @Override
public Collection<UserClientEntry> getChatroomMembers(String chatroomId) { public Collection<UserClientEntry> getChatroomMembers(String chatroomId) {
MultiMap<String, UserClientEntry> chatroomMembers = m_Server.getHazelcastInstance().getMultiMap(CHATROOM_MEMBER_IDS); MultiMap<String, UserClientEntry> chatroomMembers = m_Server.getHazelcastInstance().getMultiMap(CHATROOM_MEMBER_IDS);
@@ -2573,6 +2582,7 @@ public class MemoryMessagesStore implements IMessagesStore {
IMap<String, WFCMessage.ChatroomInfo> chatroomInfoMap = hzInstance.getMap(CHATROOMS); IMap<String, WFCMessage.ChatroomInfo> chatroomInfoMap = hzInstance.getMap(CHATROOMS);
WFCMessage.ChatroomInfo room = chatroomInfoMap.get(chatroomId); WFCMessage.ChatroomInfo room = chatroomInfoMap.get(chatroomId);
if (room != null) { if (room != null) {
clearChatroomMembers(chatroomId);
room = room.toBuilder().setUpdateDt(System.currentTimeMillis()).setState(ProtoConstants.ChatroomState.Chatroom_State_End).build(); room = room.toBuilder().setUpdateDt(System.currentTimeMillis()).setState(ProtoConstants.ChatroomState.Chatroom_State_End).build();
chatroomInfoMap.put(chatroomId, room); chatroomInfoMap.put(chatroomId, room);
callbackChatroomInfoUpdateEvent(chatroomId, Chatroom_Event_Destroy); callbackChatroomInfoUpdateEvent(chatroomId, Chatroom_Event_Destroy);