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 e9fb6548..643ca8ff 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 @@ -56,11 +56,6 @@ ResponseEntity getOrderCancel( // 장바구니에서 주문서로 넘어가는 API @Operation(summary = "장바구니에서 주문서로 넘어갈 때 사용하는 API") ResponseEntity getCheckout(User user, List orderDetailRequest); - - //바로 주문하기에서 주문서로 넘어가는 API - @Operation(summary = "바로 주문하기에서 주문서로 넘어갈 때 사용하는 API") - ResponseEntity getCheckoutInstant(User user, Long saleProductId, int quantity); - //회원 주문 - 결제와 연동 // @Operation( // summary = "회원 주문 및 결제 API", 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 f0ad839d..dbaccaae 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 @@ -4,7 +4,9 @@ import com.jishop.member.annotation.CurrentUser; import com.jishop.member.domain.User; import com.jishop.order.dto.*; -import com.jishop.order.service.OrderService; +import com.jishop.order.service.OrderCancelService; +import com.jishop.order.service.OrderCreationService; +import com.jishop.order.service.OrderGetService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; @@ -18,14 +20,16 @@ @RequestMapping("/orders") public class OrderControllerImpl implements OrderController { - private final OrderService orderService; + private final OrderCreationService orderCreationService; + private final OrderGetService orderGetService; + private final OrderCancelService orderCancelService; // 주문 생성 @Override @PostMapping public ResponseEntity createOrder(@CurrentUser User user, @Valid @RequestBody OrderRequest orderRequest) { - OrderResponse orderResponse = orderService.createOrder(user, orderRequest); + OrderResponse orderResponse = orderCreationService.createOrder(user, orderRequest); return ResponseEntity.ok(orderResponse); } @@ -34,7 +38,7 @@ public ResponseEntity createOrder(@CurrentUser User user, @Override @GetMapping("/{orderId}") public ResponseEntity getOrder(@CurrentUser User user, @PathVariable Long orderId){ - OrderDetailPageResponse orderDetailResponse = orderService.getOrder(user, orderId, null, null); + OrderDetailPageResponse orderDetailResponse = orderGetService.getOrder(user, orderId, null, null); return ResponseEntity.ok(orderDetailResponse); } @@ -48,7 +52,7 @@ public ResponseEntity> getOrderList( @RequestParam(value = "page", defaultValue = "0") int page, @RequestParam(value = "size", defaultValue = "10") int size) { - Page responseList = orderService.getPaginatedOrders(user, period, page, size); + Page responseList = orderGetService.getPaginatedOrders(user, period, page, size); return ResponseEntity.ok(responseList); } @@ -57,7 +61,7 @@ public ResponseEntity> getOrderList( @Override @PatchMapping("/{orderId}") public ResponseEntity cancelOrder(@CurrentUser User user, @PathVariable Long orderId){ - orderService.cancelOrder(user, orderId, null, null); + orderCancelService.cancelOrder(user, orderId, null, null); return ResponseEntity.ok("주문이 취소되었습니다"); } @@ -66,7 +70,7 @@ public ResponseEntity cancelOrder(@CurrentUser User user, @PathVariable @Override @PostMapping("/instant") public ResponseEntity createInstantOrder(@CurrentUser User user, @RequestBody @Valid OrderRequest orderRequest) { - OrderResponse orderResponse = orderService.createInstantOrder(user, orderRequest); + OrderResponse orderResponse = orderCreationService.createInstantOrder(user, orderRequest); return ResponseEntity.ok(orderResponse); } @@ -75,7 +79,7 @@ public ResponseEntity createInstantOrder(@CurrentUser User user, @Override @GetMapping("/getCancel/{orderId}") public ResponseEntity getOrderCancel(@CurrentUser User user, @PathVariable Long orderId) { - OrderCancelResponse orderCancelResponse = orderService.getCancelPage(user, orderId, null, null); + OrderCancelResponse orderCancelResponse = orderGetService.getCancelPage(user, orderId, null, null); return ResponseEntity.ok(orderCancelResponse); } @@ -83,18 +87,7 @@ public ResponseEntity getOrderCancel(@CurrentUser User user //장바구니에서 주문서로 넘어갈 때 사용하는 API @PostMapping("/checkout") public ResponseEntity getCheckout(@CurrentUser User user, @RequestBody List orderDetailRequest) { - CartResponse products = orderService.getCheckout(user, orderDetailRequest); - - return ResponseEntity.ok(products); - } - - //바로주문하기에서 주문서로 넘어갈 때 사용하는 API - @Override - @GetMapping("/checkoutInstant") - public ResponseEntity getCheckoutInstant(@CurrentUser User user, - @RequestParam("saleProductId") Long saleProductId, - @RequestParam("quantity") int quantity) { - CartResponse products = orderService.getCheckoutInstant(user, saleProductId, quantity); + CartResponse products = orderGetService.getCheckout(user, orderDetailRequest); return ResponseEntity.ok(products); } 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 806c90ab..3b658cfb 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 @@ -4,7 +4,9 @@ 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 com.jishop.order.service.OrderCancelService; +import com.jishop.order.service.OrderCreationService; +import com.jishop.order.service.OrderGetService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; @@ -15,13 +17,15 @@ @RequestMapping("/ordersGuest") public class OrderGuestControllerImpl implements OrderGuestController { - private final OrderService orderService; + private final OrderCreationService orderCreationService; + private final OrderGetService orderGetService; + private final OrderCancelService orderCancelService; //비회원 주문 생성 @Override @PostMapping public ResponseEntity createGuestOrder(@RequestBody @Valid OrderRequest orderRequest) { - OrderResponse orderResponse = orderService.createGuestOrder(orderRequest); + OrderResponse orderResponse = orderCreationService.createOrder(null, orderRequest); return ResponseEntity.ok(orderResponse); } @@ -30,7 +34,7 @@ public ResponseEntity createGuestOrder(@RequestBody @Valid OrderR @Override @PostMapping("/instant") public ResponseEntity createGuestInstantOrder(@RequestBody @Valid OrderRequest orderRequest) { - OrderResponse orderResponse = orderService.createGuestInstantOrder(orderRequest); + OrderResponse orderResponse = orderCreationService.createInstantOrder(null, orderRequest); return ResponseEntity.ok(orderResponse); } @@ -40,7 +44,7 @@ public ResponseEntity createGuestInstantOrder(@RequestBody @Valid @GetMapping("/{orderNumber}") public ResponseEntity getGuestOrderDetail(@PathVariable String orderNumber, @RequestParam String phone) { - OrderDetailPageResponse orderDetailList = orderService.getGuestOrder(orderNumber, phone); + OrderDetailPageResponse orderDetailList = orderGetService.getOrder(null, null, orderNumber, phone); return ResponseEntity.ok(orderDetailList); } @@ -50,7 +54,7 @@ public ResponseEntity getGuestOrderDetail(@PathVariable @PatchMapping("/{orderNumber}") public ResponseEntity cancelGuestOrder(@PathVariable String orderNumber, @RequestParam String phone) { - orderService.cancelGuestOrder(orderNumber, phone); + orderCancelService.cancelOrder(null, null, orderNumber, phone); return ResponseEntity.ok("주문이 취소되었습니다."); } @@ -59,7 +63,7 @@ public ResponseEntity cancelGuestOrder(@PathVariable String orderNumber, @Override @GetMapping("/getCancel/{orderNumber}") public ResponseEntity getGuestOrderCancel(@PathVariable String orderNumber, @RequestParam String phone){ - OrderCancelResponse orderCancelResponse = orderService.getGuestCancelPage(orderNumber, phone); + OrderCancelResponse orderCancelResponse = orderGetService.getCancelPage(null,null, orderNumber, phone); return ResponseEntity.ok(orderCancelResponse); } diff --git a/backend/JiShop/src/main/java/com/jishop/order/dto/OrderDetailRequest.java b/backend/JiShop/src/main/java/com/jishop/order/dto/OrderDetailRequest.java index d62d5629..e929175a 100644 --- a/backend/JiShop/src/main/java/com/jishop/order/dto/OrderDetailRequest.java +++ b/backend/JiShop/src/main/java/com/jishop/order/dto/OrderDetailRequest.java @@ -1,7 +1,12 @@ package com.jishop.order.dto; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Positive; + public record OrderDetailRequest( + @NotNull(message = "상품 정보는 필수입니다.") Long saleProductId, + @Positive(message = "수량은 1개 이상이어야 합니다.") int quantity, Long cartId ) { diff --git a/backend/JiShop/src/main/java/com/jishop/order/repository/OrderRepository.java b/backend/JiShop/src/main/java/com/jishop/order/repository/OrderRepository.java index 4f3e47f2..3680ab85 100644 --- a/backend/JiShop/src/main/java/com/jishop/order/repository/OrderRepository.java +++ b/backend/JiShop/src/main/java/com/jishop/order/repository/OrderRepository.java @@ -54,14 +54,6 @@ Page findOrderIdsByPeriod(@Param("userId") Long userId, boolean existsByOrderNumber(String orderNumber); - //주문 취소를 위한 쿼리 - @Query("SELECT o FROM Order o " + - "LEFT JOIN FETCH o.orderDetails od " + - "LEFT JOIN FETCH od.saleProduct sp " + - "LEFT JOIN FETCH sp.stock " + - "WHERE o.id = :orderId AND o.userId = :userId") - Optional findForCancellation(@Param("userId") Long userId, @Param("orderId") Long orderId); - Optional findById(Long orderId); Optional findByOrderNumberAndPhone(String orderNumber, String phone); diff --git a/backend/JiShop/src/main/java/com/jishop/order/service/OrderGetService.java b/backend/JiShop/src/main/java/com/jishop/order/service/OrderGetService.java index eff77769..e384138f 100644 --- a/backend/JiShop/src/main/java/com/jishop/order/service/OrderGetService.java +++ b/backend/JiShop/src/main/java/com/jishop/order/service/OrderGetService.java @@ -21,8 +21,5 @@ public interface OrderGetService { OrderCancelResponse getCancelPage(User user, Long orderId, String orderNumber, String phone); //회원 비회원 장바구니에서 주문서로 넘어가는 API - CartResponse getCheckOut(User user, List orderDetailRequest); - - //회원 비회원 바로주문하기에서 주문서로 넘어가는 API - CartResponse getCheckoutInstant(User user, Long saleProductId, int quantity); + CartResponse getCheckout(User user, List orderDetailRequest); } 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 deleted file mode 100644 index 9ca27ed9..00000000 --- a/backend/JiShop/src/main/java/com/jishop/order/service/OrderService.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.jishop.order.service; - -import com.jishop.cart.dto.CartResponse; -import com.jishop.member.domain.User; -import com.jishop.order.dto.*; -import org.springframework.data.domain.Page; - -import java.util.List; - -public interface OrderService { - - //회원 - OrderResponse createOrder(User user, OrderRequest orderRequest); - 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); - OrderCancelResponse getCancelPage(User user, Long orderId, String orderNumber, String phone); - CartResponse getCheckout(User user, List orderDetailRequest); - CartResponse getCheckoutInstant(User user, Long saleProductId, int quantity); - - //비회원 - OrderResponse createGuestOrder(OrderRequest orderRequest); - OrderResponse createGuestInstantOrder(OrderRequest orderRequest); - OrderDetailPageResponse getGuestOrder(String orderNumber, String phone); - void cancelGuestOrder(String orderNumber, String phone); - OrderCancelResponse getGuestCancelPage(String orderNumber, String phone); - CartResponse getGuestCheckout(User user, List orderDetailRequest); - CartResponse getGuestCheckoutInstant(User user, Long saleProductId, int quantity); -} 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 a2c491f9..093bd259 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 @@ -13,7 +13,6 @@ import com.jishop.order.service.DistributedLockService; import com.jishop.order.service.OrderCreationService; import com.jishop.order.service.OrderUtilService; -import com.jishop.saleproduct.repository.SaleProductRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -26,7 +25,6 @@ public class OrderCreationServiceImpl implements OrderCreationService { private final OrderRepository orderRepository; - private final SaleProductRepository saleProductRepository; private final AddressRepository addressRepository; private final OrderUtilService orderUtilService; private final DistributedLockService distributedLockService; diff --git a/backend/JiShop/src/main/java/com/jishop/order/service/impl/OrderGetServiceImpl.java b/backend/JiShop/src/main/java/com/jishop/order/service/impl/OrderGetServiceImpl.java index 991bb772..a61297cd 100644 --- a/backend/JiShop/src/main/java/com/jishop/order/service/impl/OrderGetServiceImpl.java +++ b/backend/JiShop/src/main/java/com/jishop/order/service/impl/OrderGetServiceImpl.java @@ -83,7 +83,7 @@ public OrderCancelResponse getCancelPage(User user, Long orderId, String orderNu //회원, 비회원 장바구니에서 주문서로 넘어가는 API @Override - public CartResponse getCheckOut(User user, List orderDetailRequest) { + public CartResponse getCheckout(User user, List orderDetailRequest) { List saleProductIds = orderDetailRequest.stream() .map(OrderDetailRequest::saleProductId) .toList(); @@ -122,32 +122,7 @@ public CartResponse getCheckOut(User user, List orderDetailR .toList(); // CartResponse 생성 및 반환 - return CartResponse.of(cartDetails); - } - - //바로 주문하기에서 주문서로 넘어갈 때 사용하는 API - @Override - public CartResponse getCheckoutInstant(User user, Long saleProductId, int quantity) { - SaleProduct saleProduct = saleProductRepository.findById(saleProductId) - .orElseThrow(() -> new DomainException(ErrorType.PRODUCT_NOT_FOUND)); - - int paymentPrice = saleProduct.getProduct().getDiscountPrice(); - int orderPrice = saleProduct.getProduct().getOriginPrice(); - int discountPrice = orderPrice - paymentPrice; - - CartDetailResponse cartDetailResponse = CartDetailResponse.from( - null, - saleProduct, - quantity, - paymentPrice, - orderPrice, - discountPrice, - false - ); - - return CartResponse.of(List.of(cartDetailResponse)); - } - + return CartResponse.of(cartDetails); } private OrderDetailPageResponse createOrderDetailPageResponse(Order order, User user) { boolean isPurchasedConfirmed = order.getStatus() == OrderStatus.PURCHASED_CONFIRMED; 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 deleted file mode 100644 index 1ffa54b9..00000000 --- a/backend/JiShop/src/main/java/com/jishop/order/service/impl/OrderServiceImpl.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.jishop.order.service.impl; - -import com.jishop.cart.dto.CartResponse; -import com.jishop.member.domain.User; -import com.jishop.order.dto.*; -import com.jishop.order.service.OrderCancelService; -import com.jishop.order.service.OrderCreationService; -import com.jishop.order.service.OrderGetService; -import com.jishop.order.service.OrderService; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.data.domain.Page; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Slf4j -@Service -@RequiredArgsConstructor -public class OrderServiceImpl implements OrderService { - - private final OrderCreationService orderCreationService; - private final OrderGetService orderGetService; - private final OrderCancelService orderCancelService; - - //회원 주문 생성 - @Override - public OrderResponse createOrder(User user, OrderRequest orderRequest) { - return orderCreationService.createOrder(user, orderRequest); - } - - //회원 바로 주문 생성 - @Override - public OrderResponse createInstantOrder(User user, OrderRequest instantOrderRequest) { - return orderCreationService.createInstantOrder(user, instantOrderRequest); - } - - //회원 주문 상세 조회 - @Override - public OrderDetailPageResponse getOrder(User user, Long orderId, String orderNumber, String phone) { - return orderGetService.getOrder(user, orderId, orderNumber, phone); - } - - //회원 주문 목록 조회 - @Override - public Page getPaginatedOrders(User user, String period, int page, int size) { - return orderGetService.getPaginatedOrders(user, period, page, size); - } - - //회원 주문 취소 - @Override - public void cancelOrder(User user, Long orderId, String orderNumber, String phone) { - orderCancelService.cancelOrder(user, orderId, orderNumber, phone); - } - - //회원 주문 취소 상세 페이지 조회 - @Override - public OrderCancelResponse getCancelPage(User user, Long orderId, String orderNumber, String phone) { - return orderGetService.getCancelPage(user, orderId, orderNumber, phone); - } - - //회원 장바구니에서 주문서로 넘어갈 때 사용되는 API - @Override - public CartResponse getCheckout(User user, List orderDetailRequest) { - return orderGetService.getCheckOut(user, orderDetailRequest); - } - - //회원 바로 주문하기에서 주문서로 넘어갈 때 사용하는 API - @Override - public CartResponse getCheckoutInstant(User user, Long saleProductId, int quantity) { - return orderGetService.getCheckoutInstant(null, saleProductId, quantity); - } - - //비회원 주문 생성 - @Override - public OrderResponse createGuestOrder(OrderRequest orderRequest) { - return orderCreationService.createOrder(null, orderRequest); - } - - //비회원 바로 주문 생성 - @Override - public OrderResponse createGuestInstantOrder(OrderRequest orderRequest) { - return orderCreationService.createInstantOrder(null, orderRequest); - } - - //비회원 주문 상세 페이지 - @Override - public OrderDetailPageResponse getGuestOrder(String orderNumber, String phone) { - return orderGetService.getOrder(null, null, orderNumber, phone); - } - - //비회원 주문 취소 - @Override - public void cancelGuestOrder(String orderNumber, String phone) { - orderCancelService.cancelOrder(null, null, orderNumber, phone); - } - - //비회원 주문 취소 페이지 조회 - @Override - public OrderCancelResponse getGuestCancelPage(String orderNumber, String phone) { - return orderGetService.getCancelPage(null, null, orderNumber, phone); - } - - //비회원 장바구니에서 주문서로 넘어갈 때 사용하는 API - @Override - public CartResponse getGuestCheckout(User user, List orderDetailRequest) { - return orderGetService.getCheckOut(null, orderDetailRequest); - } - - //비회원 바로 주문하기에서 주문서로 넘어갈 때 사용하는 API - @Override - public CartResponse getGuestCheckoutInstant(User user, Long saleProductId, int quantity) { - return orderGetService.getCheckoutInstant(null, saleProductId, quantity); - } -} \ No newline at end of file