diff --git a/src/main/java/com/jangburich/domain/store/controller/StoreController.java b/src/main/java/com/jangburich/domain/store/controller/StoreController.java index edeac24..ce46853 100644 --- a/src/main/java/com/jangburich/domain/store/controller/StoreController.java +++ b/src/main/java/com/jangburich/domain/store/controller/StoreController.java @@ -57,13 +57,12 @@ public class StoreController { public ResponseCustom> searchByCategory( Authentication authentication, @RequestParam(required = false, defaultValue = "3") Integer searchRadius, - @RequestParam(required = false, defaultValue = "ALL") Category category, - Double lat, - Double lon, Pageable pageable) { + @RequestParam(required = false, defaultValue = "전체") String category, + Double lat, Double lon, Pageable pageable) { + Category categoryEnum = Category.fromDisplayName(category); return ResponseCustom.OK( - storeService.searchByCategory(AuthenticationParser.parseUserId(authentication), searchRadius, category, lat, - lon, - pageable)); + storeService.searchByCategory(AuthenticationParser.parseUserId(authentication), searchRadius, categoryEnum, + lat, lon, pageable)); } @Operation(summary = "매장 찾기(검색)", description = "검색어와 매장 유형에 맞는 매장을 검색합니다.") @@ -159,10 +158,10 @@ public ResponseCustom getOrders(Authentication authenticat @Operation(summary = "가게 엑셀 다운로드", description = "가게 장부 세부 내역을 엑셀로 제공합니다.") @GetMapping("/excel") public ResponseEntity getExcel( - Authentication authentication, + // Authentication authentication, @RequestParam(defaultValue = "1") Integer period ) { - byte[] excel = storeService.createExcel(AuthenticationParser.parseUserId(authentication), period); + byte[] excel = storeService.createExcel("test-owner", period); String today = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); String fileName = "장부_세부내역_" + period + "개월_" + today + ".xlsx"; diff --git a/src/main/java/com/jangburich/domain/store/domain/Category.java b/src/main/java/com/jangburich/domain/store/domain/Category.java index 1c3416d..14d4614 100644 --- a/src/main/java/com/jangburich/domain/store/domain/Category.java +++ b/src/main/java/com/jangburich/domain/store/domain/Category.java @@ -1,5 +1,7 @@ package com.jangburich.domain.store.domain; +import java.util.Arrays; + public enum Category { ALL("전체"), KOREAN("한식"), @@ -24,4 +26,19 @@ public enum Category { public String getDisplayName() { return displayName; } + + public static Category fromDisplayName(String displayName) { + return Arrays.stream(Category.values()) + .filter(category -> category.getDisplayName().equals(displayName)) + .findFirst() + .orElseThrow(() -> new IllegalArgumentException("Invalid category: " + displayName + ". Please use one of: " + getValidCategories())); + } + + private static String getValidCategories() { + return Arrays.stream(Category.values()) + .map(Category::getDisplayName) + .reduce((a, b) -> a + ", " + b) + .orElse(""); + } + } diff --git a/src/main/java/com/jangburich/domain/store/dto/response/SearchStoresResponse.java b/src/main/java/com/jangburich/domain/store/dto/response/SearchStoresResponse.java index 2e8b2dd..160ae84 100644 --- a/src/main/java/com/jangburich/domain/store/dto/response/SearchStoresResponse.java +++ b/src/main/java/com/jangburich/domain/store/dto/response/SearchStoresResponse.java @@ -3,6 +3,9 @@ import com.jangburich.domain.store.domain.Category; import com.querydsl.core.annotations.QueryProjection; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; + import lombok.Builder; @Builder @@ -33,9 +36,18 @@ public SearchStoresResponse(Long storeId, String name, Double latitude, Double l category.getDisplayName(), distance, businessStatus, - closeTime, + formatCloseTime(closeTime), phoneNumber, imageUrl ); } -} \ No newline at end of file + + private static String formatCloseTime(String closeTime) { + try { + LocalTime time = LocalTime.parse(closeTime.split("\\.")[0]); + return time.format(DateTimeFormatter.ofPattern("HH:mm")); + } catch (Exception e) { + return closeTime; + } + } +}