Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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;
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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<OrderItem> 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();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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())
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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<OrderItemGroupByStatusResponseDto> getOrderItemsGroupByStatus(Long storeId, Long tableId, String sessionId) {
public List<OrderItemGroupByStatusResponseDto> getOrderItemsGroupByStatus(
Long storeId, Long tableId, String sessionId) {
List<UserOrder> userOrders = orderRepository.findByStore_StoreIdAndTableIdAndSessionId(storeId, tableId, sessionId);

// flatMap으로 OrderItem + status로 펼친 뒤, status별로 groupBy
Map<OrderStatus, List<OrderItemListGetResponseDto>> 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())
Expand All @@ -114,6 +118,9 @@ public List<OrderItemGroupByStatusResponseDto> getOrderItemsGroupByStatus(Long s






private static void parameterValidation(Long storeId, Long tableId, OrderCreateRequestDto orderCreateRequestDto) {
if (storeId == null || tableId == null || orderCreateRequestDto == null) {
throw new OrderParameterEmptyException();
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down