Browse Source

修复消息乱序的bug

master
xie.bx 2 years ago
parent
commit
133d94a3a4
  1. 2
      im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java
  2. 19
      im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java

2
im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java

@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bx.imclient.IMClient; import com.bx.imclient.IMClient;
import com.bx.imcommon.contant.IMConstant; import com.bx.imcommon.contant.IMConstant;
import com.bx.implatform.entity.PrivateMessage;
import com.bx.implatform.util.DateTimeUtils; import com.bx.implatform.util.DateTimeUtils;
import com.bx.implatform.vo.GroupMessageVO; import com.bx.implatform.vo.GroupMessageVO;
import com.bx.imcommon.model.IMGroupMessage; import com.bx.imcommon.model.IMGroupMessage;
@ -204,6 +205,7 @@ public class GroupMessageServiceImpl extends ServiceImpl<GroupMessageMapper, Gro
.gt(GroupMessage::getSendTime, minDate) .gt(GroupMessage::getSendTime, minDate)
.in(GroupMessage::getGroupId, ids) .in(GroupMessage::getGroupId, ids)
.ne(GroupMessage::getStatus, MessageStatus.RECALL.code()) .ne(GroupMessage::getStatus, MessageStatus.RECALL.code())
.orderByAsc(GroupMessage::getId)
.last("limit 100"); .last("limit 100");
List<GroupMessage> messages = this.list(wrapper); List<GroupMessage> messages = this.list(wrapper);

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

@ -191,7 +191,7 @@ public class PrivateMessageServiceImpl extends ServiceImpl<PrivateMessageMapper,
/** /**
* 拉取消息只能拉取最近3个月的消息一次拉取100条 * 拉取消息只能拉取最近3个月的消息一次拉取100条
* *
* @param minId 消息起始id * @param minId 消息起始id
* @return 聊天消息列表 * @return 聊天消息列表
*/ */
@Override @Override
@ -212,8 +212,9 @@ public class PrivateMessageServiceImpl extends ServiceImpl<PrivateMessageMapper,
.and(wrap -> wrap.and( .and(wrap -> wrap.and(
wp -> wp.eq(PrivateMessage::getSendId, session.getUserId()) wp -> wp.eq(PrivateMessage::getSendId, session.getUserId())
.in(PrivateMessage::getRecvId, friendIds)) .in(PrivateMessage::getRecvId, friendIds))
.or(wp -> wp.eq(PrivateMessage::getRecvId, session.getUserId()) .or(wp -> wp.eq(PrivateMessage::getRecvId, session.getUserId())
.in(PrivateMessage::getSendId, friendIds))) .in(PrivateMessage::getSendId, friendIds)))
.orderByAsc(PrivateMessage::getId)
.last("limit 100"); .last("limit 100");
List<PrivateMessage> messages = this.list(queryWrapper); List<PrivateMessage> messages = this.list(queryWrapper);
@ -236,7 +237,7 @@ public class PrivateMessageServiceImpl extends ServiceImpl<PrivateMessageMapper,
/** /**
* 消息已读,将整个会话的消息都置为已读状态 * 消息已读,将整个会话的消息都置为已读状态
* *
* @param friendId 好友id * @param friendId 好友id
*/ */
@Transactional @Transactional
@Override @Override
@ -257,11 +258,11 @@ public class PrivateMessageServiceImpl extends ServiceImpl<PrivateMessageMapper,
imClient.sendPrivateMessage(sendMessage); imClient.sendPrivateMessage(sendMessage);
// 修改消息状态为已读 // 修改消息状态为已读
LambdaUpdateWrapper<PrivateMessage> updateWrapper = Wrappers.lambdaUpdate(); LambdaUpdateWrapper<PrivateMessage> updateWrapper = Wrappers.lambdaUpdate();
updateWrapper.eq(PrivateMessage::getSendId,friendId) updateWrapper.eq(PrivateMessage::getSendId, friendId)
.eq(PrivateMessage::getRecvId,session.getUserId()) .eq(PrivateMessage::getRecvId, session.getUserId())
.eq(PrivateMessage::getStatus,MessageStatus.SENDED.code()) .eq(PrivateMessage::getStatus, MessageStatus.SENDED.code())
.set(PrivateMessage::getStatus,MessageStatus.READED.code()); .set(PrivateMessage::getStatus, MessageStatus.READED.code());
this.update(updateWrapper); this.update(updateWrapper);
log.info("消息已读,接收方id:{},发送方id:{}", session.getUserId(),friendId); log.info("消息已读,接收方id:{},发送方id:{}", session.getUserId(), friendId);
} }
} }

Loading…
Cancel
Save