From 94e293a253dca04095e90c40b3a6d70d1bc8218f Mon Sep 17 00:00:00 2001 From: tianfeng <769204422@qq.com> Date: Tue, 3 Feb 2026 10:28:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B6=88=E6=81=AF=E5=88=97=E8=A1=A8rootComment?= =?UTF-8?q?Id=20=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dynamic/query/DynamicMessageQryExe.java | 27 +++++++++++++++++-- .../dynamic/DynamicCommentService.java | 8 ++++++ .../impl/DynamicCommentServiceImpl.java | 18 +++++++++++++ 3 files changed, 51 insertions(+), 2 deletions(-) diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/dynamic/query/DynamicMessageQryExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/dynamic/query/DynamicMessageQryExe.java index ea6541f5..6d9b3748 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/dynamic/query/DynamicMessageQryExe.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/dynamic/query/DynamicMessageQryExe.java @@ -1,8 +1,8 @@ package com.red.circle.other.app.command.dynamic.query; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.common.utils.StringUtils; +import com.google.common.collect.Maps; import com.red.circle.common.business.enums.DynamicMessageEnum; import com.red.circle.framework.dto.PageResult; import com.red.circle.other.app.dto.clientobject.dynamic.DynamicMessageListCO; @@ -10,8 +10,10 @@ import com.red.circle.other.app.dto.clientobject.dynamic.MessageItemCO; import com.red.circle.other.app.dto.cmd.dynamic.DynamicLimitCmd; import com.red.circle.other.domain.gateway.user.UserProfileGateway; import com.red.circle.other.domain.model.user.UserProfile; +import com.red.circle.other.infra.database.rds.entity.dynamic.DynamicComment; import com.red.circle.other.infra.database.rds.entity.dynamic.DynamicContent; import com.red.circle.other.infra.database.rds.entity.dynamic.DynamicMessage; +import com.red.circle.other.infra.database.rds.service.dynamic.DynamicCommentService; import com.red.circle.other.infra.database.rds.service.dynamic.DynamicContentService; import com.red.circle.other.infra.database.rds.service.dynamic.DynamicMessageService; import com.red.circle.tool.core.collection.CollectionUtils; @@ -38,6 +40,7 @@ public class DynamicMessageQryExe { private final UserProfileGateway userProfileGateway; private final DynamicContentService dynamicContentService; private final DynamicMessageService dynamicMessageService; + private final DynamicCommentService dynamicCommentService; public PageResult execute(DynamicLimitCmd cmd) { @@ -49,6 +52,7 @@ public class DynamicMessageQryExe { Map userMap = userProfileGateway.mapByUserIds(getUserIds(messages)); Map contentMap = getContentMap(messages); + Map commentMap = getCommentMap(messages); return messages.convert(message -> { @@ -64,7 +68,13 @@ public class DynamicMessageQryExe { messageCO.setCreateTime(message.getCreateTime()); messageCO.setDynamicId(message.getDynamicContentId()); messageCO.setDynamicContent(dynamicContent.getContent()); - messageCO.setRootCommentId(message.getDynamicCommentId()); + + // 批量查询评论ID对应的 rootCommentId + DynamicComment comment = commentMap.get(message.getDynamicCommentId()); + if (comment != null) { + messageCO.setRootCommentId(comment.getRootCommentId()); + } + // 处理messageContent 和 giftCount parseMessageContent(messageCO, message); @@ -112,6 +122,19 @@ public class DynamicMessageQryExe { Collectors.toSet())); } + private Map getCommentMap(PageResult messages) { + Set commentIds = messages.getRecords().stream() + .map(DynamicMessage::getDynamicCommentId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + + if (CollectionUtils.isEmpty(commentIds)) { + return Maps.newHashMap(); + } + + return dynamicCommentService.mapByIds(commentIds); + } + private PageResult getMessages(DynamicLimitCmd cmd) { return dynamicMessageService.pageByTimeDesc(cmd.getPageReq(), cmd.getReqUserId(), cmd.getDynamicMessageEnums()); } diff --git a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/dynamic/DynamicCommentService.java b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/dynamic/DynamicCommentService.java index da906cac..63de8ec1 100644 --- a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/dynamic/DynamicCommentService.java +++ b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/dynamic/DynamicCommentService.java @@ -107,4 +107,12 @@ public interface DynamicCommentService extends BaseService { */ Map mapChildCommentCount(Collection rootCommentIds); + /** + * 根据评论ID集合批量查询评论 + * + * @param commentIds 评论ID集合 + * @return Map<评论ID, 评论对象> + */ + Map mapByIds(Collection commentIds); + } diff --git a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/dynamic/impl/DynamicCommentServiceImpl.java b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/dynamic/impl/DynamicCommentServiceImpl.java index b522e17b..f212cc84 100644 --- a/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/dynamic/impl/DynamicCommentServiceImpl.java +++ b/rc-service/rc-service-other/other-infrastructure/src/main/java/com/red/circle/other/infra/database/rds/service/dynamic/impl/DynamicCommentServiceImpl.java @@ -195,4 +195,22 @@ public class DynamicCommentServiceImpl extends return result; } + + @Override + public Map mapByIds(Collection commentIds) { + if (CollectionUtils.isEmpty(commentIds)) { + return Maps.newHashMap(); + } + + List comments = query() + .in(DynamicComment::getId, commentIds) + .list(); + + Map result = Maps.newHashMap(); + for (DynamicComment comment : comments) { + result.put(comment.getId(), comment); + } + + return result; + } }