From f67e2208943729bd4399a1270177ebcf44b3c0cd Mon Sep 17 00:00:00 2001 From: Tim Date: Wed, 17 Sep 2025 14:14:55 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=97=A7=E5=B8=96=E5=AD=90=E7=9A=84last?= =?UTF-8?q?=5Freply=5Fat=E4=B9=9F=E8=A6=81=E5=8F=8A=E6=97=B6=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=EF=BC=88=E4=BB=85=E4=B8=80=E6=AC=A1=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/openisle/mapper/PostMapper.java | 5 ++++- .../java/com/openisle/service/CommentService.java | 12 ++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/backend/src/main/java/com/openisle/mapper/PostMapper.java b/backend/src/main/java/com/openisle/mapper/PostMapper.java index d60da6154..05dfd532a 100644 --- a/backend/src/main/java/com/openisle/mapper/PostMapper.java +++ b/backend/src/main/java/com/openisle/mapper/PostMapper.java @@ -83,7 +83,10 @@ public class PostMapper { dto.setParticipants(participants.stream().map(userMapper::toAuthorDto).collect(Collectors.toList())); LocalDateTime last = post.getLastReplyAt(); - dto.setLastReplyAt(last != null ? last : post.getCreatedAt()); + if (last == null) { + commentService.updatePostCommentStats(post); + } + dto.setLastReplyAt(post.getLastReplyAt()); dto.setReward(0); dto.setSubscribed(false); dto.setType(post.getType()); diff --git a/backend/src/main/java/com/openisle/service/CommentService.java b/backend/src/main/java/com/openisle/service/CommentService.java index 1c182ac2c..3f322791a 100644 --- a/backend/src/main/java/com/openisle/service/CommentService.java +++ b/backend/src/main/java/com/openisle/service/CommentService.java @@ -346,12 +346,16 @@ public class CommentService { /** * Update post comment statistics (comment count and last reply time) */ - private void updatePostCommentStats(Post post) { + public void updatePostCommentStats(Post post) { long commentCount = commentRepository.countByPostId(post.getId()); - LocalDateTime lastReplyAt = commentRepository.findLastCommentTime(post); - post.setCommentCount(commentCount); - post.setLastReplyAt(lastReplyAt); + + LocalDateTime lastReplyAt = commentRepository.findLastCommentTime(post); + if (lastReplyAt == null) { + post.setLastReplyAt(post.getCreatedAt()); + } else { + post.setLastReplyAt(lastReplyAt); + } postRepository.save(post); log.debug("Updated post {} stats: commentCount={}, lastReplyAt={}",