@@ -104,10 +104,31 @@ public ReviewResponse getReview(Long reviewId) {
104104
105105 @ Transactional (readOnly = true )
106106 public List <ReviewResponse > getReviewsByPostId (Long postId ) {
107- return reviewRepository
108- .findByPostId (postId )
109- .stream ()
110- .map (this ::toReviewResponse )
107+ List <Review > reviews = reviewRepository .findByPostId (postId );
108+
109+ List <Long > reviewIds = reviews .stream ()
110+ .map (Review ::getId )
111+ .collect (Collectors .toList ());
112+
113+ // 리뷰 ID별 답글 개수 Map 생성
114+ java .util .Map <Long , Long > replyCountMap = java .util .Collections .emptyMap ();
115+ if (!reviewIds .isEmpty ()) {
116+ replyCountMap = reviewReplyRepository .countByReviewIds (reviewIds )
117+ .stream ()
118+ .collect (Collectors .toMap (
119+ result -> ((Number ) result [0 ]).longValue (),
120+ result -> ((Number ) result [1 ]).longValue ()
121+ ));
122+ }
123+
124+ final java .util .Map <Long , Long > finalReplyCountMap = replyCountMap ;
125+
126+ return reviews .stream ()
127+ .map (review -> {
128+ boolean hasReply = finalReplyCountMap .containsKey (review .getId ())
129+ && finalReplyCountMap .get (review .getId ()) > 0 ;
130+ return toReviewResponse (review , hasReply );
131+ })
111132 .collect (Collectors .toList ());
112133 }
113134
@@ -239,6 +260,10 @@ public ReviewStatusResponse getReviewStatus(Long userId, Long postId) {
239260 }
240261
241262 private ReviewResponse toReviewResponse (Review review ) {
263+ return toReviewResponse (review , false );
264+ }
265+
266+ private ReviewResponse toReviewResponse (Review review , boolean hasReply ) {
242267 User createdBy = review .getCreatedBy ();
243268
244269 return ReviewResponse .builder ()
@@ -248,6 +273,7 @@ private ReviewResponse toReviewResponse(Review review) {
248273 .content (review .getContent ())
249274 .createdAt (review .getCreatedAt ())
250275 .updatedAt (review .getUpdatedAt ())
276+ .hasReply (hasReply )
251277 .writer (ReviewResponse .WriterInfo .builder ()
252278 .id (createdBy .getId ())
253279 .nickname (createdBy .getNickname () != null ? createdBy .getNickname () : "" )
0 commit comments