From 4b5f020155c6caf8fe64e1ccba5560d7ce447712 Mon Sep 17 00:00:00 2001 From: Jihun Kim Date: Fri, 5 Sep 2025 21:11:52 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=EB=8C=80=EA=B8=B0=EC=97=B4=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20=ED=9C=B4=EB=8C=80=ED=8F=B0=EB=B2=88?= =?UTF-8?q?=ED=98=B8=20=ED=95=84=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reservation/dto/WaitingUserResponse.java | 10 +++++-- .../service/ReservationService.java | 29 ++++++++++++------- .../user/repository/UserRepository.java | 3 ++ 3 files changed, 30 insertions(+), 12 deletions(-) diff --git a/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/reservation/dto/WaitingUserResponse.java b/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/reservation/dto/WaitingUserResponse.java index 2dbbc286..3f8838fe 100644 --- a/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/reservation/dto/WaitingUserResponse.java +++ b/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/reservation/dto/WaitingUserResponse.java @@ -18,6 +18,9 @@ public class WaitingUserResponse { @Schema(description = "예약 ID", example = "16-20240201-0002") private String reservationNumber; + @Schema(description = "휴대폰 번호", example = "010-1234-5678") + private String phoneNumber; + @Schema(description = "유저 ID", example = "16") private String userId; @@ -47,6 +50,7 @@ public static WaitingUserResponse fromEntity(Reservation reservation) { .reservationNumber(reservation.getReservationNumber()) .userId(reservation.getUser().getId().toString()) .partySize(reservation.getPartySize()) + .phoneNumber(reservation.getUser().getPhoneNumber()) .userName(reservation.getUser().getNickname()) .createdAt(reservation.getRequestedAt()) .updatedAt(reservation.getUpdatedAt()) @@ -54,11 +58,13 @@ public static WaitingUserResponse fromEntity(Reservation reservation) { .build(); } - public static WaitingUserResponse fromRedis(String reservationId, String userId, Integer partySize, String userName, - LocalDateTime createdAt, LocalDateTime calledAt,String status, Double score) { + public static WaitingUserResponse fromRedis(String reservationId, String userId, String phoneNumber, + Integer partySize, String userName, + LocalDateTime createdAt, LocalDateTime calledAt, String status, Double score) { return WaitingUserResponse.builder() .reservationNumber(reservationId) .userId(userId) + .phoneNumber(phoneNumber) .partySize(partySize) .userName(userName) .createdAt(createdAt) diff --git a/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/reservation/service/ReservationService.java b/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/reservation/service/ReservationService.java index 63139bbf..fb461266 100644 --- a/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/reservation/service/ReservationService.java +++ b/nowait-app-admin-api/src/main/java/com/nowait/applicationadmin/reservation/service/ReservationService.java @@ -6,11 +6,11 @@ import java.time.LocalTime; import java.time.ZoneId; import java.util.ArrayList; +import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.stream.Collectors; import org.springframework.data.redis.core.RedisCallback; import org.springframework.data.redis.core.RedisTemplate; @@ -125,11 +125,17 @@ public List getAllWaitingUserDetails(Long storeId) { List userIdLongs = userIds.stream() .map(Long::valueOf) .toList(); - Map nicknameMap = userRepository.findAllById(userIdLongs).stream() - .collect(Collectors.toMap( - u -> u.getId().toString(), - User::getNickname - )); + + List userList = userRepository.findByIdIn(userIdLongs); + + Map nicknameMap = new HashMap<>(userList.size()); + Map phoneNumberMap = new HashMap<>(userList.size()); + + for (User user : userList) { + String key = user.getId().toString(); + nicknameMap.put(key, user.getNickname()); + phoneNumberMap.put(key, user.getPhoneNumber()); + } // 4) Redis 파이프라인: partySize, status, reservationId String pk = RedisKeyUtils.buildWaitingPartySizeKeyPrefix() + storeId; @@ -174,9 +180,11 @@ public List getAllWaitingUserDetails(Long storeId) { : null; String userName = nicknameMap.getOrDefault(userId, "Unknown"); + String phoneNumber = phoneNumberMap.getOrDefault(userId, "Unknown"); result.add( - WaitingUserResponse.fromRedis(reservationId, userId, partySize, userName, createdAt, calledAt, status, + WaitingUserResponse.fromRedis(reservationId, userId, phoneNumber, partySize, userName, createdAt, + calledAt, status, score)); } @@ -269,8 +277,10 @@ public EntryStatusResponseDto processEntryStatus(Long storeId, String userId, Me } else { if (reservationNumber != null) { try { - waitingPermitLuaRepository.removeActiveMember(userId, String.valueOf(storeId), reservationNumber); - } catch (Exception ignore) {} + waitingPermitLuaRepository.removeActiveMember(userId, String.valueOf(storeId), + reservationNumber); + } catch (Exception ignore) { + } } // 2) 이미 취소(CANCELLED)된 경우: DB 레코드 찾아 바로 CONFIRMED 로 전환 @@ -323,7 +333,6 @@ public EntryStatusResponseDto processEntryStatus(Long storeId, String userId, Me } } - /** * 공통 메서드 */ diff --git a/nowait-domain/domain-core-rdb/src/main/java/com/nowait/domaincorerdb/user/repository/UserRepository.java b/nowait-domain/domain-core-rdb/src/main/java/com/nowait/domaincorerdb/user/repository/UserRepository.java index 5653ee4b..090025c3 100644 --- a/nowait-domain/domain-core-rdb/src/main/java/com/nowait/domaincorerdb/user/repository/UserRepository.java +++ b/nowait-domain/domain-core-rdb/src/main/java/com/nowait/domaincorerdb/user/repository/UserRepository.java @@ -1,5 +1,7 @@ package com.nowait.domaincorerdb.user.repository; +import java.util.Collection; +import java.util.List; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; @@ -11,5 +13,6 @@ public interface UserRepository extends JpaRepository { Optional findByEmail(String email); Optional findByNickname(String nickName); + List findByIdIn(Collection ids); boolean existsByPhoneNumberAndIdNot(String phoneNumber, Long id); }