mirror of
https://github.com/won-ktds/smarketing-backend.git
synced 2025-12-06 07:06:24 +00:00
fix store
This commit is contained in:
parent
4f87b5f726
commit
2893c4daf3
@ -43,15 +43,15 @@ public class MenuController {
|
|||||||
/**
|
/**
|
||||||
* 메뉴 목록 조회
|
* 메뉴 목록 조회
|
||||||
*
|
*
|
||||||
* @param category 메뉴 카테고리 (선택사항)
|
* @param storeId 메뉴 카테고리
|
||||||
* @return 메뉴 목록
|
* @return 메뉴 목록
|
||||||
*/
|
*/
|
||||||
@Operation(summary = "메뉴 목록 조회", description = "메뉴 목록을 조회합니다. 카테고리별 필터링 가능합니다.")
|
@Operation(summary = "메뉴 목록 조회", description = "메뉴 목록을 조회합니다. 카테고리별 필터링 가능합니다.")
|
||||||
@GetMapping
|
@GetMapping
|
||||||
public ResponseEntity<ApiResponse<List<MenuResponse>>> getMenus(
|
public ResponseEntity<ApiResponse<List<MenuResponse>>> getMenus(
|
||||||
@Parameter(description = "메뉴 카테고리")
|
@Parameter(description = "가게 ID")
|
||||||
@RequestParam(required = false) String category) {
|
@RequestParam(required = true) Long storeId) {
|
||||||
List<MenuResponse> response = menuService.getMenus(category);
|
List<MenuResponse> response = menuService.getMenus(storeId);
|
||||||
return ResponseEntity.ok(ApiResponse.success(response));
|
return ResponseEntity.ok(ApiResponse.success(response));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package com.won.smarketing.store.controller;
|
|||||||
|
|
||||||
import com.won.smarketing.common.dto.ApiResponse;
|
import com.won.smarketing.common.dto.ApiResponse;
|
||||||
import com.won.smarketing.store.dto.StoreCreateRequest;
|
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.StoreResponse;
|
||||||
import com.won.smarketing.store.dto.StoreUpdateRequest;
|
import com.won.smarketing.store.dto.StoreUpdateRequest;
|
||||||
import com.won.smarketing.store.service.StoreService;
|
import com.won.smarketing.store.service.StoreService;
|
||||||
@ -34,8 +35,8 @@ public class StoreController {
|
|||||||
*/
|
*/
|
||||||
@Operation(summary = "매장 등록", description = "새로운 매장 정보를 등록합니다.")
|
@Operation(summary = "매장 등록", description = "새로운 매장 정보를 등록합니다.")
|
||||||
@PostMapping("/register")
|
@PostMapping("/register")
|
||||||
public ResponseEntity<ApiResponse<StoreResponse>> register(@Valid @RequestBody StoreCreateRequest request) {
|
public ResponseEntity<ApiResponse<StoreCreateResponse>> register(@Valid @RequestBody StoreCreateRequest request) {
|
||||||
StoreResponse response = storeService.register(request);
|
StoreCreateResponse response = storeService.register(request);
|
||||||
return ResponseEntity.ok(ApiResponse.success(response, "매장이 성공적으로 등록되었습니다."));
|
return ResponseEntity.ok(ApiResponse.success(response, "매장이 성공적으로 등록되었습니다."));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
@ -24,34 +24,34 @@ public class StoreResponse {
|
|||||||
|
|
||||||
@Schema(description = "매장명", example = "맛있는 카페")
|
@Schema(description = "매장명", example = "맛있는 카페")
|
||||||
private String storeName;
|
private String storeName;
|
||||||
|
|
||||||
@Schema(description = "업종", example = "카페")
|
@Schema(description = "업종", example = "카페")
|
||||||
private String businessType;
|
private String businessType;
|
||||||
|
|
||||||
@Schema(description = "주소", example = "서울시 강남구 테헤란로 123")
|
@Schema(description = "주소", example = "서울시 강남구 테헤란로 123")
|
||||||
private String address;
|
private String address;
|
||||||
|
|
||||||
@Schema(description = "전화번호", example = "02-1234-5678")
|
@Schema(description = "전화번호", example = "02-1234-5678")
|
||||||
private String phoneNumber;
|
private String phoneNumber;
|
||||||
|
|
||||||
@Schema(description = "영업시간", example = "09:00 - 22:00")
|
@Schema(description = "영업시간", example = "09:00 - 22:00")
|
||||||
private String businessHours;
|
private String businessHours;
|
||||||
|
|
||||||
@Schema(description = "휴무일", example = "매주 일요일")
|
@Schema(description = "휴무일", example = "매주 일요일")
|
||||||
private String closedDays;
|
private String closedDays;
|
||||||
|
|
||||||
@Schema(description = "좌석 수", example = "20")
|
@Schema(description = "좌석 수", example = "20")
|
||||||
private Integer seatCount;
|
private Integer seatCount;
|
||||||
|
|
||||||
@Schema(description = "SNS 계정 정보", example = "인스타그램: @mystore")
|
@Schema(description = "SNS 계정 정보", example = "인스타그램: @mystore")
|
||||||
private String snsAccounts;
|
private String snsAccounts;
|
||||||
|
|
||||||
@Schema(description = "매장 설명", example = "따뜻한 분위기의 동네 카페입니다.")
|
@Schema(description = "매장 설명", example = "따뜻한 분위기의 동네 카페입니다.")
|
||||||
private String description;
|
private String description;
|
||||||
|
|
||||||
@Schema(description = "등록일시", example = "2024-01-15T10:30:00")
|
@Schema(description = "등록일시", example = "2024-01-15T10:30:00")
|
||||||
private LocalDateTime createdAt;
|
private LocalDateTime createdAt;
|
||||||
|
|
||||||
@Schema(description = "수정일시", example = "2024-01-15T10:30:00")
|
@Schema(description = "수정일시", example = "2024-01-15T10:30:00")
|
||||||
private LocalDateTime updatedAt;
|
private LocalDateTime updatedAt;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,21 +14,12 @@ import java.util.Optional;
|
|||||||
*/
|
*/
|
||||||
@Repository
|
@Repository
|
||||||
public interface MenuRepository extends JpaRepository<Menu, Long> {
|
public interface MenuRepository extends JpaRepository<Menu, Long> {
|
||||||
|
// /**
|
||||||
/**
|
// * 전체 메뉴 조회 (메뉴명 오름차순)
|
||||||
* 카테고리별 메뉴 조회 (메뉴명 오름차순)
|
// *
|
||||||
*
|
// * @return 메뉴 목록
|
||||||
* @param category 메뉴 카테고리
|
// */
|
||||||
* @return 메뉴 목록
|
// List<Menu> findAllByOrderByMenuNameAsc(Long );
|
||||||
*/
|
|
||||||
List<Menu> findByCategoryOrderByMenuNameAsc(String category);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 전체 메뉴 조회 (메뉴명 오름차순)
|
|
||||||
*
|
|
||||||
* @return 메뉴 목록
|
|
||||||
*/
|
|
||||||
List<Menu> findAllByOrderByMenuNameAsc();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 매장별 메뉴 조회
|
* 매장별 메뉴 조회
|
||||||
|
|||||||
@ -23,10 +23,10 @@ public interface MenuService {
|
|||||||
/**
|
/**
|
||||||
* 메뉴 목록 조회
|
* 메뉴 목록 조회
|
||||||
*
|
*
|
||||||
* @param category 메뉴 카테고리 (선택사항)
|
* @param storeId 가게 ID
|
||||||
* @return 메뉴 목록
|
* @return 메뉴 목록
|
||||||
*/
|
*/
|
||||||
List<MenuResponse> getMenus(String category);
|
List<MenuResponse> getMenus(Long storeId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 메뉴 정보 수정
|
* 메뉴 정보 수정
|
||||||
|
|||||||
@ -51,18 +51,14 @@ public class MenuServiceImpl implements MenuService {
|
|||||||
/**
|
/**
|
||||||
* 메뉴 목록 조회
|
* 메뉴 목록 조회
|
||||||
*
|
*
|
||||||
* @param category 메뉴 카테고리 (선택사항)
|
* @param storeId 가게 ID
|
||||||
* @return 메뉴 목록
|
* @return 메뉴 목록
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<MenuResponse> getMenus(String category) {
|
public List<MenuResponse> getMenus(Long storeId) {
|
||||||
List<Menu> menus;
|
List<Menu> menus;
|
||||||
|
|
||||||
if (category != null && !category.trim().isEmpty()) {
|
menus = menuRepository.findByStoreId(storeId);
|
||||||
menus = menuRepository.findByCategoryOrderByMenuNameAsc(category);
|
|
||||||
} else {
|
|
||||||
menus = menuRepository.findAllByOrderByMenuNameAsc();
|
|
||||||
}
|
|
||||||
|
|
||||||
return menus.stream()
|
return menus.stream()
|
||||||
.map(this::toMenuResponse)
|
.map(this::toMenuResponse)
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package com.won.smarketing.store.service;
|
package com.won.smarketing.store.service;
|
||||||
|
|
||||||
import com.won.smarketing.store.dto.StoreCreateRequest;
|
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.StoreResponse;
|
||||||
import com.won.smarketing.store.dto.StoreUpdateRequest;
|
import com.won.smarketing.store.dto.StoreUpdateRequest;
|
||||||
|
|
||||||
@ -16,7 +17,7 @@ public interface StoreService {
|
|||||||
* @param request 매장 등록 요청 정보
|
* @param request 매장 등록 요청 정보
|
||||||
* @return 등록된 매장 정보
|
* @return 등록된 매장 정보
|
||||||
*/
|
*/
|
||||||
StoreResponse register(StoreCreateRequest request);
|
StoreCreateResponse register(StoreCreateRequest request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 매장 정보 조회 (현재 로그인 사용자)
|
* 매장 정보 조회 (현재 로그인 사용자)
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package com.won.smarketing.store.service;
|
|||||||
import com.won.smarketing.common.exception.BusinessException;
|
import com.won.smarketing.common.exception.BusinessException;
|
||||||
import com.won.smarketing.common.exception.ErrorCode;
|
import com.won.smarketing.common.exception.ErrorCode;
|
||||||
import com.won.smarketing.store.dto.StoreCreateRequest;
|
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.StoreResponse;
|
||||||
import com.won.smarketing.store.dto.StoreUpdateRequest;
|
import com.won.smarketing.store.dto.StoreUpdateRequest;
|
||||||
import com.won.smarketing.store.entity.Store;
|
import com.won.smarketing.store.entity.Store;
|
||||||
@ -35,7 +36,7 @@ public class StoreServiceImpl implements StoreService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public StoreResponse register(StoreCreateRequest request) {
|
public StoreCreateResponse register(StoreCreateRequest request) {
|
||||||
String memberId = getCurrentUserId();
|
String memberId = getCurrentUserId();
|
||||||
// Long memberId = Long.valueOf(currentUserId); // 실제로는 Member ID 조회 필요
|
// Long memberId = Long.valueOf(currentUserId); // 실제로는 Member ID 조회 필요
|
||||||
|
|
||||||
@ -63,7 +64,7 @@ public class StoreServiceImpl implements StoreService {
|
|||||||
Store savedStore = storeRepository.save(store);
|
Store savedStore = storeRepository.save(store);
|
||||||
log.info("매장 등록 완료: {} (ID: {})", savedStore.getStoreName(), savedStore.getId());
|
log.info("매장 등록 완료: {} (ID: {})", savedStore.getStoreName(), savedStore.getId());
|
||||||
|
|
||||||
return toStoreResponse(savedStore);
|
return toStoreCreateResponse(savedStore);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -158,6 +159,23 @@ public class StoreServiceImpl implements StoreService {
|
|||||||
.build();
|
.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 조회
|
* 현재 로그인된 사용자 ID 조회
|
||||||
*
|
*
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user