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