diff --git a/hs-im-server/im-service/src/main/java/com/lld/im/service/message/service/MessageSyncService.java b/hs-im-server/im-service/src/main/java/com/lld/im/service/message/service/MessageSyncService.java index 738d0bb..c2b80b8 100644 --- a/hs-im-server/im-service/src/main/java/com/lld/im/service/message/service/MessageSyncService.java +++ b/hs-im-server/im-service/src/main/java/com/lld/im/service/message/service/MessageSyncService.java @@ -173,19 +173,22 @@ public class MessageSyncService { } public List chatHistory(ChatHistoryReq chatHistoryReq){ + List imMessageHistoryVos = new ArrayList<>(); Page objectPage = new Page<>(chatHistoryReq.getOffset(),chatHistoryReq.getLimit()); LambdaQueryWrapper and = new LambdaQueryWrapper().eq(ImMessageHistoryEntity::getOwnerId, chatHistoryReq.getOperater()) .and(x -> x.eq(ImMessageHistoryEntity::getFromId, chatHistoryReq.getUserId()).or().eq(ImMessageHistoryEntity::getToId, chatHistoryReq.getUserId())) .orderByDesc(ImMessageHistoryEntity::getMessageKey); Page imMessageHistoryEntities = imMessageHistoryMapper.selectPage(objectPage,and); List messageKeys = imMessageHistoryEntities.getRecords().stream().map(x -> x.getMessageKey()).collect(Collectors.toList()); - if (messageKeys.size() == 0) { - return new ArrayList(); + + if (CollectionUtils.isEmpty(messageKeys)){ + return imMessageHistoryVos; } + List imMessageBodyEntities = imMessageBodyMapper.selectList(new LambdaQueryWrapper().in(ImMessageBodyEntity::getMessageKey, messageKeys)); Map collect = imMessageBodyEntities.stream().collect(Collectors.toMap(ImMessageBodyEntity::getMessageKey, x -> x)); - List imMessageHistoryVos = BeanCopyUtils.copyList(imMessageHistoryEntities.getRecords(), ImMessageHistoryVo.class); + imMessageHistoryVos = BeanCopyUtils.copyList(imMessageHistoryEntities.getRecords(), ImMessageHistoryVo.class); for (ImMessageHistoryVo imMessageHistoryVo : imMessageHistoryVos) { ImMessageBodyEntity imMessageBodyEntity = collect.get(imMessageHistoryVo.getMessageKey()); imMessageHistoryVo.setMessageBody(imMessageBodyEntity.getMessageBody());