From babfe9fb48590eca4ca08a8f727b4a474daf8a36 Mon Sep 17 00:00:00 2001 From: wangys <3401275564@qq.com> Date: Tue, 30 Dec 2025 20:55:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=9A=E8=AE=AE=E9=97=AE=E9=A2=98=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workcase/listener/ChatMessageListener.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/urbanLifelineServ/workcase/src/main/java/org/xyzh/workcase/listener/ChatMessageListener.java b/urbanLifelineServ/workcase/src/main/java/org/xyzh/workcase/listener/ChatMessageListener.java index 3d45502d..1766832b 100644 --- a/urbanLifelineServ/workcase/src/main/java/org/xyzh/workcase/listener/ChatMessageListener.java +++ b/urbanLifelineServ/workcase/src/main/java/org/xyzh/workcase/listener/ChatMessageListener.java @@ -67,6 +67,21 @@ public class ChatMessageListener implements MessageListener { // 转发到聊天室列表订阅者,前端刷新列表状态 messagingTemplate.convertAndSend("/topic/chat/list-update", chatMessage); logger.debug("列表更新已转发到STOMP: /topic/chat/list-update"); + + // 同时转发到对应聊天室频道,确保聊天窗口也能收到消息 + String roomId = chatMessage.getRoomId(); + if (roomId != null && !roomId.isEmpty()) { + // 查询完整的VO数据 + ChatRoomMessageVO messageVO = chatMessageMapper.selectChatMessageVOById(chatMessage.getMessageId()); + if (messageVO != null) { + messagingTemplate.convertAndSend("/topic/chat/" + roomId, messageVO); + logger.debug("列表更新消息同时转发到聊天室: /topic/chat/{}", roomId); + } else { + // 如果查不到VO(可能事务未提交),直接用DTO转发 + logger.warn("未找到消息VO,使用DTO转发: messageId={}", chatMessage.getMessageId()); + messagingTemplate.convertAndSend("/topic/chat/" + roomId, chatMessage); + } + } } } catch (Exception e) { logger.error("处理Redis消息失败", e);