diff --git a/src/main/java/com/flipflick/backend/api/recommendation/controller/RecommendationController.java b/src/main/java/com/flipflick/backend/api/recommendation/controller/RecommendationController.java index 5a3f6fe..9625094 100644 --- a/src/main/java/com/flipflick/backend/api/recommendation/controller/RecommendationController.java +++ b/src/main/java/com/flipflick/backend/api/recommendation/controller/RecommendationController.java @@ -9,6 +9,7 @@ import com.flipflick.backend.common.response.ApiResponse; import com.flipflick.backend.common.response.SuccessStatus; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; @@ -26,14 +27,16 @@ public class RecommendationController { private final RecommendationService recommendationService; @Operation(summary = "유사한 성향 사용자 리뷰 조회", description = "나와 비슷한 성향의 사용자들이 작성한 리뷰를 조회합니다.") - @GetMapping("/similar-reviews") + @GetMapping("/similar-reviews/{tmdbId}") public ResponseEntity> getSimilarUserReviews( @AuthenticationPrincipal SecurityMember securityMember, + @Parameter(description = "영화 TMDB ID", example = "550") + @PathVariable Long tmdbId, @RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "10") int size) { ReviewResponseDto.PageResponse result = recommendationService.getSimilarUserReviews( - securityMember.getId(), page, size); + securityMember.getId(), page, size, tmdbId); return ApiResponse.success(SuccessStatus.SEND_REVIEW_LIST_SUCCESS, result); } diff --git a/src/main/java/com/flipflick/backend/api/recommendation/service/RecommendationService.java b/src/main/java/com/flipflick/backend/api/recommendation/service/RecommendationService.java index 2336c92..d728ac3 100644 --- a/src/main/java/com/flipflick/backend/api/recommendation/service/RecommendationService.java +++ b/src/main/java/com/flipflick/backend/api/recommendation/service/RecommendationService.java @@ -43,7 +43,7 @@ public class RecommendationService { private String pythonServerUrl; // 🎯 추가: 유사한 성향 사용자들의 리뷰 조회 - public ReviewResponseDto.PageResponse getSimilarUserReviews(Long memberId, int page, int size) { + public ReviewResponseDto.PageResponse getSimilarUserReviews(Long memberId, int page, int size, Long tmdbId) { // 1. 캐시된 유사 사용자 목록 조회 List similarUserIds = getSimilarUserIds(memberId); @@ -60,10 +60,10 @@ public ReviewResponseDto.PageResponse getSimilarUserReviews(Long memberId, int p .build(); } - // 2. 유사 사용자들의 리뷰 조회 (본인 제외, 평점 4점 이상만) + // 2. 유사 사용자들의 리뷰 조회 (본인 제외, 평점 0.0점 이상만) Pageable pageable = PageRequest.of(page, size, Sort.by("createdAt").descending()); - Page reviewPage = reviewRepository.findHighRatedReviewsBySimilarUsers( - similarUserIds, memberId, 4.0, pageable); + Page reviewPage = reviewRepository.findHighRatedReviewsBySimilarUsersAndTmdbId( + similarUserIds, memberId, 0.0, tmdbId, pageable); // 3. DTO 변환 Page detailPage = reviewPage.map(this::convertToDetail); diff --git a/src/main/java/com/flipflick/backend/api/review/repository/ReviewRepository.java b/src/main/java/com/flipflick/backend/api/review/repository/ReviewRepository.java index 7489064..ad1a22f 100644 --- a/src/main/java/com/flipflick/backend/api/review/repository/ReviewRepository.java +++ b/src/main/java/com/flipflick/backend/api/review/repository/ReviewRepository.java @@ -112,12 +112,14 @@ AND EXISTS ( AND r.member.id != :excludeMemberId AND r.star >= :minRating AND r.isDeleted = false + AND r.movie.tmdbId = :tmdbId ORDER BY r.star DESC, r.likeCnt DESC """) - Page findHighRatedReviewsBySimilarUsers( + Page findHighRatedReviewsBySimilarUsersAndTmdbId( @Param("similarUserIds") List similarUserIds, @Param("excludeMemberId") Long excludeMemberId, @Param("minRating") Double minRating, + @Param("tmdbId") Long tmdbId, Pageable pageable); /**