refactor(order): 주문 상세보기 API 리팩토링
- 아이템 정보 API를 통해 아이템 옵션까지 동시에 가져오도록 변경
This commit is contained in:
@@ -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<Long> itemIds = new HashSet<>();
|
||||
Set<Long> itemOptionIds = new HashSet<>();
|
||||
|
||||
// 아이템 이름 및 옵션 이름 가져오기
|
||||
for (OrderItem orderItem : orderItemsWithOptions) {
|
||||
itemIds.add(orderItem.getItemId());
|
||||
for (OrderItemOption orderItemOption : orderItem.getOrderItemOptions()) {
|
||||
itemOptionIds.add(orderItemOption.getItemOptionId());
|
||||
}
|
||||
}
|
||||
|
||||
Map<Long, String> itemNameMap = storeClient.getItemNameMap(itemIds);
|
||||
Map<Long, ItemOptionsResponse> itemOptionMap = storeClient.getItemOptionMap(itemOptionIds);
|
||||
Map<Long, GetItemResponse> itemAndItemOptionMap = storeClient.getItemAndItemOptionMap(itemIds);
|
||||
|
||||
List<OrderDetailItem> orderDetailItems = orderItemsWithOptions.stream()
|
||||
.map(orderItem -> {
|
||||
// 주문 상세 옵션 생성
|
||||
GetItemResponse itemResponse = itemAndItemOptionMap.get(orderItem.getItemId());
|
||||
|
||||
// 아이템 옵션 맵 생성
|
||||
Map<Long, GetItemResponse.ItemOptionDto> itemOptionMap = itemResponse.getItemOptions().stream()
|
||||
.collect(
|
||||
toMap(GetItemResponse.ItemOptionDto::getId, itemOptionDto -> itemOptionDto)
|
||||
);
|
||||
|
||||
List<OrderDetailItemOption> 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());
|
||||
|
||||
@@ -34,9 +34,6 @@ public interface StoreClient {
|
||||
@GetMapping("/api/customer/items/{itemId}")
|
||||
Result<List<GetItemResponse>> getItemAndItemOptions(@PathVariable(value = "itemId") Iterable<Long> itemIds);
|
||||
|
||||
@GetMapping("/item-options/{itemOptionIds}")
|
||||
Result<List<ItemOptionsResponse>> getItemOptions(@PathVariable(value = "itemOptionIds") Iterable<Long> itemOptionIds);
|
||||
|
||||
default Map<Long, String> getStoreNameMap(Set<Long> storeIds) {
|
||||
List<GetStoreResponse> storeResponses = this.getStoreAllById(storeIds).getData();
|
||||
return storeResponses.stream()
|
||||
@@ -53,11 +50,11 @@ public interface StoreClient {
|
||||
);
|
||||
}
|
||||
|
||||
default Map<Long, ItemOptionsResponse> getItemOptionMap(Iterable<Long> itemOptionIds) {
|
||||
List<ItemOptionsResponse> itemOptionsResponses = this.getItemOptions(itemOptionIds).getData();
|
||||
return itemOptionsResponses.stream()
|
||||
default Map<Long, GetItemResponse> getItemAndItemOptionMap(Iterable<Long> itemIds) {
|
||||
List<GetItemResponse> responses = this.getItemAndItemOptions(itemIds).getData();
|
||||
return responses.stream()
|
||||
.collect(
|
||||
toMap(ItemOptionsResponse::getId, itemOptionsResponse -> itemOptionsResponse)
|
||||
toMap(GetItemResponse::getId, getItemsResponse -> getItemsResponse)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user