From aef33c73d2b4483870f11f42f2bbe2a40935aa4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=95=88=EC=A0=95=ED=9B=84?= Date: Mon, 5 Aug 2024 00:24:49 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20menu=20=EC=B6=94=EA=B0=80=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/CustomerSaveUseCase.java | 20 ++++++++++++++++ .../apimodule/customer/dto/AddMenu.java | 8 +++++++ .../presentation/CustomerController.java | 23 ++++++++++++++++++- .../menu/service/MenuQueryService.java | 4 ++++ 4 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 api-module/src/main/java/com/likelion/apimodule/customer/dto/AddMenu.java diff --git a/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerSaveUseCase.java b/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerSaveUseCase.java index 884d0f7..9979074 100644 --- a/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerSaveUseCase.java +++ b/api-module/src/main/java/com/likelion/apimodule/customer/application/CustomerSaveUseCase.java @@ -1,14 +1,21 @@ package com.likelion.apimodule.customer.application; +import com.likelion.apimodule.customer.dto.AddMenu; +import com.likelion.commonmodule.image.service.AwsS3Service; import com.likelion.coremodule.VisitList.domain.VisitList; import com.likelion.coremodule.VisitList.service.VisitListQueryService; +import com.likelion.coremodule.menu.domain.Menu; +import com.likelion.coremodule.menu.service.MenuQueryService; import com.likelion.coremodule.order.domain.Order; import com.likelion.coremodule.order.service.OrderQueryService; +import com.likelion.coremodule.store.domain.Store; +import com.likelion.coremodule.store.service.StoreQueryService; import com.likelion.coremodule.user.application.UserQueryService; import com.likelion.coremodule.user.domain.User; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; @Service @RequiredArgsConstructor @@ -18,6 +25,9 @@ public class CustomerSaveUseCase { private final VisitListQueryService visitListQueryService; private final OrderQueryService orderQueryService; private final UserQueryService userQueryService; + private final StoreQueryService storeQueryService; + private final AwsS3Service awsS3Service; + private final MenuQueryService menuQueryService; public void changeToPreparing(Long storeId, Long orderId) { @@ -36,4 +46,14 @@ public void changeToPrepared(Long storeId, Long orderId) { VisitList visitList = visitListQueryService.findVisitListByStoreIdAndUserId(storeId, user.getUserId()); visitList.updateToPrepared(); } + + public void addMenuInfo(Long storeId, AddMenu addMenu, MultipartFile multipartFile) { + + Store store = storeQueryService.findStoreById(storeId); + String imageUrl = awsS3Service.uploadFile(multipartFile); + + final Menu menu = Menu.builder().store(store).name(addMenu.name()).content(addMenu.content()). + imageUrl(imageUrl).price(addMenu.price()).build(); + menuQueryService.saveMenu(menu); + } } diff --git a/api-module/src/main/java/com/likelion/apimodule/customer/dto/AddMenu.java b/api-module/src/main/java/com/likelion/apimodule/customer/dto/AddMenu.java new file mode 100644 index 0000000..e3ad809 --- /dev/null +++ b/api-module/src/main/java/com/likelion/apimodule/customer/dto/AddMenu.java @@ -0,0 +1,8 @@ +package com.likelion.apimodule.customer.dto; + +public record AddMenu( + String name, + Integer price, + String content +) { +} diff --git a/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java b/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java index b77515f..23d51c0 100644 --- a/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java +++ b/api-module/src/main/java/com/likelion/apimodule/customer/presentation/CustomerController.java @@ -2,6 +2,7 @@ import com.likelion.apimodule.customer.application.CustomerFIndUseCase; import com.likelion.apimodule.customer.application.CustomerSaveUseCase; +import com.likelion.apimodule.customer.dto.AddMenu; import com.likelion.apimodule.customer.dto.TotalOrder; import com.likelion.commonmodule.exception.common.ApplicationResponse; import io.swagger.v3.oas.annotations.Operation; @@ -11,6 +12,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.util.List; @@ -86,6 +88,25 @@ public ApplicationResponse changeToPrepared( return ApplicationResponse.ok("주문을 준비 완료했습니다."); } - // 메뉴 추가 API (소연) + @PostMapping("/{storeId}/addmenu") + @ApiResponses( + value = { + @ApiResponse( + responseCode = "200", + description = "메뉴 추가 완료", + useReturnTypeSchema = true + ) + } + ) + @Operation(summary = "메뉴 추가 완료 API", description = "메뉴 추가 완료 API 입니다.") + public ApplicationResponse addMenuInfo( + @PathVariable Long storeId, + @RequestPart(value = "dto") AddMenu addMenu, + @RequestPart(value = "file") MultipartFile multipartFile) { + + customerSaveUseCase.addMenuInfo(storeId, addMenu, multipartFile); + return ApplicationResponse.ok("메뉴 추가가 완료 되었습니다."); + } + } diff --git a/core-module/src/main/java/com/likelion/coremodule/menu/service/MenuQueryService.java b/core-module/src/main/java/com/likelion/coremodule/menu/service/MenuQueryService.java index d7c9f51..85719d4 100644 --- a/core-module/src/main/java/com/likelion/coremodule/menu/service/MenuQueryService.java +++ b/core-module/src/main/java/com/likelion/coremodule/menu/service/MenuQueryService.java @@ -19,6 +19,10 @@ public List findAllMenus() { return menuRepository.findAll(); } + public void saveMenu(Menu menu) { + menuRepository.save(menu); + } + public Menu findMenuById(Long menuId) { return menuRepository.findById(menuId).orElseThrow(() -> new MenuException(MenuErrorCode.NO_MENU_INFO)); }