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.bx.imclient.IMClient;
import com.bx.imcommon.contant.IMConstant;
import com.bx.implatform.entity.PrivateMessage;
import com.bx.implatform.util.DateTimeUtils;
import com.bx.implatform.vo.GroupMessageVO;
import com.bx.imcommon.model.IMGroupMessage;
@ -204,6 +205,7 @@ public class GroupMessageServiceImpl extends ServiceImpl<GroupMessageMapper, Gro
.gt(GroupMessage::getSendTime, minDate)
.in(GroupMessage::getGroupId, ids)
.ne(GroupMessage::getStatus, MessageStatus.RECALL.code())
.orderByAsc(GroupMessage::getId)
.last("limit 100");
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条
*
* @param minId 消息起始id
* @param minId 消息起始id
* @return 聊天消息列表
*/
@Override
@ -212,8 +212,9 @@ public class PrivateMessageServiceImpl extends ServiceImpl<PrivateMessageMapper,
.and(wrap -> wrap.and(
wp -> wp.eq(PrivateMessage::getSendId, session.getUserId())
.in(PrivateMessage::getRecvId, friendIds))
.or(wp -> wp.eq(PrivateMessage::getRecvId, session.getUserId())
.in(PrivateMessage::getSendId, friendIds)))
.or(wp -> wp.eq(PrivateMessage::getRecvId, session.getUserId())
.in(PrivateMessage::getSendId, friendIds)))
.orderByAsc(PrivateMessage::getId)
.last("limit 100");
List<PrivateMessage> messages = this.list(queryWrapper);
@ -236,7 +237,7 @@ public class PrivateMessageServiceImpl extends ServiceImpl<PrivateMessageMapper,
/**
* 消息已读,将整个会话的消息都置为已读状态
*
* @param friendId 好友id
* @param friendId 好友id
*/
@Transactional
@Override
@ -257,11 +258,11 @@ public class PrivateMessageServiceImpl extends ServiceImpl<PrivateMessageMapper,
imClient.sendPrivateMessage(sendMessage);
// 修改消息状态为已读
LambdaUpdateWrapper<PrivateMessage> updateWrapper = Wrappers.lambdaUpdate();
updateWrapper.eq(PrivateMessage::getSendId,friendId)
.eq(PrivateMessage::getRecvId,session.getUserId())
.eq(PrivateMessage::getStatus,MessageStatus.SENDED.code())
.set(PrivateMessage::getStatus,MessageStatus.READED.code());
updateWrapper.eq(PrivateMessage::getSendId, friendId)
.eq(PrivateMessage::getRecvId, session.getUserId())
.eq(PrivateMessage::getStatus, MessageStatus.SENDED.code())
.set(PrivateMessage::getStatus, MessageStatus.READED.code());
this.update(updateWrapper);
log.info("消息已读,接收方id:{},发送方id:{}", session.getUserId(),friendId);
log.info("消息已读,接收方id:{},发送方id:{}", session.getUserId(), friendId);
}
}

Loading…
Cancel
Save