From 82413c8bd4d0a3f7cece7cef48cef7f4b24f3359 Mon Sep 17 00:00:00 2001 From: jeonghyemin Date: Fri, 18 Jul 2025 19:51:17 +0900 Subject: [PATCH] =?UTF-8?q?fix(Order):=20=EC=82=AC=EC=9A=A9=EC=9E=90=20?= =?UTF-8?q?=EC=A3=BC=EB=AC=B8=20=EC=A1=B0=ED=9A=8C=20=EB=B0=98=ED=99=98?= =?UTF-8?q?=ED=83=80=EC=9E=85=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - status 한번만 뜨도록 수정 --- .../repository/WaitingRedisRepository.java | 22 +++++++++++++++++++ .../order/controller/OrderController.java | 1 - .../order/dto/OrderCreateResponseDto.java | 5 +++-- .../dto/OrderItemListGetResponseDto.java | 3 +-- .../order/dto/OrderItemResponseDTO.java | 10 +++++++++ .../order/service/OrderService.java | 21 ++++++++++++------ .../repository/WaitingRedisRepository.java | 4 ++-- 7 files changed, 52 insertions(+), 14 deletions(-) create mode 100644 nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/reservation/repository/WaitingRedisRepository.java diff --git a/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/reservation/repository/WaitingRedisRepository.java b/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/reservation/repository/WaitingRedisRepository.java new file mode 100644 index 00000000..74f77241 --- /dev/null +++ b/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/reservation/repository/WaitingRedisRepository.java @@ -0,0 +1,22 @@ +package com.nowait.applicationadmin.reservation.repository; + +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Repository; + +import com.nowait.domaincoreredis.common.util.RedisKeyUtils; + +import lombok.RequiredArgsConstructor; + +@Repository +@RequiredArgsConstructor +public class WaitingRedisRepository { + private final StringRedisTemplate redisTemplate; + + // 대기열 전체 인원수 조회 + public long getWaitingCountByStoreId(Long storeId) { + String key = RedisKeyUtils.buildWaitingKeyPrefix() + storeId; + Long count = redisTemplate.opsForZSet().zCard(key); + return count == null ? 0 : count; + } +} + diff --git a/nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/controller/OrderController.java b/nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/controller/OrderController.java index 9bc3b061..ad216a56 100644 --- a/nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/controller/OrderController.java +++ b/nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/controller/OrderController.java @@ -14,7 +14,6 @@ import com.nowait.applicationuser.order.dto.OrderCreateRequestDto; import com.nowait.applicationuser.order.dto.OrderCreateResponseDto; import com.nowait.applicationuser.order.dto.OrderItemGroupByStatusResponseDto; -import com.nowait.applicationuser.order.dto.OrderItemListGetResponseDto; import com.nowait.applicationuser.order.service.OrderService; import com.nowait.common.api.ApiUtils; diff --git a/nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/dto/OrderCreateResponseDto.java b/nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/dto/OrderCreateResponseDto.java index a11a863d..87706232 100644 --- a/nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/dto/OrderCreateResponseDto.java +++ b/nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/dto/OrderCreateResponseDto.java @@ -2,6 +2,7 @@ import java.util.List; +import com.nowait.domaincorerdb.order.entity.OrderItem; import com.nowait.domaincorerdb.order.entity.UserOrder; import com.nowait.domaincorerdb.order.entity.OrderStatus; @@ -22,14 +23,14 @@ public class OrderCreateResponseDto { private OrderStatus status; private Integer totalPrice; - public static OrderCreateResponseDto fromEntity(UserOrder order) { + public static OrderCreateResponseDto fromEntity(UserOrder order,List items) { return OrderCreateResponseDto.builder() .orderId(order.getId()) .storeId(order.getStore().getStoreId()) .storeName(order.getStore().getName()) .sessionId(order.getSessionId()) .depositorName(order.getDepositorName()) - .orderItems(List.of()) + .orderItems(items.stream().map(OrderItemResponseDTO::fromEntity).toList()) .status(order.getStatus()) .totalPrice(order.getTotalPrice()) .build(); diff --git a/nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/dto/OrderItemListGetResponseDto.java b/nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/dto/OrderItemListGetResponseDto.java index 698dddaa..1bec7fd3 100644 --- a/nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/dto/OrderItemListGetResponseDto.java +++ b/nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/dto/OrderItemListGetResponseDto.java @@ -18,9 +18,8 @@ public class OrderItemListGetResponseDto { private String menuName; private Integer quantity; private Integer price; - private OrderStatus status; - public static OrderItemListGetResponseDto fromEntity(OrderItem orderItem,OrderStatus status) { + public static OrderItemListGetResponseDto fromEntity(OrderItem orderItem) { return OrderItemListGetResponseDto.builder() .orderId(orderItem.getUserOrder().getId()) .menuName(orderItem.getMenu().getName()) diff --git a/nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/dto/OrderItemResponseDTO.java b/nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/dto/OrderItemResponseDTO.java index 1c29a4f2..f598fc96 100644 --- a/nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/dto/OrderItemResponseDTO.java +++ b/nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/dto/OrderItemResponseDTO.java @@ -1,5 +1,7 @@ package com.nowait.applicationuser.order.dto; +import com.nowait.domaincorerdb.order.entity.OrderItem; + import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; @@ -13,4 +15,12 @@ public class OrderItemResponseDTO { private Long menuId; // 메뉴 ID private String menuName; // 메뉴 이름 private int quantity; // 수량 + + public static OrderItemResponseDTO fromEntity(OrderItem orderItem) { + return OrderItemResponseDTO.builder() + .menuId(orderItem.getMenu().getId()) + .menuName(orderItem.getMenu().getName()) + .quantity(orderItem.getQuantity()) + .build(); + } } diff --git a/nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/service/OrderService.java b/nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/service/OrderService.java index 5444749f..746cf9a8 100644 --- a/nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/service/OrderService.java +++ b/nowait-app-user-api/src/main/java/com/nowait/applicationuser/order/service/OrderService.java @@ -90,20 +90,24 @@ public OrderCreateResponseDto createOrder(Long storeId, Long tableId, orderItemRepository.saveAll(orderItems); // 5. 응답 반환 - return OrderCreateResponseDto.fromEntity(savedOrder); + return OrderCreateResponseDto.fromEntity(savedOrder,orderItems); } @Transactional(readOnly = true) - public List getOrderItemsGroupByStatus(Long storeId, Long tableId, String sessionId) { + public List getOrderItemsGroupByStatus( + Long storeId, Long tableId, String sessionId) { List userOrders = orderRepository.findByStore_StoreIdAndTableIdAndSessionId(storeId, tableId, sessionId); - // flatMap으로 OrderItem + status로 펼친 뒤, status별로 groupBy Map> grouped = userOrders.stream() - .flatMap(order -> order.getOrderItems().stream() - .map(orderItem -> OrderItemListGetResponseDto.fromEntity(orderItem, order.getStatus()))) - .collect(Collectors.groupingBy(OrderItemListGetResponseDto::getStatus)); + .flatMap(order -> order.getOrderItems().stream()) + .collect(Collectors.groupingBy( + orderItem -> orderItem.getUserOrder().getStatus(), + Collectors.mapping( + OrderItemListGetResponseDto::fromEntity, + Collectors.toList() + ) + )); - // status별로 responseDto로 변환 return grouped.entrySet().stream() .map(entry -> OrderItemGroupByStatusResponseDto.builder() .status(entry.getKey()) @@ -114,6 +118,9 @@ public List getOrderItemsGroupByStatus(Long s + + + private static void parameterValidation(Long storeId, Long tableId, OrderCreateRequestDto orderCreateRequestDto) { if (storeId == null || tableId == null || orderCreateRequestDto == null) { throw new OrderParameterEmptyException(); diff --git a/nowait-app-user-api/src/main/java/com/nowait/applicationuser/reservation/repository/WaitingRedisRepository.java b/nowait-app-user-api/src/main/java/com/nowait/applicationuser/reservation/repository/WaitingRedisRepository.java index 36f574db..490ba241 100644 --- a/nowait-app-user-api/src/main/java/com/nowait/applicationuser/reservation/repository/WaitingRedisRepository.java +++ b/nowait-app-user-api/src/main/java/com/nowait/applicationuser/reservation/repository/WaitingRedisRepository.java @@ -1,10 +1,10 @@ package com.nowait.applicationuser.reservation.repository; - -import java.util.Set; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Repository; + import com.nowait.domaincoreredis.common.util.RedisKeyUtils; + import lombok.RequiredArgsConstructor; @Repository