From c328524c9f08300328b0c6ea2efc8019f858f2b1 Mon Sep 17 00:00:00 2001 From: xsx <825657193@qq.com> Date: Sun, 2 Nov 2025 17:08:32 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=B6=88=E6=81=AF=E9=80=81=E8=BE=BE?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=BC=82=E5=B8=B8=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../implatform/listener/PrivateMessageListener.java | 12 ++++++++---- .../service/impl/PrivateMessageServiceImpl.java | 6 +++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/im-platform/src/main/java/com/bx/implatform/listener/PrivateMessageListener.java b/im-platform/src/main/java/com/bx/implatform/listener/PrivateMessageListener.java index d75ab86..ba61cd2 100644 --- a/im-platform/src/main/java/com/bx/implatform/listener/PrivateMessageListener.java +++ b/im-platform/src/main/java/com/bx/implatform/listener/PrivateMessageListener.java @@ -26,19 +26,23 @@ public class PrivateMessageListener implements MessageListener @Lazy @Autowired private PrivateMessageService privateMessageService; + @Override public void process(List> results) { Set messageIds = new HashSet<>(); - for(IMSendResult result : results){ + for (IMSendResult result : results) { PrivateMessageVO messageInfo = result.getData(); // 更新消息状态,这里只处理成功消息,失败的消息继续保持未读状态 if (result.getCode().equals(IMSendCode.SUCCESS.code()) && !Objects.isNull(messageInfo.getId())) { - messageIds.add(messageInfo.getId()); - log.info("消息送达,消息id:{},发送者:{},接收者:{},终端:{}", messageInfo.getId(), result.getSender().getId(), result.getReceiver().getId(), result.getReceiver().getTerminal()); + if (result.getReceiver().getId().equals(messageInfo.getRecvId())) { + messageIds.add(messageInfo.getId()); + log.info("消息送达,消息id:{},发送者:{},接收者:{},终端:{}", messageInfo.getId(), + result.getSender().getId(), result.getReceiver().getId(), result.getReceiver().getTerminal()); + } } } // 批量修改状态 - if(CollUtil.isNotEmpty(messageIds)){ + if (CollUtil.isNotEmpty(messageIds)) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.lambda().in(PrivateMessage::getId, messageIds) .eq(PrivateMessage::getStatus, MessageStatus.PENDING.code()) diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java index 24c4972..3401f8a 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java @@ -189,9 +189,9 @@ public class PrivateMessageServiceImpl extends ServiceImpl messages = this.list(wrapper); // 更新消息为送达状态 - List messageIds = - messages.stream().filter(m -> m.getStatus().equals(MessageStatus.PENDING.code())).map(PrivateMessage::getId) - .collect(Collectors.toList()); + List messageIds = messages.stream().filter(m -> m.getRecvId().equals(session.getUserId())) + .filter(m -> m.getStatus().equals(MessageStatus.PENDING.code())).map(PrivateMessage::getId) + .collect(Collectors.toList()); if (!messageIds.isEmpty()) { LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(); updateWrapper.in(PrivateMessage::getId, messageIds);