diff --git a/backend/JiShop/src/main/java/com/jishop/order/controller/OrderController.java b/backend/JiShop/src/main/java/com/jishop/order/controller/OrderController.java index b637d80b..e9fb6548 100644 --- a/backend/JiShop/src/main/java/com/jishop/order/controller/OrderController.java +++ b/backend/JiShop/src/main/java/com/jishop/order/controller/OrderController.java @@ -21,7 +21,7 @@ public interface OrderController { //회원 바로주문 @Operation(summary = "회원 바로 주문", description = "회원이 상품 상세 페이지에서 바로 주문할 때 사용되는 API") - ResponseEntity createInstantOrder(User user, InstantOrderRequest orderRequest); + ResponseEntity createInstantOrder(User user, OrderRequest orderRequest); //회원 주문 목록 조회 페이징 처리 @Operation(summary = "회원 주문 목록 조회", description = "조회하는 회원의 ID에 따른 주문 목록 페이지") diff --git a/backend/JiShop/src/main/java/com/jishop/order/controller/OrderControllerImpl.java b/backend/JiShop/src/main/java/com/jishop/order/controller/OrderControllerImpl.java index a3ec09ee..f0ad839d 100644 --- a/backend/JiShop/src/main/java/com/jishop/order/controller/OrderControllerImpl.java +++ b/backend/JiShop/src/main/java/com/jishop/order/controller/OrderControllerImpl.java @@ -5,14 +5,12 @@ import com.jishop.member.domain.User; import com.jishop.order.dto.*; import com.jishop.order.service.OrderService; -import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import java.io.IOException; import java.util.List; @RestController @@ -67,7 +65,7 @@ public ResponseEntity cancelOrder(@CurrentUser User user, @PathVariable // 바로 구매하기 @Override @PostMapping("/instant") - public ResponseEntity createInstantOrder(@CurrentUser User user, @RequestBody @Valid InstantOrderRequest orderRequest) { + public ResponseEntity createInstantOrder(@CurrentUser User user, @RequestBody @Valid OrderRequest orderRequest) { OrderResponse orderResponse = orderService.createInstantOrder(user, orderRequest); return ResponseEntity.ok(orderResponse); diff --git a/backend/JiShop/src/main/java/com/jishop/order/controller/OrderGuestController.java b/backend/JiShop/src/main/java/com/jishop/order/controller/OrderGuestController.java index 6ecd112f..ab36b834 100644 --- a/backend/JiShop/src/main/java/com/jishop/order/controller/OrderGuestController.java +++ b/backend/JiShop/src/main/java/com/jishop/order/controller/OrderGuestController.java @@ -15,7 +15,7 @@ public interface OrderGuestController { //비회원 바로 주문 생성 @Operation(summary = "비회원 바로 주문", description = "비회원 바로 주문 시 userId를 null로 처리하여 주문 진행") - ResponseEntity createGuestInstantOrder(InstantOrderRequest orderRequest); + ResponseEntity createGuestInstantOrder(OrderRequest orderRequest); //비회원 주문 상세 조회 @Operation(summary = "비회원 상세 조회", description = "비회원은 주문 목록 조회가 존재하지 않고 주문 번호와 주문 시 사용했던 전화번호로 조회가 가능") @@ -25,16 +25,16 @@ ResponseEntity getGuestOrderDetail( ); //비회원 주문 취소 -// @Operation(summary = "비회원 주문 취소", description = "비회원은 주문 번호와 주문 시 사용했던 전화번호로 취소가 가능") -// ResponseEntity cancelGuestOrder( -// @Parameter(description = "조회할 주문번호", example = "O250327QNPUY") String orderNumber, -// @Parameter(description = "조회할 주문 수신자의 전화번호", example = "01012345678") String phone -// ); + @Operation(summary = "비회원 주문 취소", description = "비회원은 주문 번호와 주문 시 사용했던 전화번호로 취소가 가능") + ResponseEntity cancelGuestOrder( + @Parameter(description = "조회할 주문번호", example = "O250327QNPUY") String orderNumber, + @Parameter(description = "조회할 주문 수신자의 전화번호", example = "01012345678") String phone + ); //비회원 취소 상세페이지 -// @Operation(summary = "비회원 주문 취소 상세 페이지", description = "비회원은 주문 번호와 주문 시 사용했던 전화번호로 주문 취소 상세 페이지 조회가 가능") -// ResponseEntity getGuestOrderCancel( -// @Parameter(description = "조회할 주문번호", example = "O250327QNPUY") String orderNumber, -// @Parameter(description = "조회할 주문 수신자의 전화번호", example = "01012345678") String phone -// ); + @Operation(summary = "비회원 주문 취소 상세 페이지", description = "비회원은 주문 번호와 주문 시 사용했던 전화번호로 주문 취소 상세 페이지 조회가 가능") + ResponseEntity getGuestOrderCancel( + @Parameter(description = "조회할 주문번호", example = "O250327QNPUY") String orderNumber, + @Parameter(description = "조회할 주문 수신자의 전화번호", example = "01012345678") String phone + ); } diff --git a/backend/JiShop/src/main/java/com/jishop/order/controller/OrderGuestControllerImpl.java b/backend/JiShop/src/main/java/com/jishop/order/controller/OrderGuestControllerImpl.java index 5e4c5d28..806c90ab 100644 --- a/backend/JiShop/src/main/java/com/jishop/order/controller/OrderGuestControllerImpl.java +++ b/backend/JiShop/src/main/java/com/jishop/order/controller/OrderGuestControllerImpl.java @@ -1,7 +1,9 @@ package com.jishop.order.controller; -import com.jishop.order.dto.*; -import com.jishop.order.service.OrderGuestService; +import com.jishop.order.dto.OrderCancelResponse; +import com.jishop.order.dto.OrderDetailPageResponse; +import com.jishop.order.dto.OrderRequest; +import com.jishop.order.dto.OrderResponse; import com.jishop.order.service.OrderService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; @@ -27,7 +29,7 @@ public ResponseEntity createGuestOrder(@RequestBody @Valid OrderR //비회원 바로주문 생성 @Override @PostMapping("/instant") - public ResponseEntity createGuestInstantOrder(@RequestBody @Valid InstantOrderRequest orderRequest) { + public ResponseEntity createGuestInstantOrder(@RequestBody @Valid OrderRequest orderRequest) { OrderResponse orderResponse = orderService.createGuestInstantOrder(orderRequest); return ResponseEntity.ok(orderResponse); @@ -44,21 +46,21 @@ public ResponseEntity getGuestOrderDetail(@PathVariable } //비회원 주문 취소하기 -// @Override -// @PatchMapping("/{orderNumber}") -// public ResponseEntity cancelGuestOrder(@PathVariable String orderNumber, -// @RequestParam String phone) { -// orderService.cancelGuestOrder(orderNumber, phone); -// -// return ResponseEntity.ok("주문이 취소되었습니다."); -// } + @Override + @PatchMapping("/{orderNumber}") + public ResponseEntity cancelGuestOrder(@PathVariable String orderNumber, + @RequestParam String phone) { + orderService.cancelGuestOrder(orderNumber, phone); + + return ResponseEntity.ok("주문이 취소되었습니다."); + } //비회원 주문 취소 상세 페이지 -// @Override -// @GetMapping("/getCancel/{orderNumber}") -// public ResponseEntity getGuestOrderCancel(@PathVariable String orderNumber, @RequestParam String phone){ -// OrderCancelResponse orderCancelResponse = orderService.getGuestCancelPage(orderNumber, phone); -// -// return ResponseEntity.ok(orderCancelResponse); -// } + @Override + @GetMapping("/getCancel/{orderNumber}") + public ResponseEntity getGuestOrderCancel(@PathVariable String orderNumber, @RequestParam String phone){ + OrderCancelResponse orderCancelResponse = orderService.getGuestCancelPage(orderNumber, phone); + + return ResponseEntity.ok(orderCancelResponse); + } } diff --git a/backend/JiShop/src/main/java/com/jishop/order/dto/InstantOrderRequest.java b/backend/JiShop/src/main/java/com/jishop/order/dto/InstantOrderRequest.java deleted file mode 100644 index 01ac400a..00000000 --- a/backend/JiShop/src/main/java/com/jishop/order/dto/InstantOrderRequest.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.jishop.order.dto; - -import com.jishop.address.dto.AddressRequest; -import jakarta.validation.constraints.Positive; - -public record InstantOrderRequest( - Long saleProductId, - @Positive - int quantity, - AddressRequest address -) { -} diff --git a/backend/JiShop/src/main/java/com/jishop/order/service/OrderCreationService.java b/backend/JiShop/src/main/java/com/jishop/order/service/OrderCreationService.java index 6db3c855..22b86553 100644 --- a/backend/JiShop/src/main/java/com/jishop/order/service/OrderCreationService.java +++ b/backend/JiShop/src/main/java/com/jishop/order/service/OrderCreationService.java @@ -1,7 +1,6 @@ package com.jishop.order.service; import com.jishop.member.domain.User; -import com.jishop.order.dto.InstantOrderRequest; import com.jishop.order.dto.OrderRequest; import com.jishop.order.dto.OrderResponse; @@ -10,5 +9,5 @@ public interface OrderCreationService { OrderResponse createOrder(User user, OrderRequest orderRequest); //회원 비회원 바로주문 - OrderResponse createInstantOrder(User user, InstantOrderRequest orderRequest); + OrderResponse createInstantOrder(User user, OrderRequest orderRequest); } diff --git a/backend/JiShop/src/main/java/com/jishop/order/service/OrderGuestService.java b/backend/JiShop/src/main/java/com/jishop/order/service/OrderGuestService.java deleted file mode 100644 index 03968936..00000000 --- a/backend/JiShop/src/main/java/com/jishop/order/service/OrderGuestService.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.jishop.order.service; - -import com.jishop.order.dto.*; - -public interface OrderGuestService { - - // 비회원 주문 생성 - OrderResponse createGuestOrder(OrderRequest guestOrderRequest); - - // 비회원 바로 구매하기 - OrderResponse createGuestInstantOrder(InstantOrderRequest guestInstantOrderRequest); - - // 비회원 주문 조회 - OrderDetailPageResponse getGuestOrder(String orderNumber, String phone); - - // 비회원 주문 취소 - void cancelGuestOrder(String orderNumber, String phone); - - // 비회원 주문 취소 상세 페이지 - OrderCancelResponse getGuestCancelPage(String orderNumber, String phone); -} diff --git a/backend/JiShop/src/main/java/com/jishop/order/service/OrderService.java b/backend/JiShop/src/main/java/com/jishop/order/service/OrderService.java index 58e9f6f8..9ca27ed9 100644 --- a/backend/JiShop/src/main/java/com/jishop/order/service/OrderService.java +++ b/backend/JiShop/src/main/java/com/jishop/order/service/OrderService.java @@ -11,7 +11,7 @@ public interface OrderService { //회원 OrderResponse createOrder(User user, OrderRequest orderRequest); - OrderResponse createInstantOrder(User user, InstantOrderRequest instantOrderRequest); + OrderResponse createInstantOrder(User user, OrderRequest instantOrderRequest); OrderDetailPageResponse getOrder(User user, Long orderId, String orderNumber, String phone); Page getPaginatedOrders(User user, String period, int page, int size); void cancelOrder(User user, Long orderId, String orderNumber, String phone); @@ -21,7 +21,7 @@ public interface OrderService { //비회원 OrderResponse createGuestOrder(OrderRequest orderRequest); - OrderResponse createGuestInstantOrder(InstantOrderRequest orderRequest); + OrderResponse createGuestInstantOrder(OrderRequest orderRequest); OrderDetailPageResponse getGuestOrder(String orderNumber, String phone); void cancelGuestOrder(String orderNumber, String phone); OrderCancelResponse getGuestCancelPage(String orderNumber, String phone); diff --git a/backend/JiShop/src/main/java/com/jishop/order/service/impl/OrderCreationServiceImpl.java b/backend/JiShop/src/main/java/com/jishop/order/service/impl/OrderCreationServiceImpl.java index a43d4e26..60cd3b71 100644 --- a/backend/JiShop/src/main/java/com/jishop/order/service/impl/OrderCreationServiceImpl.java +++ b/backend/JiShop/src/main/java/com/jishop/order/service/impl/OrderCreationServiceImpl.java @@ -97,28 +97,10 @@ public OrderResponse processOrderCreation(User user, OrderRequest orderRequest) // 바로 주문하기 (회원/비회원 통합) @Override @Transactional - public OrderResponse createInstantOrder(User user, InstantOrderRequest instantOrderRequest) { + public OrderResponse createInstantOrder(User user, OrderRequest instantOrderRequest) { //락키 생성 (상품 ID를 기반으로) - String lockKey = "order:instant:" + instantOrderRequest.saleProductId(); + String lockKey = "order:instant:" + instantOrderRequest.orderDetailRequestList().get(0).saleProductId(); - return distributedLockService.executeWithLock(lockKey, () -> { - // InstantOrderRequest => OrderRequest - OrderRequest orderRequest = convertInstantToOrderRequest(instantOrderRequest); - return processOrderCreation(user, orderRequest); - }); - } - - private OrderRequest convertInstantToOrderRequest(InstantOrderRequest instantOrderRequest) { - SaleProduct saleProduct = saleProductRepository.findById(instantOrderRequest.saleProductId()) - .orElseThrow(() -> new DomainException(ErrorType.PRODUCT_NOT_FOUND)); - - OrderDetailRequest detailRequest = new OrderDetailRequest( - saleProduct.getId(), instantOrderRequest.quantity() - ); - - return new OrderRequest( - instantOrderRequest.address(), - List.of(detailRequest) - ); + return distributedLockService.executeWithLock(lockKey, () -> processOrderCreation(user, instantOrderRequest)); } } diff --git a/backend/JiShop/src/main/java/com/jishop/order/service/impl/OrderServiceImpl.java b/backend/JiShop/src/main/java/com/jishop/order/service/impl/OrderServiceImpl.java index 6374707e..1ffa54b9 100644 --- a/backend/JiShop/src/main/java/com/jishop/order/service/impl/OrderServiceImpl.java +++ b/backend/JiShop/src/main/java/com/jishop/order/service/impl/OrderServiceImpl.java @@ -31,7 +31,7 @@ public OrderResponse createOrder(User user, OrderRequest orderRequest) { //회원 바로 주문 생성 @Override - public OrderResponse createInstantOrder(User user, InstantOrderRequest instantOrderRequest) { + public OrderResponse createInstantOrder(User user, OrderRequest instantOrderRequest) { return orderCreationService.createInstantOrder(user, instantOrderRequest); } @@ -79,7 +79,7 @@ public OrderResponse createGuestOrder(OrderRequest orderRequest) { //비회원 바로 주문 생성 @Override - public OrderResponse createGuestInstantOrder(InstantOrderRequest orderRequest) { + public OrderResponse createGuestInstantOrder(OrderRequest orderRequest) { return orderCreationService.createInstantOrder(null, orderRequest); }