fix(customer-vue): 장바구니 수정

장바구니 수정
This commit is contained in:
hoon7566
2022-03-23 15:35:30 +09:00
parent dda825ad11
commit c5540d66d2
4 changed files with 46 additions and 8 deletions

View File

@@ -25,7 +25,7 @@
<div class="text-body-1 mb-5" style="white-space:nowrap; overflow:hidden; text-overflow:ellipsis;">
{{ orderItem.orderItemOptionDtoList ?
orderItem.orderItemOptionDtoList.map(x=>x.name).join(', ')
: null}}
: null}} &nbsp;
</div>
<div class="text--primary">
합계 : <b> {{ orderItem.count * orderItem.price | currency}} </b>

View File

@@ -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;
}
}
}

View File

@@ -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());

View File

@@ -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