fix(customer-vue): 장바구니 수정
장바구니 수정
This commit is contained in:
@@ -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<GetItemResponse.ItemOptionDto> orderItemOptionDtoList;
|
||||
private List<OrderItemOptionDto> orderItemOptionDtoList;
|
||||
|
||||
// private List<GetItemResponse.ItemOptionDto> 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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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<GetItemResponse> data = storeClient.getItemAndItemOptions(order.getOrderItems().stream()
|
||||
.map(OrderItem::getItemId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toUnmodifiableList())
|
||||
).getData();
|
||||
|
||||
Map<Long, GetItemResponse> itemMap = data.stream().collect(
|
||||
//itemAndOptionMap
|
||||
Map<Long, GetItemResponse> itemOptionMap = data.stream().collect(
|
||||
Collectors.toMap(
|
||||
GetItemResponse::getId
|
||||
, getItemResponse -> getItemResponse
|
||||
@@ -215,7 +219,7 @@ public class OrderServiceImpl implements OrderService {
|
||||
List<FetchOrderDto.OrderItemDto> orderItemDtoList = order.getOrderItems()
|
||||
.stream().map(orderItem ->
|
||||
new FetchOrderDto.OrderItemDto(
|
||||
itemMap.get(orderItem.getItemId())
|
||||
itemOptionMap.get(orderItem.getItemId())
|
||||
,orderItem))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user