From 47bff5398523ef4e9fca6ed7f1705a2c71a784f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=95=88=EC=A0=95=ED=9B=84?= Date: Mon, 22 Jul 2024 20:26:04 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=9E=A5=EB=B0=94=EA=B5=AC=EB=8B=88=20?= =?UTF-8?q?=EC=A0=80=EC=9E=A5=20=EA=B8=B0=EB=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cart/application/CartSaveUseCase.java | 34 +++++++++++++++++++ .../apimodule/cart/dto/CartSaveReq.java | 7 ++++ .../cart/presentation/CartController.java | 25 +++++++++++--- .../likelion/coremodule/cart/domain/Cart.java | 1 - 4 files changed, 62 insertions(+), 5 deletions(-) create mode 100644 api-module/src/main/java/com/likelion/apimodule/cart/application/CartSaveUseCase.java create mode 100644 api-module/src/main/java/com/likelion/apimodule/cart/dto/CartSaveReq.java diff --git a/api-module/src/main/java/com/likelion/apimodule/cart/application/CartSaveUseCase.java b/api-module/src/main/java/com/likelion/apimodule/cart/application/CartSaveUseCase.java new file mode 100644 index 0000000..9c9bb6c --- /dev/null +++ b/api-module/src/main/java/com/likelion/apimodule/cart/application/CartSaveUseCase.java @@ -0,0 +1,34 @@ +package com.likelion.apimodule.cart.application; + +import com.likelion.apimodule.cart.dto.CartSaveReq; +import com.likelion.apimodule.security.util.JwtUtil; +import com.likelion.coremodule.cart.domain.Cart; +import com.likelion.coremodule.cart.service.CartQueryService; +import com.likelion.coremodule.menu.domain.Menu; +import com.likelion.coremodule.menu.service.MenuQueryService; +import com.likelion.coremodule.user.application.UserQueryService; +import com.likelion.coremodule.user.domain.User; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class CartSaveUseCase { + + private final CartQueryService cartQueryService; + private final JwtUtil jwtUtil; + private final UserQueryService userQueryService; + private final MenuQueryService menuQueryService; + + public void saveMyCart(String accessToken, CartSaveReq saveReq) { + + String email = jwtUtil.getEmail(accessToken); + User user = userQueryService.findByEmail(email); + + Menu menu = menuQueryService.findMenuById(saveReq.menuId()); + + final Cart cart = Cart.builder().user(user).menu(menu).quantity(saveReq.quantity()).build(); + cartQueryService.saveCart(cart); + } +} diff --git a/api-module/src/main/java/com/likelion/apimodule/cart/dto/CartSaveReq.java b/api-module/src/main/java/com/likelion/apimodule/cart/dto/CartSaveReq.java new file mode 100644 index 0000000..a62a94a --- /dev/null +++ b/api-module/src/main/java/com/likelion/apimodule/cart/dto/CartSaveReq.java @@ -0,0 +1,7 @@ +package com.likelion.apimodule.cart.dto; + +public record CartSaveReq( + Long menuId, + Integer quantity +) { +} diff --git a/api-module/src/main/java/com/likelion/apimodule/cart/presentation/CartController.java b/api-module/src/main/java/com/likelion/apimodule/cart/presentation/CartController.java index d7bcc4e..16a3239 100644 --- a/api-module/src/main/java/com/likelion/apimodule/cart/presentation/CartController.java +++ b/api-module/src/main/java/com/likelion/apimodule/cart/presentation/CartController.java @@ -1,7 +1,9 @@ package com.likelion.apimodule.cart.presentation; import com.likelion.apimodule.cart.application.CartFindUseCase; +import com.likelion.apimodule.cart.application.CartSaveUseCase; import com.likelion.apimodule.cart.dto.CartInfo; +import com.likelion.apimodule.cart.dto.CartSaveReq; import com.likelion.commonmodule.exception.common.ApplicationResponse; import com.likelion.commonmodule.security.util.AuthConsts; import io.swagger.v3.oas.annotations.Operation; @@ -10,10 +12,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestHeader; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -25,6 +24,7 @@ public class CartController { private final CartFindUseCase cartFindUseCase; + private final CartSaveUseCase cartSaveUseCase; // 장바구니 조회 @GetMapping @@ -46,6 +46,23 @@ public ApplicationResponse> getMyCartInfo(@RequestHeader(AuthCons } // 장바구니 저장 + @PostMapping + @ApiResponses( + value = { + @ApiResponse( + responseCode = "200", + description = "나의 장바구니 저장 성공", + useReturnTypeSchema = true + ) + } + ) + @Operation(summary = "나의 장바구니 저장 API", description = "나의 장바구니 저장 API 입니다.") + public ApplicationResponse saveMyCart(@RequestHeader(AuthConsts.ACCESS_TOKEN_HEADER) String accessToken, + @RequestBody CartSaveReq saveReq) { + + cartSaveUseCase.saveMyCart(accessToken, saveReq); + return ApplicationResponse.ok("장바구니 저장 완료"); + } // 장바구니 삭제 } diff --git a/core-module/src/main/java/com/likelion/coremodule/cart/domain/Cart.java b/core-module/src/main/java/com/likelion/coremodule/cart/domain/Cart.java index 3dfa2c3..fb35c5c 100644 --- a/core-module/src/main/java/com/likelion/coremodule/cart/domain/Cart.java +++ b/core-module/src/main/java/com/likelion/coremodule/cart/domain/Cart.java @@ -7,7 +7,6 @@ @Builder @Getter -@Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor @Entity