diff --git a/order-service/src/main/java/com/justpickup/orderservice/domain/order/service/OrderServiceImpl.java b/order-service/src/main/java/com/justpickup/orderservice/domain/order/service/OrderServiceImpl.java index b7e6b9f..a53f091 100644 --- a/order-service/src/main/java/com/justpickup/orderservice/domain/order/service/OrderServiceImpl.java +++ b/order-service/src/main/java/com/justpickup/orderservice/domain/order/service/OrderServiceImpl.java @@ -27,6 +27,7 @@ import java.util.stream.Collectors; import static com.justpickup.orderservice.domain.order.dto.OrderDetailDto.*; import static java.util.stream.Collectors.toList; +import static java.util.stream.Collectors.toMap; @Service @RequiredArgsConstructor @@ -246,37 +247,41 @@ public class OrderServiceImpl implements OrderService { GetCustomerResponse customerInfo = userClient.getCustomerById(order.getUserId()).getData(); Set itemIds = new HashSet<>(); - Set itemOptionIds = new HashSet<>(); // 아이템 이름 및 옵션 이름 가져오기 for (OrderItem orderItem : orderItemsWithOptions) { itemIds.add(orderItem.getItemId()); - for (OrderItemOption orderItemOption : orderItem.getOrderItemOptions()) { - itemOptionIds.add(orderItemOption.getItemOptionId()); - } } - Map itemNameMap = storeClient.getItemNameMap(itemIds); - Map itemOptionMap = storeClient.getItemOptionMap(itemOptionIds); + Map itemAndItemOptionMap = storeClient.getItemAndItemOptionMap(itemIds); List orderDetailItems = orderItemsWithOptions.stream() .map(orderItem -> { // 주문 상세 옵션 생성 + GetItemResponse itemResponse = itemAndItemOptionMap.get(orderItem.getItemId()); + + // 아이템 옵션 맵 생성 + Map itemOptionMap = itemResponse.getItemOptions().stream() + .collect( + toMap(GetItemResponse.ItemOptionDto::getId, itemOptionDto -> itemOptionDto) + ); + List orderDetailItemOptions = orderItem.getOrderItemOptions() .stream() .map(orderItemOption -> { // 옵션 아이디에 해당하는 아이템 옵션 객체 가져오기 - ItemOptionsResponse itemOptionsResponse = itemOptionMap.get(orderItemOption.getItemOptionId()); + GetItemResponse.ItemOptionDto itemOptionDto = + itemOptionMap.get(orderItemOption.getItemOptionId()); return OrderDetailItemOption.of( orderItemOption, - itemOptionsResponse.getName(), - itemOptionsResponse.getOptionType() + itemOptionDto.getName(), + itemOptionDto.getOptionType() ); }) .collect(toList()); // 아이템 아이디에 해당하는 아이템 이름 가져오기 - String itemName = itemNameMap.get(orderItem.getItemId()); + String itemName = itemResponse.getName(); return OrderDetailItem.of(orderItem, itemName, orderDetailItemOptions); }) .collect(toList()); diff --git a/order-service/src/main/java/com/justpickup/orderservice/global/client/store/StoreClient.java b/order-service/src/main/java/com/justpickup/orderservice/global/client/store/StoreClient.java index fff0948..8842fcb 100644 --- a/order-service/src/main/java/com/justpickup/orderservice/global/client/store/StoreClient.java +++ b/order-service/src/main/java/com/justpickup/orderservice/global/client/store/StoreClient.java @@ -34,9 +34,6 @@ public interface StoreClient { @GetMapping("/api/customer/items/{itemId}") Result> getItemAndItemOptions(@PathVariable(value = "itemId") Iterable itemIds); - @GetMapping("/item-options/{itemOptionIds}") - Result> getItemOptions(@PathVariable(value = "itemOptionIds") Iterable itemOptionIds); - default Map getStoreNameMap(Set storeIds) { List storeResponses = this.getStoreAllById(storeIds).getData(); return storeResponses.stream() @@ -53,11 +50,11 @@ public interface StoreClient { ); } - default Map getItemOptionMap(Iterable itemOptionIds) { - List itemOptionsResponses = this.getItemOptions(itemOptionIds).getData(); - return itemOptionsResponses.stream() + default Map getItemAndItemOptionMap(Iterable itemIds) { + List responses = this.getItemAndItemOptions(itemIds).getData(); + return responses.stream() .collect( - toMap(ItemOptionsResponse::getId, itemOptionsResponse -> itemOptionsResponse) + toMap(GetItemResponse::getId, getItemsResponse -> getItemsResponse) ); } }