diff --git a/customer-vue/src/views/OrderPage.vue b/customer-vue/src/views/OrderPage.vue index f8e0cec..a13093c 100644 --- a/customer-vue/src/views/OrderPage.vue +++ b/customer-vue/src/views/OrderPage.vue @@ -25,7 +25,7 @@
{{ orderItem.orderItemOptionDtoList ? orderItem.orderItemOptionDtoList.map(x=>x.name).join(', ') - : null}} + : null}}  
합계 : {{ orderItem.count * orderItem.price | currency}} 원 diff --git a/order-service/src/main/java/com/justpickup/orderservice/domain/order/dto/FetchOrderDto.java b/order-service/src/main/java/com/justpickup/orderservice/domain/order/dto/FetchOrderDto.java index ac4df70..514cbef 100644 --- a/order-service/src/main/java/com/justpickup/orderservice/domain/order/dto/FetchOrderDto.java +++ b/order-service/src/main/java/com/justpickup/orderservice/domain/order/dto/FetchOrderDto.java @@ -1,10 +1,14 @@ package com.justpickup.orderservice.domain.order.dto; import com.justpickup.orderservice.domain.orderItem.entity.OrderItem; +import com.justpickup.orderservice.domain.orderItemOption.dto.OrderItemOptionDto; +import com.justpickup.orderservice.domain.orderItemOption.entity.OrderItemOption; import com.justpickup.orderservice.global.client.store.GetItemResponse; +import com.justpickup.orderservice.global.client.store.OptionType; import lombok.*; import java.util.List; +import java.util.stream.Collectors; @Getter @NoArgsConstructor @@ -33,7 +37,9 @@ public class FetchOrderDto { private String itemName; - private List orderItemOptionDtoList; + private List orderItemOptionDtoList; + +// private List orderItemOptionDtoList; private Long price; @@ -43,10 +49,35 @@ public class FetchOrderDto { this.id = orderItem.getId(); this.itemId = getItemResponse.getId(); this.itemName = getItemResponse.getName(); - this.orderItemOptionDtoList = getItemResponse.getItemOptions(); + + //getItemResponse에는 해당 item에 존재하는 itemOption들이 전부 들어있으므로, orderItem에서 orderItemOption에 있는값들을 가져와서 매칭해줌 + this.orderItemOptionDtoList = orderItem.getOrderItemOptions().stream().map(orderItemOption -> { + OrderItemOptionDto orderItemOptionDto = new OrderItemOptionDto(orderItemOption.getId(), null, null); + for (GetItemResponse.ItemOptionDto responseItemOption : getItemResponse.getItemOptions()) { + + if (responseItemOption.getId().equals(orderItemOption.getItemOptionId())) { + orderItemOptionDto = new OrderItemOptionDto(orderItemOption.getId(), responseItemOption.getOptionType(), responseItemOption.getName()); + } + } + return orderItemOptionDto; + }).collect(Collectors.toList()); + +// this.orderItemOptionDtoList = getItemResponse.getItemOptions(); this.price = orderItem.getPrice(); this.count = orderItem.getCount(); } + + @Getter + @Data + @NoArgsConstructor + @AllArgsConstructor + public static class OrderItemOptionDto{ + private Long id; + + private OptionType optionType; + + private String name; + } } } 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 97c888b..dc79f8e 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 @@ -191,20 +191,24 @@ public class OrderServiceImpl implements OrderService { @Override public FetchOrderDto fetchOrder(Long userId) { + + //장바구니 Order order = orderRepositoryCustom.fetchOrderBasket(userId) .orElseThrow(() -> new OrderException("장바구니 정보를 찾을 수 없습니다.")); - + // feign 통신 -> store 정보 가져옴 GetStoreResponse store = storeClient.getStore(String.valueOf(order.getStoreId())).getData(); + // feign 통신 -> item, option 정보 가져옴 List data = storeClient.getItemAndItemOptions(order.getOrderItems().stream() .map(OrderItem::getItemId) .filter(Objects::nonNull) .collect(Collectors.toUnmodifiableList()) ).getData(); - Map itemMap = data.stream().collect( + //itemAndOptionMap + Map itemOptionMap = data.stream().collect( Collectors.toMap( GetItemResponse::getId , getItemResponse -> getItemResponse @@ -215,7 +219,7 @@ public class OrderServiceImpl implements OrderService { List orderItemDtoList = order.getOrderItems() .stream().map(orderItem -> new FetchOrderDto.OrderItemDto( - itemMap.get(orderItem.getItemId()) + itemOptionMap.get(orderItem.getItemId()) ,orderItem)) .collect(Collectors.toList()); diff --git a/order-service/src/test/java/com/justpickup/orderservice/domain/order/web/OrderCustomerApiControllerTest.java b/order-service/src/test/java/com/justpickup/orderservice/domain/order/web/OrderCustomerApiControllerTest.java index 172a175..0744e9d 100644 --- a/order-service/src/test/java/com/justpickup/orderservice/domain/order/web/OrderCustomerApiControllerTest.java +++ b/order-service/src/test/java/com/justpickup/orderservice/domain/order/web/OrderCustomerApiControllerTest.java @@ -185,12 +185,15 @@ class OrderCustomerApiControllerTest { new FetchOrderDto(2L,2L,12000L,"저스트카페" ,List.of( new FetchOrderDto.OrderItemDto(1L,1L,"카페라테", - List.of(new GetItemResponse.ItemOptionDto(2L, OptionType.REQUIRED,"Hot") - ,new GetItemResponse.ItemOptionDto(2L, OptionType.OTHER,"샷추카")),3000L,32L) + List.of(new FetchOrderDto.OrderItemDto.OrderItemOptionDto(2L, OptionType.REQUIRED,"Hot") + ,new FetchOrderDto.OrderItemDto.OrderItemOptionDto(2L, OptionType.OTHER,"샷추카")) + ,3000L + ,32L) ) ); + given(orderService.fetchOrder(2L)).willReturn(fetchOrderDto); //When