From e53b67c66cba604e172795cca9283eefee995626 Mon Sep 17 00:00:00 2001 From: youbeen Date: Thu, 19 Jun 2025 15:18:49 +0900 Subject: [PATCH] store Search --- .../hi/store/biz/service/StoreService.java | 21 +++++++++++++++++++ .../hi/store/biz/usecase/in/StoreUseCase.java | 1 + .../infra/controller/StoreController.java | 14 +++++++++++++ .../repository/StoreJpaRepository.java | 2 ++ 4 files changed, 38 insertions(+) diff --git a/store/src/main/java/com/ktds/hi/store/biz/service/StoreService.java b/store/src/main/java/com/ktds/hi/store/biz/service/StoreService.java index 2a69db2..4fe8a23 100644 --- a/store/src/main/java/com/ktds/hi/store/biz/service/StoreService.java +++ b/store/src/main/java/com/ktds/hi/store/biz/service/StoreService.java @@ -99,6 +99,27 @@ public class StoreService implements StoreUseCase { return storeJpaRepository.findById(storeId).get().getTagsJson(); } + @Override + public List getSearchStoreName(String storeName){ + List stores = storeJpaRepository.finByStoreNameContaining(storeName); + + return stores.stream() + .map(store -> StoreListResponse.builder() + .storeId(store.getId()) + .storeName(store.getStoreName()) + .address(store.getAddress()) + .category(store.getCategory()) + .rating(store.getRating()) + .reviewCount(store.getReviewCount()) + .status("운영중") + .tagJson(store.getTagsJson()) + .imageUrl(store.getImageUrl()) + .operatingHours(store.getOperatingHours()) + .build()) + .collect(Collectors.toList()); + } + + @Override public List getCategoryStores(String category){ List stores = storeJpaRepository.findByCategory(category); diff --git a/store/src/main/java/com/ktds/hi/store/biz/usecase/in/StoreUseCase.java b/store/src/main/java/com/ktds/hi/store/biz/usecase/in/StoreUseCase.java index de839dc..51ee750 100644 --- a/store/src/main/java/com/ktds/hi/store/biz/usecase/in/StoreUseCase.java +++ b/store/src/main/java/com/ktds/hi/store/biz/usecase/in/StoreUseCase.java @@ -35,6 +35,7 @@ public interface StoreUseCase { List getCategoryStores(String category); + List getSearchStoreName(String storeName); String getAllTags(Long storeId); diff --git a/store/src/main/java/com/ktds/hi/store/infra/controller/StoreController.java b/store/src/main/java/com/ktds/hi/store/infra/controller/StoreController.java index f581254..b7c58ed 100644 --- a/store/src/main/java/com/ktds/hi/store/infra/controller/StoreController.java +++ b/store/src/main/java/com/ktds/hi/store/infra/controller/StoreController.java @@ -59,6 +59,8 @@ public class StoreController { .body(ApiResponse.success(response, "매장이 성공적으로 등록되었습니다.")); } + + @Operation(summary = "내 매장 목록 조회", description = "점주가 등록한 매장 목록을 조회합니다.") @GetMapping("/my") @PreAuthorize("hasRole('OWNER')") @@ -71,6 +73,8 @@ public class StoreController { return ResponseEntity.ok(ApiResponse.success(responses, "내 매장 목록 조회 완료")); } + + @GetMapping("/stores/all") @Operation(summary = "매장 전체 리스트") public ResponseEntity>> getAllStores() { @@ -79,6 +83,16 @@ public class StoreController { return ResponseEntity.ok(ApiResponse.success(responses)); } + @Operation(summary = "매장 조회", description = "가게 검색한 매장 목록을 조회합니다.") + @GetMapping("/search/storeName/{storeName}") + public ResponseEntity>> getSearchStores( + HttpServletRequest httpRequest, @PathVariable String storeName) { + + List responses = storeUseCase.getSearchStoreName(storeName); + + return ResponseEntity.ok(ApiResponse.success(responses)); + } + @GetMapping("/stores/category/{category}") @Operation(summary = "카테고리에 해당하는 매장") public ResponseEntity>> getStoreCategories(@PathVariable String category) { diff --git a/store/src/main/java/com/ktds/hi/store/infra/gateway/repository/StoreJpaRepository.java b/store/src/main/java/com/ktds/hi/store/infra/gateway/repository/StoreJpaRepository.java index f35e52e..2c8f3f4 100644 --- a/store/src/main/java/com/ktds/hi/store/infra/gateway/repository/StoreJpaRepository.java +++ b/store/src/main/java/com/ktds/hi/store/infra/gateway/repository/StoreJpaRepository.java @@ -46,6 +46,8 @@ public interface StoreJpaRepository extends JpaRepository { */ List findByCategory(String category); + @Query("SELECT s FROM StoreEntity s WHERE s.storeName like %:storeName%") + List finByStoreNameContaining(@Param("keyword") String storeName); /** * 상태로 매장 조회 */