1010import io .swagger .v3 .oas .annotations .Operation ;
1111import io .swagger .v3 .oas .annotations .tags .Tag ;
1212import lombok .RequiredArgsConstructor ;
13- import org .springframework .beans .factory .annotation .Value ;
1413import org .springframework .http .HttpStatus ;
1514import org .springframework .http .ResponseEntity ;
1615import org .springframework .security .core .annotation .AuthenticationPrincipal ;
1716import org .springframework .web .bind .annotation .*;
18- import org .springframework .web .client .RestTemplate ;
1917
2018import java .math .BigDecimal ;
2119import java .util .List ;
2826public class OrderController {
2927
3028 private final OrderService orderService ;
31- private final RestTemplate restTemplate ;
32-
33- @ Value ("${users.service.url}" )
34- private String usersServiceUrl ;
3529
3630 @ GetMapping ("/{id}" )
3731 @ Operation (summary = "주문 단건 조회" )
@@ -56,13 +50,10 @@ public ResponseEntity<List<OrderResponse>> listByUser(@AuthenticationPrincipal C
5650 @ Operation (summary = "주문 생성" )
5751 public ResponseEntity <OrderResponse > createOrder (@ AuthenticationPrincipal CustomUserPrincipal principal ,
5852 @ RequestBody OrderRequest request ) {
53+ // 사용자 입력 배송지를 우선 사용, 빈 값일 경우 서비스에서 기본 배송지 처리 가능
5954 String deliveryAddress = (request .getDelivery_address () != null && !request .getDelivery_address ().isBlank ())
6055 ? request .getDelivery_address ()
61- : fetchUserDefaultDeliveryAddress (principal .getId ());
62-
63- if (deliveryAddress == null || deliveryAddress .isBlank ()) {
64- return ResponseEntity .badRequest ().build ();
65- }
56+ : "" ; // 빈 문자열 또는 필요한 기본 처리 로직 적용
6657
6758 Order order = orderService .createOrder (request , principal .getId (), deliveryAddress );
6859 return ResponseEntity .ok (toResponse (order ));
@@ -74,11 +65,7 @@ public ResponseEntity<OrderResponse> checkout(@AuthenticationPrincipal CustomUse
7465 @ RequestBody (required = false ) OrderRequest request ) {
7566 String deliveryAddress = (request != null && request .getDelivery_address () != null && !request .getDelivery_address ().isBlank ())
7667 ? request .getDelivery_address ()
77- : fetchUserDefaultDeliveryAddress (principal .getId ());
78-
79- if (deliveryAddress == null || deliveryAddress .isBlank ()) {
80- return ResponseEntity .badRequest ().build ();
81- }
68+ : "" ; // 필요하면 서비스에서 기본배송지 설정
8269
8370 Order order = orderService .createOrderFromCart (principal .getId (), deliveryAddress );
8471 return ResponseEntity .ok (toResponse (order ));
@@ -98,23 +85,6 @@ public ResponseEntity<Void> deleteOrder(@PathVariable Long id) {
9885 return ResponseEntity .noContent ().build ();
9986 }
10087
101- private String fetchUserDefaultDeliveryAddress (Long userId ) {
102- try {
103- String url = usersServiceUrl + "/api/users/" + userId + "/delivery-address" ;
104- UserDeliveryResponse response = restTemplate .getForObject (url , UserDeliveryResponse .class );
105- return response != null ? response .getDeliveryAddress () : null ;
106- } catch (Exception e ) {
107- // 로깅 및 에러처리 필요
108- return null ;
109- }
110- }
111-
112- private static class UserDeliveryResponse {
113- private String deliveryAddress ;
114- public String getDeliveryAddress () { return deliveryAddress ; }
115- public void setDeliveryAddress (String deliveryAddress ) { this .deliveryAddress = deliveryAddress ; }
116- }
117-
11888 private OrderResponse toResponse (Order order ) {
11989 return OrderResponse .builder ()
12090 .orderId (order .getId ())
@@ -131,7 +101,8 @@ private OrderResponse toResponse(Order order) {
131101 oi .getQuantity (),
132102 oi .getPrice (),
133103 oi .getPrice ().multiply (BigDecimal .valueOf (oi .getQuantity ()))
134- )).collect (Collectors .toList ()))
104+ ))
105+ .collect (Collectors .toList ()))
135106 .build ();
136107 }
137108}
0 commit comments