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 f5e93610..232413ee 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,7 +1,11 @@ package com.nowait.applicationadmin.order.dto; import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import com.nowait.domaincorerdb.order.entity.OrderItem; import com.nowait.domaincorerdb.order.entity.OrderStatus; import com.nowait.domaincorerdb.order.entity.UserOrder; @@ -16,15 +20,24 @@ public class OrderResponseDto { private String depositorName; private Integer totalPrice; private OrderStatus status; + private Map menuNamesAndQuantities; 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 // 메뉴명이 중복일 때 수량 합침 + )); + return OrderResponseDto.builder() .id(userOrder.getId()) .tableId(userOrder.getTableId()) .depositorName(userOrder.getDepositorName()) .totalPrice(userOrder.getTotalPrice()) .status(userOrder.getStatus()) + .menuNamesAndQuantities(menuNamesAndQuantities) .createdAt(userOrder.getCreatedAt()) .build(); } diff --git a/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/order/service/OrderService.java b/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/order/service/OrderService.java index beea5508..ab54a7c8 100644 --- a/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/order/service/OrderService.java +++ b/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/order/service/OrderService.java @@ -9,12 +9,18 @@ import com.nowait.applicationadmin.order.dto.OrderResponseDto; import com.nowait.applicationadmin.order.dto.OrderStatusUpdateResponseDto; import com.nowait.common.enums.Role; +import com.nowait.domaincorerdb.menu.entity.Menu; +import com.nowait.domaincorerdb.menu.exception.MenuNotFoundException; +import com.nowait.domaincorerdb.menu.repository.MenuRepository; import com.nowait.domaincorerdb.order.entity.OrderStatus; import com.nowait.domaincorerdb.order.entity.UserOrder; import com.nowait.domaincorerdb.order.exception.OrderNotFoundException; import com.nowait.domaincorerdb.order.exception.OrderUpdateUnauthorizedException; import com.nowait.domaincorerdb.order.exception.OrderViewUnauthorizedException; import com.nowait.domaincorerdb.order.repository.OrderRepository; +import com.nowait.domaincorerdb.store.entity.Store; +import com.nowait.domaincorerdb.store.exception.StoreNotFoundException; +import com.nowait.domaincorerdb.store.repository.StoreRepository; import com.nowait.domaincorerdb.user.entity.MemberDetails; import com.nowait.domaincorerdb.user.entity.User; import com.nowait.domaincorerdb.user.exception.UserNotFoundException; @@ -27,10 +33,13 @@ public class OrderService { private final OrderRepository orderRepository; private final UserRepository userRepository; + private final StoreRepository storeRepository; @Transactional(readOnly = true) public List findAllOrders(Long storeId, MemberDetails memberDetails) { User user = userRepository.findById(memberDetails.getId()).orElseThrow(UserNotFoundException::new); + storeRepository.findByStoreIdAndDeletedFalse(storeId) + .orElseThrow(StoreNotFoundException::new); if (!Role.SUPER_ADMIN.equals(user.getRole()) && !user.getStoreId().equals(storeId)) { throw new OrderViewUnauthorizedException(); }