diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/websocket/ChatServerHandler.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/websocket/ChatServerHandler.java index fa967bc4..3448c186 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/websocket/ChatServerHandler.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/websocket/ChatServerHandler.java @@ -140,7 +140,7 @@ public class ChatServerHandler extends SimpleChannelInboundHandler list = chatHistoryService.list(historyLambdaQueryWrapper); if (list != null && !list.isEmpty()) { - roomCounts.put(chatGroup.getId().toString(), list.size()); + roomCounts.put(loginUser.getUserId()+"+"+chatGroup.getId().toString(), list.size()); } //在遍历的同时寻找是否有系统消息房间 if (chatGroup.getMembers().contains("system")){ @@ -263,8 +263,14 @@ public class ChatServerHandler extends SimpleChannelInboundHandler channelHandlerContexts = userChannelMap.get(id.toString()); //如果满足则说明用户在线 if (channelHandlerContexts != null && !channelHandlerContexts.isEmpty()) { - //所有房间的未读消息数 - jsonObject.put("countValue", JsonUtils.toJsonString(userRoomCountMap)); + //构建所有房间的未读消息数 + HashMap temp = new HashMap<>(); + userRoomCountMap.forEachKey(0, (value) -> { + if (value.contains(id.toString())){ + temp.put(value,userRoomCountMap.get(value)); + } + }); + jsonObject.put("countValue", JsonUtils.toJsonString(temp)); //给每个通道发送对应消息 for (ChannelHandlerContext handlerContext : channelHandlerContexts) { sendMessage(handlerContext, jsonObject.toString()); @@ -342,19 +348,27 @@ public class ChatServerHandler extends SimpleChannelInboundHandler channelHandlerContexts = userChannelMap.get(userId.toString()); if (channelHandlerContexts != null && !channelHandlerContexts.isEmpty()) { //给每个通道发送对应消息 for (ChannelHandlerContext handlerContext : channelHandlerContexts) { + //同时发送所有未读消息给前端进行渲染 + HashMap temp = new HashMap<>(); + userRoomCountMap.forEachKey(0, (value) -> { + if (value.contains(userId.toString())){ + temp.put(value,userRoomCountMap.get(value)); + } + }); + jsonObject.put("countValue", temp); sendMessage(handlerContext, jsonObject.toString()); } }