-
Notifications
You must be signed in to change notification settings - Fork 0
[BE] OrderService 삭제 및 chekoutInstant API 통일 #302
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -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<OrderResponse> 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<OrderResponse> createOrder(@CurrentUser User user, | |
| @Override | ||
| @GetMapping("/{orderId}") | ||
| public ResponseEntity<OrderDetailPageResponse> 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<Page<OrderResponse>> getOrderList( | |
| @RequestParam(value = "page", defaultValue = "0") int page, | ||
| @RequestParam(value = "size", defaultValue = "10") int size) { | ||
|
|
||
| Page<OrderResponse> responseList = orderService.getPaginatedOrders(user, period, page, size); | ||
| Page<OrderResponse> responseList = orderGetService.getPaginatedOrders(user, period, page, size); | ||
|
|
||
| return ResponseEntity.ok(responseList); | ||
| } | ||
|
|
@@ -57,7 +61,7 @@ public ResponseEntity<Page<OrderResponse>> getOrderList( | |
| @Override | ||
| @PatchMapping("/{orderId}") | ||
| public ResponseEntity<String> 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<String> cancelOrder(@CurrentUser User user, @PathVariable | |
| @Override | ||
| @PostMapping("/instant") | ||
| public ResponseEntity<OrderResponse> 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,26 +79,15 @@ public ResponseEntity<OrderResponse> createInstantOrder(@CurrentUser User user, | |
| @Override | ||
| @GetMapping("/getCancel/{orderId}") | ||
| public ResponseEntity<OrderCancelResponse> getOrderCancel(@CurrentUser User user, @PathVariable Long orderId) { | ||
| OrderCancelResponse orderCancelResponse = orderService.getCancelPage(user, orderId, null, null); | ||
| OrderCancelResponse orderCancelResponse = orderGetService.getCancelPage(user, orderId, null, null); | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. orderGetService에서 getCancelPage가 있으니 주문을 가져오는데 null을 보내는 이유가 있을까요?
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 현재 회원은 orderId만 있으면 주문 취소 상세페이지를 가져올 수 있는데 비회원은 orderNumber와 phone이 있어야만 가져올 수 있게 설계되어있습니다! 같른 메서드를 사용하려다보니 null를 보내주게 되었습니다ㅜ |
||
|
|
||
| return ResponseEntity.ok(orderCancelResponse); | ||
| } | ||
|
|
||
| //장바구니에서 주문서로 넘어갈 때 사용하는 API | ||
| @PostMapping("/checkout") | ||
| public ResponseEntity<CartResponse> getCheckout(@CurrentUser User user, @RequestBody List<OrderDetailRequest> orderDetailRequest) { | ||
| CartResponse products = orderService.getCheckout(user, orderDetailRequest); | ||
|
|
||
| return ResponseEntity.ok(products); | ||
| } | ||
|
|
||
| //바로주문하기에서 주문서로 넘어갈 때 사용하는 API | ||
| @Override | ||
| @GetMapping("/checkoutInstant") | ||
| public ResponseEntity<CartResponse> 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); | ||
| } | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -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<OrderResponse> createGuestOrder(@RequestBody @Valid OrderRequest orderRequest) { | ||
| OrderResponse orderResponse = orderService.createGuestOrder(orderRequest); | ||
| OrderResponse orderResponse = orderCreationService.createOrder(null, orderRequest); | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 부분도 위 리뷰와 동일합니다.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이것도 똑같이 메서드를 하나로 처리하려다보니 생긴 이슈입니다. 기능은 똑같은데 회원 비회원 메서드를 따로 만들면 중복코드이지 않나 싶습니다ㅜ 더 좋은 방법이 있다면 알려주시면 감사하갰습니다!🥹
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 저는 오버로딩을 사용했습니다. 이렇게 하면 의도도 명확하고 실수도 줄일 수 있습니다 |
||
|
|
||
| return ResponseEntity.ok(orderResponse); | ||
| } | ||
|
|
@@ -30,7 +34,7 @@ public ResponseEntity<OrderResponse> createGuestOrder(@RequestBody @Valid OrderR | |
| @Override | ||
| @PostMapping("/instant") | ||
| public ResponseEntity<OrderResponse> 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<OrderResponse> createGuestInstantOrder(@RequestBody @Valid | |
| @GetMapping("/{orderNumber}") | ||
| public ResponseEntity<OrderDetailPageResponse> 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<OrderDetailPageResponse> getGuestOrderDetail(@PathVariable | |
| @PatchMapping("/{orderNumber}") | ||
| public ResponseEntity<String> 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<String> cancelGuestOrder(@PathVariable String orderNumber, | |
| @Override | ||
| @GetMapping("/getCancel/{orderNumber}") | ||
| public ResponseEntity<OrderCancelResponse> 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); | ||
| } | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -54,14 +54,6 @@ Page<Long> 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<Order> findForCancellation(@Param("userId") Long userId, @Param("orderId") Long orderId); | ||
|
|
||
|
Comment on lines
-57
to
-64
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 주문 취소 쿼리를 삭제하신 이유가 있을 까요?
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 사용하고있지 않아서 삭제했습니다!
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 주문 취소를 못하는 건가요? |
||
| Optional<Order> findById(Long orderId); | ||
|
|
||
| Optional<Order> findByOrderNumberAndPhone(String orderNumber, String phone); | ||
|
|
||
This file was deleted.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
orderGetService 이 무엇인가요.
주문을 얻어 오는 건가요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
맞습니다! 하나의Service에 주문 관련 모든 걸 포함하기 싫어서 분리했습니다
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
테스트 코드를 작성하면 좋을 것 같아요!
주문과 같은 복잡한 서비스는 테스트 코드를 작성하면서 자연스럽게 구조를 개선하고 서비스 레이어를 분리하는 방식이 될 수 있습니다. 테스트 코드를 작성하는 과정에서 의존성 분리, 파라미터 정리, 공통 로직 추출 등이 자연스럽게 이루어져 유지보수성과 확장성에 강한 코드를 완성할 수 있다고 생각합니다.