From 942114b94c48a9c5ca008876a733836dc626c0fe Mon Sep 17 00:00:00 2001 From: jeonghyemin Date: Tue, 5 Aug 2025 21:09:35 +0900 Subject: [PATCH] =?UTF-8?q?refactor(order):=20=EC=A3=BC=EB=AC=B8=20?= =?UTF-8?q?=EB=82=B4=EC=97=AD=20=EB=A6=AC=EC=8A=A4=ED=8A=B8=20=EB=B0=98?= =?UTF-8?q?=ED=99=98=20=EA=B0=92=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 메뉴 가격 추가 --- .../order/dto/MenuDetail.java | 11 +++++++ .../order/dto/OrderResponseDto.java | 31 +++++++++++++------ 2 files changed, 32 insertions(+), 10 deletions(-) create mode 100644 nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/order/dto/MenuDetail.java diff --git a/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/order/dto/MenuDetail.java b/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/order/dto/MenuDetail.java new file mode 100644 index 00000000..cb99d483 --- /dev/null +++ b/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/order/dto/MenuDetail.java @@ -0,0 +1,11 @@ +package com.nowait.applicationadmin.order.dto; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class MenuDetail { + private int quantity; + private int price; +} diff --git a/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/order/dto/OrderResponseDto.java b/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/order/dto/OrderResponseDto.java index 232413ee..ccca3fd6 100644 --- a/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/order/dto/OrderResponseDto.java +++ b/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/order/dto/OrderResponseDto.java @@ -1,9 +1,8 @@ package com.nowait.applicationadmin.order.dto; import java.time.LocalDateTime; -import java.util.List; +import java.util.LinkedHashMap; import java.util.Map; -import java.util.stream.Collectors; import com.nowait.domaincorerdb.order.entity.OrderItem; import com.nowait.domaincorerdb.order.entity.OrderStatus; @@ -20,16 +19,27 @@ public class OrderResponseDto { private String depositorName; private Integer totalPrice; private OrderStatus status; - private Map menuNamesAndQuantities; + private Map menuDetails; private LocalDateTime createdAt; public static OrderResponseDto fromEntity(UserOrder userOrder) { - Map menuNamesAndQuantities = userOrder.getOrderItems().stream() - .collect(Collectors.toMap( - orderItem -> orderItem.getMenu().getName(), - OrderItem::getQuantity, - Integer::sum // 메뉴명이 중복일 때 수량 합침 - )); + Map menuDetails = new LinkedHashMap<>(); + + for (OrderItem item : userOrder.getOrderItems()) { + String name = item.getMenu().getName(); + int quantity = item.getQuantity(); + int price = item.getMenu().getPrice(); // 메뉴 단가 + + // 메뉴명이 중복되면 수량만 누적 + // merge 람다함수 활용(해당 key가 있으면 수량 누적, 없으면 새로 생성) + menuDetails.merge(name, + new MenuDetail(quantity, price), + (oldVal, newVal) -> new MenuDetail( + oldVal.getQuantity() + newVal.getQuantity(), + oldVal.getPrice() // 단가는 동일하다는 가정 + ) + ); + } return OrderResponseDto.builder() .id(userOrder.getId()) @@ -37,8 +47,9 @@ public static OrderResponseDto fromEntity(UserOrder userOrder) { .depositorName(userOrder.getDepositorName()) .totalPrice(userOrder.getTotalPrice()) .status(userOrder.getStatus()) - .menuNamesAndQuantities(menuNamesAndQuantities) + .menuDetails(menuDetails) .createdAt(userOrder.getCreatedAt()) .build(); } } +