Browse Source

fix: 消息送达状态异常的bug

master
xsx 5 months ago
parent
commit
c328524c9f
  1. 6
      im-platform/src/main/java/com/bx/implatform/listener/PrivateMessageListener.java
  2. 4
      im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java

6
im-platform/src/main/java/com/bx/implatform/listener/PrivateMessageListener.java

@ -26,6 +26,7 @@ public class PrivateMessageListener implements MessageListener<PrivateMessageVO>
@Lazy @Lazy
@Autowired @Autowired
private PrivateMessageService privateMessageService; private PrivateMessageService privateMessageService;
@Override @Override
public void process(List<IMSendResult<PrivateMessageVO>> results) { public void process(List<IMSendResult<PrivateMessageVO>> results) {
Set<Long> messageIds = new HashSet<>(); Set<Long> messageIds = new HashSet<>();
@ -33,8 +34,11 @@ public class PrivateMessageListener implements MessageListener<PrivateMessageVO>
PrivateMessageVO messageInfo = result.getData(); PrivateMessageVO messageInfo = result.getData();
// 更新消息状态,这里只处理成功消息,失败的消息继续保持未读状态 // 更新消息状态,这里只处理成功消息,失败的消息继续保持未读状态
if (result.getCode().equals(IMSendCode.SUCCESS.code()) && !Objects.isNull(messageInfo.getId())) { if (result.getCode().equals(IMSendCode.SUCCESS.code()) && !Objects.isNull(messageInfo.getId())) {
if (result.getReceiver().getId().equals(messageInfo.getRecvId())) {
messageIds.add(messageInfo.getId()); messageIds.add(messageInfo.getId());
log.info("消息送达,消息id:{},发送者:{},接收者:{},终端:{}", messageInfo.getId(), result.getSender().getId(), result.getReceiver().getId(), result.getReceiver().getTerminal()); log.info("消息送达,消息id:{},发送者:{},接收者:{},终端:{}", messageInfo.getId(),
result.getSender().getId(), result.getReceiver().getId(), result.getReceiver().getTerminal());
}
} }
} }
// 批量修改状态 // 批量修改状态

4
im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java

@ -189,8 +189,8 @@ public class PrivateMessageServiceImpl extends ServiceImpl<PrivateMessageMapper,
wrapper.orderByAsc(PrivateMessage::getId); wrapper.orderByAsc(PrivateMessage::getId);
List<PrivateMessage> messages = this.list(wrapper); List<PrivateMessage> messages = this.list(wrapper);
// 更新消息为送达状态 // 更新消息为送达状态
List<Long> messageIds = List<Long> messageIds = messages.stream().filter(m -> m.getRecvId().equals(session.getUserId()))
messages.stream().filter(m -> m.getStatus().equals(MessageStatus.PENDING.code())).map(PrivateMessage::getId) .filter(m -> m.getStatus().equals(MessageStatus.PENDING.code())).map(PrivateMessage::getId)
.collect(Collectors.toList()); .collect(Collectors.toList());
if (!messageIds.isEmpty()) { if (!messageIds.isEmpty()) {
LambdaUpdateWrapper<PrivateMessage> updateWrapper = Wrappers.lambdaUpdate(); LambdaUpdateWrapper<PrivateMessage> updateWrapper = Wrappers.lambdaUpdate();

Loading…
Cancel
Save