From c49ce431df452249e4f4375da64c63d0124a24d0 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:38:07 +0900 Subject: [PATCH] feat: cart delete api --- .../cart/application/CartSaveUseCase.java | 11 ++++++++++- .../cart/presentation/CartController.java | 18 ++++++++++++++++++ .../cart/repository/CartRepository.java | 2 ++ .../cart/service/CartQueryService.java | 5 +++++ 4 files changed, 35 insertions(+), 1 deletion(-) 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 index 9c9bb6c..1222000 100644 --- 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 @@ -9,11 +9,12 @@ 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; +import org.springframework.transaction.annotation.Transactional; @Service @RequiredArgsConstructor +@Transactional public class CartSaveUseCase { private final CartQueryService cartQueryService; @@ -31,4 +32,12 @@ public void saveMyCart(String accessToken, CartSaveReq saveReq) { final Cart cart = Cart.builder().user(user).menu(menu).quantity(saveReq.quantity()).build(); cartQueryService.saveCart(cart); } + + public void deleteMyCart(String accessToken, Long cartId) { + + String email = jwtUtil.getEmail(accessToken); + User user = userQueryService.findByEmail(email); + + cartQueryService.deleteCartByUserIdAndCartId(user.getUserId(), cartId); + } } 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 16a3239..4e24955 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 @@ -65,4 +65,22 @@ public ApplicationResponse saveMyCart(@RequestHeader(AuthConsts.ACCESS_T } // 장바구니 삭제 + @DeleteMapping("{cartId}/delete") + @ApiResponses( + value = { + @ApiResponse( + responseCode = "200", + description = "나의 장바구니 삭제 성공", + useReturnTypeSchema = true + ) + } + ) + @Operation(summary = "나의 장바구니 삭제 API", description = "나의 장바구니 삭제 API 입니다.") + public ApplicationResponse deleteMyCart(@RequestHeader(AuthConsts.ACCESS_TOKEN_HEADER) String accessToken, + @PathVariable Long cartId) { + + cartSaveUseCase.deleteMyCart(accessToken, cartId); + return ApplicationResponse.ok("장바구니 삭제 완료"); + } + } diff --git a/core-module/src/main/java/com/likelion/coremodule/cart/repository/CartRepository.java b/core-module/src/main/java/com/likelion/coremodule/cart/repository/CartRepository.java index 75cf571..5c614cd 100644 --- a/core-module/src/main/java/com/likelion/coremodule/cart/repository/CartRepository.java +++ b/core-module/src/main/java/com/likelion/coremodule/cart/repository/CartRepository.java @@ -8,4 +8,6 @@ public interface CartRepository extends JpaRepository { List findCartsByUserUserId(Long userId); + + void deleteCartByIdAndUserUserId(Long cartId, Long userId); } diff --git a/core-module/src/main/java/com/likelion/coremodule/cart/service/CartQueryService.java b/core-module/src/main/java/com/likelion/coremodule/cart/service/CartQueryService.java index 76f16a9..ea680c0 100644 --- a/core-module/src/main/java/com/likelion/coremodule/cart/service/CartQueryService.java +++ b/core-module/src/main/java/com/likelion/coremodule/cart/service/CartQueryService.java @@ -20,4 +20,9 @@ public void saveCart(Cart cart) { public List findCartsByUserId(Long userId) { return cartRepository.findCartsByUserUserId(userId); } + + public void deleteCartByUserIdAndCartId(Long userId, Long cartId) { + + cartRepository.deleteCartByIdAndUserUserId(cartId, userId); + } }