From d4af9d78f041792c6adcce6d9261ab22214d5cdf Mon Sep 17 00:00:00 2001 From: xsx <825657193@qq.com> Date: Thu, 10 Jul 2025 17:48:09 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A6=BB=E7=BA=BF=E6=B6=88=E6=81=AF=E6=8B=89?= =?UTF-8?q?=E5=8F=96=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/GroupMessageServiceImpl.java | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) 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