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={}",