fix store

This commit is contained in:
박서은 2025-06-13 10:27:22 +09:00
parent 4f87b5f726
commit 2893c4daf3
9 changed files with 107 additions and 44 deletions

View File

@ -43,15 +43,15 @@ public class MenuController {
/**
* 메뉴 목록 조회
*
* @param category 메뉴 카테고리 (선택사항)
* @param storeId 메뉴 카테고리
* @return 메뉴 목록
*/
@Operation(summary = "메뉴 목록 조회", description = "메뉴 목록을 조회합니다. 카테고리별 필터링 가능합니다.")
@GetMapping
public ResponseEntity<ApiResponse<List<MenuResponse>>> getMenus(
@Parameter(description = "메뉴 카테고리")
@RequestParam(required = false) String category) {
List<MenuResponse> response = menuService.getMenus(category);
@Parameter(description = "가게 ID")
@RequestParam(required = true) Long storeId) {
List<MenuResponse> response = menuService.getMenus(storeId);
return ResponseEntity.ok(ApiResponse.success(response));
}

View File

@ -2,6 +2,7 @@ package com.won.smarketing.store.controller;
import com.won.smarketing.common.dto.ApiResponse;
import com.won.smarketing.store.dto.StoreCreateRequest;
import com.won.smarketing.store.dto.StoreCreateResponse;
import com.won.smarketing.store.dto.StoreResponse;
import com.won.smarketing.store.dto.StoreUpdateRequest;
import com.won.smarketing.store.service.StoreService;
@ -34,8 +35,8 @@ public class StoreController {
*/
@Operation(summary = "매장 등록", description = "새로운 매장 정보를 등록합니다.")
@PostMapping("/register")
public ResponseEntity<ApiResponse<StoreResponse>> register(@Valid @RequestBody StoreCreateRequest request) {
StoreResponse response = storeService.register(request);
public ResponseEntity<ApiResponse<StoreCreateResponse>> register(@Valid @RequestBody StoreCreateRequest request) {
StoreCreateResponse response = storeService.register(request);
return ResponseEntity.ok(ApiResponse.success(response, "매장이 성공적으로 등록되었습니다."));
}

View File

@ -0,0 +1,56 @@
package com.won.smarketing.store.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 매장 응답 DTO
* 매장 정보를 클라이언트에게 전달합니다.
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Schema(description = "매장 응답")
public class StoreCreateResponse {
@Schema(description = "매장 ID", example = "1")
private Long storeId;
// @Schema(description = "매장명", example = "맛있는 카페")
// private String storeName;
//
// @Schema(description = "업종", example = "카페")
// private String businessType;
//
// @Schema(description = "주소", example = "서울시 강남구 테헤란로 123")
// private String address;
//
// @Schema(description = "전화번호", example = "02-1234-5678")
// private String phoneNumber;
//
// @Schema(description = "영업시간", example = "09:00 - 22:00")
// private String businessHours;
//
// @Schema(description = "휴무일", example = "매주 일요일")
// private String closedDays;
//
// @Schema(description = "좌석 수", example = "20")
// private Integer seatCount;
//
// @Schema(description = "SNS 계정 정보", example = "인스타그램: @mystore")
// private String snsAccounts;
//
// @Schema(description = "매장 설명", example = "따뜻한 분위기의 동네 카페입니다.")
// private String description;
//
// @Schema(description = "등록일시", example = "2024-01-15T10:30:00")
// private LocalDateTime createdAt;
//
// @Schema(description = "수정일시", example = "2024-01-15T10:30:00")
// private LocalDateTime updatedAt;
}

View File

@ -24,34 +24,34 @@ public class StoreResponse {
@Schema(description = "매장명", example = "맛있는 카페")
private String storeName;
@Schema(description = "업종", example = "카페")
private String businessType;
@Schema(description = "주소", example = "서울시 강남구 테헤란로 123")
private String address;
@Schema(description = "전화번호", example = "02-1234-5678")
private String phoneNumber;
@Schema(description = "영업시간", example = "09:00 - 22:00")
private String businessHours;
@Schema(description = "휴무일", example = "매주 일요일")
private String closedDays;
@Schema(description = "좌석 수", example = "20")
private Integer seatCount;
@Schema(description = "SNS 계정 정보", example = "인스타그램: @mystore")
private String snsAccounts;
@Schema(description = "매장 설명", example = "따뜻한 분위기의 동네 카페입니다.")
private String description;
@Schema(description = "등록일시", example = "2024-01-15T10:30:00")
private LocalDateTime createdAt;
@Schema(description = "수정일시", example = "2024-01-15T10:30:00")
private LocalDateTime updatedAt;
}

View File

@ -14,21 +14,12 @@ import java.util.Optional;
*/
@Repository
public interface MenuRepository extends JpaRepository<Menu, Long> {
/**
* 카테고리별 메뉴 조회 (메뉴명 오름차순)
*
* @param category 메뉴 카테고리
* @return 메뉴 목록
*/
List<Menu> findByCategoryOrderByMenuNameAsc(String category);
/**
* 전체 메뉴 조회 (메뉴명 오름차순)
*
* @return 메뉴 목록
*/
List<Menu> findAllByOrderByMenuNameAsc();
// /**
// * 전체 메뉴 조회 (메뉴명 오름차순)
// *
// * @return 메뉴 목록
// */
// List<Menu> findAllByOrderByMenuNameAsc(Long );
/**
* 매장별 메뉴 조회

View File

@ -23,10 +23,10 @@ public interface MenuService {
/**
* 메뉴 목록 조회
*
* @param category 메뉴 카테고리 (선택사항)
* @param storeId 가게 ID
* @return 메뉴 목록
*/
List<MenuResponse> getMenus(String category);
List<MenuResponse> getMenus(Long storeId);
/**
* 메뉴 정보 수정

View File

@ -51,18 +51,14 @@ public class MenuServiceImpl implements MenuService {
/**
* 메뉴 목록 조회
*
* @param category 메뉴 카테고리 (선택사항)
* @param storeId 가게 ID
* @return 메뉴 목록
*/
@Override
public List<MenuResponse> getMenus(String category) {
public List<MenuResponse> getMenus(Long storeId) {
List<Menu> menus;
if (category != null && !category.trim().isEmpty()) {
menus = menuRepository.findByCategoryOrderByMenuNameAsc(category);
} else {
menus = menuRepository.findAllByOrderByMenuNameAsc();
}
menus = menuRepository.findByStoreId(storeId);
return menus.stream()
.map(this::toMenuResponse)

View File

@ -1,6 +1,7 @@
package com.won.smarketing.store.service;
import com.won.smarketing.store.dto.StoreCreateRequest;
import com.won.smarketing.store.dto.StoreCreateResponse;
import com.won.smarketing.store.dto.StoreResponse;
import com.won.smarketing.store.dto.StoreUpdateRequest;
@ -16,7 +17,7 @@ public interface StoreService {
* @param request 매장 등록 요청 정보
* @return 등록된 매장 정보
*/
StoreResponse register(StoreCreateRequest request);
StoreCreateResponse register(StoreCreateRequest request);
/**
* 매장 정보 조회 (현재 로그인 사용자)

View File

@ -3,6 +3,7 @@ package com.won.smarketing.store.service;
import com.won.smarketing.common.exception.BusinessException;
import com.won.smarketing.common.exception.ErrorCode;
import com.won.smarketing.store.dto.StoreCreateRequest;
import com.won.smarketing.store.dto.StoreCreateResponse;
import com.won.smarketing.store.dto.StoreResponse;
import com.won.smarketing.store.dto.StoreUpdateRequest;
import com.won.smarketing.store.entity.Store;
@ -35,7 +36,7 @@ public class StoreServiceImpl implements StoreService {
*/
@Override
@Transactional
public StoreResponse register(StoreCreateRequest request) {
public StoreCreateResponse register(StoreCreateRequest request) {
String memberId = getCurrentUserId();
// Long memberId = Long.valueOf(currentUserId); // 실제로는 Member ID 조회 필요
@ -63,7 +64,7 @@ public class StoreServiceImpl implements StoreService {
Store savedStore = storeRepository.save(store);
log.info("매장 등록 완료: {} (ID: {})", savedStore.getStoreName(), savedStore.getId());
return toStoreResponse(savedStore);
return toStoreCreateResponse(savedStore);
}
/**
@ -158,6 +159,23 @@ public class StoreServiceImpl implements StoreService {
.build();
}
private StoreCreateResponse toStoreCreateResponse(Store store) {
return StoreCreateResponse.builder()
.storeId(store.getId())
// .storeName(store.getStoreName())
// .businessType(store.getBusinessType())
// .address(store.getAddress())
// .phoneNumber(store.getPhoneNumber())
// .businessHours(store.getBusinessHours())
// .closedDays(store.getClosedDays())
// .seatCount(store.getSeatCount())
// .snsAccounts(store.getSnsAccounts())
// .description(store.getDescription())
// .createdAt(store.getCreatedAt())
// .updatedAt(store.getUpdatedAt())
.build();
}
/**
* 현재 로그인된 사용자 ID 조회
*