diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java index 1c9ed5e..50cd4cb 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java @@ -164,7 +164,11 @@ public class GroupMessageServiceImpl extends ServiceImpl messages = this.list(wrapper); // 通过群聊对消息进行分组 Map> messageGroupMap = @@ -177,7 +181,7 @@ public class GroupMessageServiceImpl extends ServiceImpl groupMessages = this.list(wrapper); messageGroupMap.put(quitMember.getGroupId(), groupMessages); groupMemberMap.put(quitMember.getGroupId(), quitMember); @@ -186,13 +190,17 @@ public class GroupMessageServiceImpl extends ServiceImpl { + int sendCount = 0; + for (Map.Entry> entry : messageGroupMap.entrySet()) { + Long groupId = entry.getKey(); + List groupMessages = entry.getValue(); // 第一次拉取时,一个群最多推送3000条消息,防止前端接收能力溢出导致卡顿 List sendMessages = groupMessages; if (minId <= 0 && groupMessages.size() > 3000) { - sendMessages = groupMessages.subList(groupMessages.size() - 3000, groupMessages.size()); + sendMessages = groupMessages.subList(0, 3000); } + // id从小到大排序 + CollectionUtil.reverse(sendMessages); // 填充消息状态 String key = StrUtil.join(":", RedisKey.IM_GROUP_READED_POSITION, groupId); Object o = redisTemplate.opsForHash().get(key, session.getUserId().toString()); @@ -238,12 +246,12 @@ public class GroupMessageServiceImpl extends ServiceImpl