From a2fa6870e5f96340970f14555238d2ffb56532ee Mon Sep 17 00:00:00 2001 From: lsh9672 Date: Fri, 13 Jun 2025 01:20:50 +0900 Subject: [PATCH] =?UTF-8?q?Fix=20:=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ktds/hi/common/dto/PageResponse.java | 18 ++++++++++++++++++ .../biz/service/StoreRecommendInteractor.java | 6 +++--- .../biz/service/TasteAnalysisInteractor.java | 2 +- .../dto/response/StoreDetailResponse.java | 4 ++-- 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/common/src/main/java/com/ktds/hi/common/dto/PageResponse.java b/common/src/main/java/com/ktds/hi/common/dto/PageResponse.java index 3bd45b0..ca3af9a 100644 --- a/common/src/main/java/com/ktds/hi/common/dto/PageResponse.java +++ b/common/src/main/java/com/ktds/hi/common/dto/PageResponse.java @@ -24,4 +24,22 @@ public class PageResponse { private Boolean first; private Boolean last; private Boolean empty; + + /** + * PageResponse 생성을 위한 정적 팩토리 메서드 + */ + public static PageResponse of(List content, Integer page, Integer size, Long totalElements) { + Integer totalPages = (int) Math.ceil((double) totalElements / size); + + return PageResponse.builder() + .content(content) + .page(page) + .size(size) + .totalElements(totalElements) + .totalPages(totalPages) + .first(page == 0) + .last(page >= totalPages - 1) + .empty(content.isEmpty()) + .build(); + } } \ No newline at end of file diff --git a/recommend/src/main/java/com/ktds/hi/recommend/biz/service/StoreRecommendInteractor.java b/recommend/src/main/java/com/ktds/hi/recommend/biz/service/StoreRecommendInteractor.java index aa867df..b77bca9 100644 --- a/recommend/src/main/java/com/ktds/hi/recommend/biz/service/StoreRecommendInteractor.java +++ b/recommend/src/main/java/com/ktds/hi/recommend/biz/service/StoreRecommendInteractor.java @@ -87,11 +87,11 @@ public class StoreRecommendInteractor implements StoreRecommendUseCase { List responses = convertToResponseList(pagedStores); - return PageResponse.of(responses, pageable.getPageNumber(), pageable.getPageSize(), stores.size()); + return PageResponse.of(responses, pageable.getPageNumber(), pageable.getPageSize(), Long.valueOf(stores.size())); } catch (Exception e) { log.error("위치 기반 매장 추천 실패: lat={}, lng={}", latitude, longitude, e); - return PageResponse.of(getDefaultRecommendations(), 0, pageable.getPageSize(), 0); + return PageResponse.of(getDefaultRecommendations(), 0, pageable.getPageSize(), 0L); } } @@ -217,7 +217,7 @@ public class StoreRecommendInteractor implements StoreRecommendUseCase { .address("서울시 강남구 테헤란로 123") .category("한식") .rating(4.5) - .distance(500) + .distance(500.0) .tags(Arrays.asList("맛있는", "친절한")) .recommendReason("인기 매장입니다") .build() diff --git a/recommend/src/main/java/com/ktds/hi/recommend/biz/service/TasteAnalysisInteractor.java b/recommend/src/main/java/com/ktds/hi/recommend/biz/service/TasteAnalysisInteractor.java index 67a31c0..725f227 100644 --- a/recommend/src/main/java/com/ktds/hi/recommend/biz/service/TasteAnalysisInteractor.java +++ b/recommend/src/main/java/com/ktds/hi/recommend/biz/service/TasteAnalysisInteractor.java @@ -57,7 +57,7 @@ public class TasteAnalysisInteractor implements TasteAnalysisUseCase { .categoryScores(categoryScores) .preferredTags(profile.getPreferredTags()) .pricePreference(profile.getPricePreference()) - .distancePreference(profile.getDistancePreference()) + .distancePreference((double)profile.getDistancePreference()) .analysisDate(profile.getUpdatedAt()) .build(); } diff --git a/recommend/src/main/java/com/ktds/hi/recommend/infra/dto/response/StoreDetailResponse.java b/recommend/src/main/java/com/ktds/hi/recommend/infra/dto/response/StoreDetailResponse.java index 14d5805..1cc310d 100644 --- a/recommend/src/main/java/com/ktds/hi/recommend/infra/dto/response/StoreDetailResponse.java +++ b/recommend/src/main/java/com/ktds/hi/recommend/infra/dto/response/StoreDetailResponse.java @@ -26,8 +26,8 @@ public class StoreDetailResponse { @Schema(description = "평점", example = "4.5") private Double rating; - @Schema(description = "거리(미터)", example = "500") - private Integer distance; + @Schema(description = "거리(미터)", example = "500.0") // Double로 수정 + private Double distance; @Schema(description = "태그 목록", example = "[\"맛집\", \"혼밥\", \"가성비\"]") private List tags;