Kaynağa Gözat

代码优化

xsx 1 yıl önce
ebeveyn
işleme
203be91957

+ 5 - 12
im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java

@@ -72,9 +72,7 @@ public class GroupMessageServiceImpl extends ServiceImpl<GroupMessageMapper, Gro
         msg.setSendId(session.getUserId());
         msg.setSendTime(new Date());
         msg.setSendNickName(member.getShowNickName());
-        if (CollectionUtil.isNotEmpty(dto.getAtUserIds())) {
-            msg.setAtUserIds(StrUtil.join(",", dto.getAtUserIds()));
-        }
+        msg.setAtUserIds(CommaTextUtils.asText(dto.getAtUserIds()));
         this.save(msg);
         // 过滤内容中的敏感词
         if(MessageType.TEXT.code().equals(dto.getType())){
@@ -167,7 +165,7 @@ public class GroupMessageServiceImpl extends ServiceImpl<GroupMessageMapper, Gro
             .gt(GroupMessage::getSendTime, minDate)
             .in(GroupMessage::getGroupId, groupIds)
             .ne(GroupMessage::getStatus, MessageStatus.RECALL.code())
-            .orderByDesc(GroupMessage::getId);
+            .orderByAsc(GroupMessage::getId);
         List<GroupMessage> messages = this.list(wrapper);
         // 通过群聊对消息进行分组
         Map<Long, List<GroupMessage>> messageGroupMap = messages.stream().collect(Collectors.groupingBy(GroupMessage::getGroupId));
@@ -179,8 +177,7 @@ public class GroupMessageServiceImpl extends ServiceImpl<GroupMessageMapper, Gro
                 .between(GroupMessage::getSendTime, minDate,quitMember.getQuitTime())
                 .eq(GroupMessage::getGroupId, quitMember.getGroupId())
                 .ne(GroupMessage::getStatus, MessageStatus.RECALL.code())
-                .orderByDesc(GroupMessage::getId)
-                .last("limit 100");
+                .orderByAsc(GroupMessage::getId);
             List<GroupMessage> groupMessages = this.list(wrapper);
             messageGroupMap.put(quitMember.getGroupId(),groupMessages);
             groupMemberMap.put(quitMember.getGroupId(),quitMember);
@@ -188,8 +185,6 @@ public class GroupMessageServiceImpl extends ServiceImpl<GroupMessageMapper, Gro
         // 推送消息
         AtomicInteger sendCount = new AtomicInteger();
         messageGroupMap.forEach((groupId, groupMessages) -> {
-            // id从小到大排序
-            CollectionUtil.reverse(groupMessages);
             // 填充消息状态
             String key = StrUtil.join(":", RedisKey.IM_GROUP_READED_POSITION, groupId);
             Object o = redisTemplate.opsForHash().get(key, session.getUserId().toString());
@@ -209,10 +204,8 @@ public class GroupMessageServiceImpl extends ServiceImpl<GroupMessageMapper, Gro
                 // 组装vo
                 GroupMessageVO vo = BeanUtils.copyProperties(m, GroupMessageVO.class);
                 // 被@用户列表
-                if (StringUtils.isNotBlank(m.getAtUserIds()) && Objects.nonNull(vo)) {
-                    List<String> atIds = Splitter.on(",").trimResults().splitToList(m.getAtUserIds());
-                    vo.setAtUserIds(atIds.stream().map(Long::parseLong).collect(Collectors.toList()));
-                }
+                List<String> atIds = CommaTextUtils.asList(m.getAtUserIds());
+                vo.setAtUserIds(atIds.stream().map(Long::parseLong).collect(Collectors.toList()));
                 // 填充状态
                 vo.setStatus(readedMaxId >= m.getId() ? MessageStatus.READED.code() : MessageStatus.UNSEND.code());
                 // 针对回执消息填充已读人数

+ 1 - 3
im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java

@@ -158,10 +158,8 @@ public class PrivateMessageServiceImpl extends ServiceImpl<PrivateMessageMapper,
             .ne(PrivateMessage::getStatus, MessageStatus.RECALL.code()).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)))
-            .orderByDesc(PrivateMessage::getId);
+            .orderByAsc(PrivateMessage::getId);
         List<PrivateMessage> messages = this.list(queryWrapper);
-        // 消息顺序从小到大
-        CollectionUtil.reverse(messages);
         // 推送消息
         for (PrivateMessage m : messages) {
             PrivateMessageVO vo = BeanUtils.copyProperties(m, PrivateMessageVO.class);

+ 1 - 1
im-uniapp/components/chat-at-box/chat-at-box.vue

@@ -64,7 +64,7 @@
 					})
 				}
 				this.members.forEach((m) => {
-					if(m.userId != userId){
+					if(!m.quit && m.userId != userId){
 						m.checked = atUserIds.indexOf(m.userId) >= 0;
 						this.showMembers.push(m);
 					}