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 643ca8ff..86fc6615 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 @@ -1,6 +1,7 @@ package com.jishop.order.controller; import com.jishop.cart.dto.CartResponse; +import com.jishop.member.annotation.CurrentUser; import com.jishop.member.domain.User; import com.jishop.order.dto.*; import io.swagger.v3.oas.annotations.Operation; @@ -8,6 +9,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.data.domain.Page; import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PathVariable; import java.util.List; @@ -56,7 +58,12 @@ ResponseEntity getOrderCancel( // 장바구니에서 주문서로 넘어가는 API @Operation(summary = "장바구니에서 주문서로 넘어갈 때 사용하는 API") ResponseEntity getCheckout(User user, List orderDetailRequest); - //회원 주문 - 결제와 연동 + + //리뷰 작성 시 필요한 상품 정보 내려주는 API + @Operation(summary = "리뷰 작성 시 필요한 상품 정보 내려주기") + ResponseEntity getItem(Long orderDetailId); + + //회원 주문 - 결제와 연동 // @Operation( // summary = "회원 주문 및 결제 API", // description = "회원이 장바구니에서 주문 및 결제 시 사용하는 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 d3e652cd..00468a6a 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 @@ -91,6 +91,16 @@ public ResponseEntity getCheckout(@CurrentUser User user, @Request return ResponseEntity.ok(products); } + + //리뷰 작성 시 필요한 상품 정보 내려주기 + @GetMapping("/{orderDetailId}/item") + public ResponseEntity getItem(@PathVariable Long orderDetailId) { + OrderProductResponse response = orderGetService.getItem(orderDetailId); + + return ResponseEntity.ok(response); + } + + //주문 생성 - 결제 페이지와 연동 // @Override // @PostMapping 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 5211ca83..2c1c5403 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 @@ -2,10 +2,7 @@ import com.jishop.cart.dto.CartResponse; import com.jishop.member.domain.User; -import com.jishop.order.dto.OrderCancelResponse; -import com.jishop.order.dto.OrderDetailPageResponse; -import com.jishop.order.dto.OrderDetailRequest; -import com.jishop.order.dto.OrderResponse; +import com.jishop.order.dto.*; import org.springframework.data.domain.Page; import java.util.List; @@ -19,6 +16,8 @@ public interface OrderGetService { Page getPaginatedOrders(User user, String period, int page, int size); //회원 장바구니에서 주문서로 넘어가는 API CartResponse getCheckout(User user, List orderDetailRequest); + //리뷰 작성 시 필요한 상품 정보 내려주는 API + OrderProductResponse getItem(Long orderDetailId); //비회원 주문 상세 페이지 OrderDetailPageResponse getOrder(String orderNumber, String phone); @@ -26,5 +25,4 @@ public interface OrderGetService { OrderCancelResponse getCancelPage(String orderNumber, String phone); //비회원 장바구니에서 주문서로 넘어가는 API CartResponse getCheckout(List orderDetailRequest); - } 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 c9470caf..211f65bd 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 @@ -6,8 +6,10 @@ import com.jishop.common.exception.ErrorType; import com.jishop.member.domain.User; import com.jishop.order.domain.Order; +import com.jishop.order.domain.OrderDetail; import com.jishop.order.domain.OrderStatus; import com.jishop.order.dto.*; +import com.jishop.order.repository.OrderDetailRepository; import com.jishop.order.repository.OrderRepository; import com.jishop.order.service.OrderGetService; import com.jishop.order.service.OrderUtilService; @@ -34,6 +36,7 @@ public class OrderGetServiceImpl implements OrderGetService { private final ReviewRepository reviewRepository; private final OrderUtilService orderUtilService; private final SaleProductRepository saleProductRepository; + private final OrderDetailRepository orderDetailRepository; //비회원 주문 상세 조회 @Override @@ -109,6 +112,17 @@ public OrderCancelResponse getCancelPage(User user, Long orderId) { return new OrderCancelResponse(order.getUpdatedAt(), pageResponse); } + //리뷰 작성 시 필요한 상품 정보 내려주기 API + @Override + public OrderProductResponse getItem(Long orderDetailId) { + OrderDetail orderDetail = orderDetailRepository.findOrderDetailForReviewById(orderDetailId) + .orElseThrow(() -> new DomainException(ErrorType.ORDER_DETAIL_NOT_FOUND)); + + OrderProductResponse response = OrderProductResponse.from(orderDetail, true); + + return response; + } + //회원 주문서로 넘어가는 API @Override public CartResponse getCheckout(User user, List orderDetailRequest) { @@ -150,7 +164,8 @@ public CartResponse getCheckout(User user, List orderDetailR .toList(); // CartResponse 생성 및 반환 - return CartResponse.of(cartDetails); } + return CartResponse.of(cartDetails); + } private OrderDetailPageResponse createOrderDetailPageResponse(Order order, User user) { boolean isPurchasedConfirmed = order.getStatus() == OrderStatus.PURCHASED_CONFIRMED;