Skip to content

Commit 3088d59

Browse files
authored
Merge pull request #191 from JA-yeong-eop-JA-moeu-JA/feat/#190-review-productId
✨ Feat: 게시판 내 전체 리뷰 조회 API 응답에 productId 추가
2 parents 0f11767 + 7f49323 commit 3088d59

File tree

7 files changed

+68
-12
lines changed

7 files changed

+68
-12
lines changed

src/main/java/com/jajaja/domain/review/controller/ReviewController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ public ApiResponse<PagingReviewListResponseDto> getMyReviews(
146146
description = "전체 리뷰를 정렬 기준(최신 순 | 추천 순)에 따라 조회합니다."
147147
)
148148
@GetMapping
149-
public ApiResponse<PagingReviewListResponseDto> getAllReviews(
149+
public ApiResponse<PagingAllReviewListResponseDto> getAllReviews(
150150
@Auth Long memberId,
151151
@Parameter(description = "정렬 기준 (LATEST | RECOMMEND)", example = "LATEST")
152152
@RequestParam(required = false, defaultValue = "LATEST") String sort,
@@ -157,7 +157,7 @@ public ApiResponse<PagingReviewListResponseDto> getAllReviews(
157157
@Parameter(description = "페이지 크기", example = "5")
158158
@RequestParam(defaultValue = "5") int size
159159
) {
160-
PagingReviewListResponseDto responseDto = reviewQueryService.getAllReviewList(memberId, sort, page, size);
160+
PagingAllReviewListResponseDto responseDto = reviewQueryService.getAllReviewList(memberId, sort, page, size);
161161
return ApiResponse.onSuccess(responseDto);
162162
}
163163

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.jajaja.domain.review.dto.response;
2+
3+
import lombok.Builder;
4+
5+
import java.util.List;
6+
7+
@Builder
8+
public record AllReviewListDto(
9+
ReviewItemDto review,
10+
boolean isLike,
11+
List<String> imageUrls,
12+
Long productId
13+
) {
14+
public static AllReviewListDto of(
15+
ReviewItemDto review,
16+
boolean isLike,
17+
List<String> imageUrls,
18+
Long productId
19+
) {
20+
return AllReviewListDto.builder()
21+
.review(review)
22+
.isLike(isLike)
23+
.imageUrls(imageUrls)
24+
.productId(productId)
25+
.build();
26+
}
27+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.jajaja.domain.review.dto.response;
2+
3+
import com.jajaja.global.apiPayload.PageResponse;
4+
import lombok.Builder;
5+
import org.springframework.data.domain.Page;
6+
7+
import java.util.List;
8+
9+
@Builder
10+
public record PagingAllReviewListResponseDto(
11+
PageResponse page,
12+
List<AllReviewListDto> reviews
13+
) {
14+
public static PagingAllReviewListResponseDto of(Page<?> page, List<AllReviewListDto> reviews) {
15+
return PagingAllReviewListResponseDto.builder()
16+
.page(PageResponse.from(page))
17+
.reviews(reviews)
18+
.build();
19+
}
20+
}

src/main/java/com/jajaja/domain/review/repository/ReviewRepositoryCustom.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,6 @@ public interface ReviewRepositoryCustom {
1616
Page<ReviewItemDto> findPageByMemberIdOrderByCreatedAt(Long memberId, int page, int size);
1717
Page<ReviewItemDto> findPageAllOrderByCreatedAt(int page, int size);
1818
Page<ReviewItemDto> findPageAllOrderByLikeCount(int page, int size);
19+
Long findProductIdByReviewId(int reviewId);
1920
Page<ReviewableOrderItemDto> findPageReviewableByMemberId(Long memberId, int page, int size);
2021
}

src/main/java/com/jajaja/domain/review/repository/ReviewRepositoryImpl.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,16 @@ public Page<ReviewItemDto> findPageAllOrderByLikeCount(int page, int size) {
271271
return new PageImpl<>(content, PageRequest.of(page, size), total);
272272
}
273273

274+
@Override
275+
public Long findProductIdByReviewId(int reviewId) {
276+
return queryFactory
277+
.select(review.product.id)
278+
.from(review)
279+
.where(review.id.eq((long) reviewId)
280+
.and(review.deletedAt.isNull()))
281+
.fetchOne();
282+
}
283+
274284
@Override
275285
public Page<ReviewableOrderItemDto> findPageReviewableByMemberId(Long memberId, int page, int size) {
276286
if (memberId == null) {
Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
package com.jajaja.domain.review.service;
22

3-
import com.jajaja.domain.review.dto.response.PagingReviewImageListResponseDto;
4-
import com.jajaja.domain.review.dto.response.PagingReviewListResponseDto;
5-
import com.jajaja.domain.review.dto.response.PagingReviewableOrderListResponseDto;
6-
import com.jajaja.domain.review.dto.response.ReviewBriefResponseDto;
3+
import com.jajaja.domain.review.dto.response.*;
74

85

96
public interface ReviewQueryService {
107
ReviewBriefResponseDto getReviewBriefInfo(Long productId);
118
PagingReviewListResponseDto getReviewList(Long memberId, Long productId, String sort, int page, int size);
129
PagingReviewImageListResponseDto getReviewImageList(Long productId, String sort, int page, int size);
1310
PagingReviewListResponseDto getMyReviewList(Long memberId, int page, int size);
14-
PagingReviewListResponseDto getAllReviewList(Long memberId, String sort, int page, int size);
11+
PagingAllReviewListResponseDto getAllReviewList(Long memberId, String sort, int page, int size);
1512
PagingReviewableOrderListResponseDto getReviewableProducts(Long memberId, int page, int size);
1613
}

src/main/java/com/jajaja/domain/review/service/ReviewQueryServiceImpl.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ public PagingReviewListResponseDto getMyReviewList(Long memberId, int page, int
133133
}
134134

135135
@Override
136-
public PagingReviewListResponseDto getAllReviewList(Long memberId, String sort, int page, int size) {
136+
public PagingAllReviewListResponseDto getAllReviewList(Long memberId, String sort, int page, int size) {
137137
Page<ReviewItemDto> reviewItemPage;
138138

139139
switch (sort.toLowerCase()) {
@@ -159,15 +159,16 @@ public PagingReviewListResponseDto getAllReviewList(Long memberId, String sort,
159159

160160
List<ReviewItemDto> convertedDtos = reviewCommonService.changeReviewWriterProfile(reviewItemPage.getContent());
161161

162-
List<ReviewListDto> reviewDtos = convertedDtos.stream()
163-
.map(dto -> new ReviewListDto(
162+
List<AllReviewListDto> reviewDtos = convertedDtos.stream()
163+
.map(dto -> AllReviewListDto.of(
164164
dto,
165165
likedReviewIds.contains(dto.id()),
166-
imageUrlsMap.getOrDefault(dto.id(), List.of())
166+
imageUrlsMap.getOrDefault(dto.id(), List.of()),
167+
reviewRepository.findProductIdByReviewId(dto.id()) // int 그대로 전달
167168
))
168169
.toList();
169170

170-
return PagingReviewListResponseDto.of(reviewItemPage, reviewDtos);
171+
return PagingAllReviewListResponseDto.of(reviewItemPage, reviewDtos);
171172
}
172173

173174
@Override

0 commit comments

Comments
 (0)