store all

This commit is contained in:
youbeen 2025-06-18 16:02:30 +09:00
parent cf9abb1b54
commit 2080c5476a
7 changed files with 88 additions and 0 deletions

BIN
dump.rdb

Binary file not shown.

Binary file not shown.

View File

@ -3,6 +3,7 @@ package com.ktds.hi.store.biz.service;
import com.ktds.hi.store.biz.usecase.in.StoreUseCase;
import com.ktds.hi.store.infra.dto.*;
import com.ktds.hi.store.infra.dto.response.StoreListResponse;
import com.ktds.hi.store.infra.gateway.entity.StoreEntity;
import com.ktds.hi.store.infra.gateway.entity.TagEntity;
import com.ktds.hi.store.infra.gateway.repository.StoreJpaRepository;
@ -93,6 +94,27 @@ public class StoreService implements StoreUseCase {
.collect(Collectors.toList());
}
@Override
public List<StoreListResponse> getAllStores() {
List<StoreEntity> stores = storeJpaRepository.findAll();
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("운영중")
.imageUrl(store.getImageUrl())
.operatingHours(store.getOperatingHours())
.build())
.collect(Collectors.toList());
}
@Override
public StoreDetailResponse getStoreDetail(Long storeId) {
@ -157,6 +179,10 @@ public class StoreService implements StoreUseCase {
.build();
}
@Override
public List<StoreSearchResponse> searchStores(String keyword, String category, String tags,
Double latitude, Double longitude, Integer radius,

View File

@ -1,6 +1,7 @@
package com.ktds.hi.store.biz.usecase.in;
import com.ktds.hi.store.infra.dto.*;
import com.ktds.hi.store.infra.dto.response.StoreListResponse;
import java.util.List;
@ -30,6 +31,8 @@ public interface StoreUseCase {
*/
List<MyStoreListResponse> getMyStores(Long ownerId);
List<StoreListResponse> getAllStores();
/**
* 매장 상세 조회
*
@ -73,4 +76,6 @@ public interface StoreUseCase {
List<StoreSearchResponse> searchStores(String keyword, String category, String tags,
Double latitude, Double longitude, Integer radius,
Integer page, Integer size);
}

View File

@ -1,11 +1,14 @@
// store/src/main/java/com/ktds/hi/store/infra/controller/StoreController.java
package com.ktds.hi.store.infra.controller;
import com.ktds.hi.store.biz.service.StoreService;
import com.ktds.hi.store.biz.usecase.in.MenuUseCase;
import com.ktds.hi.store.biz.usecase.in.StoreUseCase;
import com.ktds.hi.store.domain.Store;
import com.ktds.hi.store.infra.dto.*;
import com.ktds.hi.common.dto.ApiResponse;
import com.ktds.hi.common.security.JwtTokenProvider;
import com.ktds.hi.store.infra.dto.response.StoreListResponse;
import com.ktds.hi.store.infra.dto.response.StoreMenuListResponse;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@ -38,6 +41,7 @@ import java.util.List;
public class StoreController {
private final StoreUseCase storeUseCase;
private final StoreService storeService;
private final JwtTokenProvider jwtTokenProvider;
private final MenuUseCase menuUseCase;
@ -68,6 +72,14 @@ public class StoreController {
return ResponseEntity.ok(ApiResponse.success(responses, "내 매장 목록 조회 완료"));
}
@GetMapping("/stores/all")
@Operation(summary = "매장 전체 리스트")
public ResponseEntity<ApiResponse<List<StoreListResponse>>> getAllStores() {
List<StoreListResponse> responses = storeUseCase.getAllStores();
return ResponseEntity.ok(ApiResponse.success(responses));
}
@Operation(summary = "매장 상세 조회", description = "매장의 상세 정보를 조회합니다.")
@GetMapping("/{storeId}")
public ResponseEntity<ApiResponse<StoreDetailResponse>> getStoreDetail(
@ -133,6 +145,8 @@ public class StoreController {
@GetMapping("/{storeId}/menus/popular")
@Operation(summary = "매장 인기 메뉴 조회", description = "매장의 인기 메뉴(주문 횟수 기준)를 조회합니다.")
public ResponseEntity<ApiResponse<List<StoreMenuListResponse>>> getPopularMenus(

View File

@ -0,0 +1,42 @@
package com.ktds.hi.store.infra.dto.response;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "내 매장 목록 응답")
public class StoreListResponse {
@Schema(description = "매장 ID", example = "1")
private Long storeId;
@Schema(description = "매장명", example = "맛집 한번 가볼래?")
private String storeName;
@Schema(description = "주소", example = "서울시 강남구 테헤란로 123")
private String address;
@Schema(description = "카테고리", example = "한식")
private String category;
@Schema(description = "평점", example = "4.5")
private Double rating;
@Schema(description = "리뷰 수", example = "127")
private Integer reviewCount;
@Schema(description = "운영 상태", example = "운영중")
private String status;
@Schema(description = "운영시간", example = "월-금 09:00-21:00")
private String operatingHours;
@Schema(description = "매장 이미지")
private String imageUrl;
}

View File

@ -24,6 +24,7 @@ public interface StoreJpaRepository extends JpaRepository<StoreEntity, Long> {
@Query("SELECT s FROM StoreEntity s WHERE s.status = 'ACTIVE' ORDER BY s.rating DESC")
Page<StoreEntity> findAllByOrderByRatingDesc(Pageable pageable);
/**
* 점주 ID로 매장 목록 조회
*/