store all
This commit is contained in:
parent
cf9abb1b54
commit
2080c5476a
BIN
logs/recommend-service.log.2025-06-17.0.gz
Normal file
BIN
logs/recommend-service.log.2025-06-17.0.gz
Normal file
Binary file not shown.
@ -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.biz.usecase.in.StoreUseCase;
|
||||||
import com.ktds.hi.store.infra.dto.*;
|
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.StoreEntity;
|
||||||
import com.ktds.hi.store.infra.gateway.entity.TagEntity;
|
import com.ktds.hi.store.infra.gateway.entity.TagEntity;
|
||||||
import com.ktds.hi.store.infra.gateway.repository.StoreJpaRepository;
|
import com.ktds.hi.store.infra.gateway.repository.StoreJpaRepository;
|
||||||
@ -93,6 +94,27 @@ public class StoreService implements StoreUseCase {
|
|||||||
.collect(Collectors.toList());
|
.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
|
@Override
|
||||||
public StoreDetailResponse getStoreDetail(Long storeId) {
|
public StoreDetailResponse getStoreDetail(Long storeId) {
|
||||||
|
|
||||||
@ -157,6 +179,10 @@ public class StoreService implements StoreUseCase {
|
|||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<StoreSearchResponse> searchStores(String keyword, String category, String tags,
|
public List<StoreSearchResponse> searchStores(String keyword, String category, String tags,
|
||||||
Double latitude, Double longitude, Integer radius,
|
Double latitude, Double longitude, Integer radius,
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package com.ktds.hi.store.biz.usecase.in;
|
package com.ktds.hi.store.biz.usecase.in;
|
||||||
|
|
||||||
import com.ktds.hi.store.infra.dto.*;
|
import com.ktds.hi.store.infra.dto.*;
|
||||||
|
import com.ktds.hi.store.infra.dto.response.StoreListResponse;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -30,6 +31,8 @@ public interface StoreUseCase {
|
|||||||
*/
|
*/
|
||||||
List<MyStoreListResponse> getMyStores(Long ownerId);
|
List<MyStoreListResponse> getMyStores(Long ownerId);
|
||||||
|
|
||||||
|
List<StoreListResponse> getAllStores();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 매장 상세 조회
|
* 매장 상세 조회
|
||||||
*
|
*
|
||||||
@ -73,4 +76,6 @@ public interface StoreUseCase {
|
|||||||
List<StoreSearchResponse> searchStores(String keyword, String category, String tags,
|
List<StoreSearchResponse> searchStores(String keyword, String category, String tags,
|
||||||
Double latitude, Double longitude, Integer radius,
|
Double latitude, Double longitude, Integer radius,
|
||||||
Integer page, Integer size);
|
Integer page, Integer size);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,11 +1,14 @@
|
|||||||
// store/src/main/java/com/ktds/hi/store/infra/controller/StoreController.java
|
// store/src/main/java/com/ktds/hi/store/infra/controller/StoreController.java
|
||||||
package com.ktds.hi.store.infra.controller;
|
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.MenuUseCase;
|
||||||
import com.ktds.hi.store.biz.usecase.in.StoreUseCase;
|
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.store.infra.dto.*;
|
||||||
import com.ktds.hi.common.dto.ApiResponse;
|
import com.ktds.hi.common.dto.ApiResponse;
|
||||||
import com.ktds.hi.common.security.JwtTokenProvider;
|
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 com.ktds.hi.store.infra.dto.response.StoreMenuListResponse;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
@ -38,6 +41,7 @@ import java.util.List;
|
|||||||
public class StoreController {
|
public class StoreController {
|
||||||
|
|
||||||
private final StoreUseCase storeUseCase;
|
private final StoreUseCase storeUseCase;
|
||||||
|
private final StoreService storeService;
|
||||||
private final JwtTokenProvider jwtTokenProvider;
|
private final JwtTokenProvider jwtTokenProvider;
|
||||||
private final MenuUseCase menuUseCase;
|
private final MenuUseCase menuUseCase;
|
||||||
|
|
||||||
@ -68,6 +72,14 @@ public class StoreController {
|
|||||||
return ResponseEntity.ok(ApiResponse.success(responses, "내 매장 목록 조회 완료"));
|
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 = "매장의 상세 정보를 조회합니다.")
|
@Operation(summary = "매장 상세 조회", description = "매장의 상세 정보를 조회합니다.")
|
||||||
@GetMapping("/{storeId}")
|
@GetMapping("/{storeId}")
|
||||||
public ResponseEntity<ApiResponse<StoreDetailResponse>> getStoreDetail(
|
public ResponseEntity<ApiResponse<StoreDetailResponse>> getStoreDetail(
|
||||||
@ -133,6 +145,8 @@ public class StoreController {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@GetMapping("/{storeId}/menus/popular")
|
@GetMapping("/{storeId}/menus/popular")
|
||||||
@Operation(summary = "매장 인기 메뉴 조회", description = "매장의 인기 메뉴(주문 횟수 기준)를 조회합니다.")
|
@Operation(summary = "매장 인기 메뉴 조회", description = "매장의 인기 메뉴(주문 횟수 기준)를 조회합니다.")
|
||||||
public ResponseEntity<ApiResponse<List<StoreMenuListResponse>>> getPopularMenus(
|
public ResponseEntity<ApiResponse<List<StoreMenuListResponse>>> getPopularMenus(
|
||||||
|
|||||||
@ -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;
|
||||||
|
}
|
||||||
@ -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")
|
@Query("SELECT s FROM StoreEntity s WHERE s.status = 'ACTIVE' ORDER BY s.rating DESC")
|
||||||
Page<StoreEntity> findAllByOrderByRatingDesc(Pageable pageable);
|
Page<StoreEntity> findAllByOrderByRatingDesc(Pageable pageable);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 점주 ID로 매장 목록 조회
|
* 점주 ID로 매장 목록 조회
|
||||||
*/
|
*/
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user