From 40ae847cd30d4f162f17faeb27304ab4afc55805 Mon Sep 17 00:00:00 2001 From: jeonghyemin Date: Tue, 1 Jul 2025 17:41:40 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat(APIAdmin,Order):=20order=EC=B9=BC?= =?UTF-8?q?=EB=9F=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - order에 입금자명 추가 - reservation exception 디렉토리 위치 변경 --- .../com/nowait/applicationadmin/ApiAdminApplication.java | 3 ++- .../reservation/service/ReservationService.java | 2 +- .../exception/GlobalExceptionHandler.java | 5 ++--- .../applicationuser/order/dto/OrderCreateRequestDto.java | 1 + .../order/dto/OrderCreateResponseDto.java | 2 ++ .../applicationuser/order/service/OrderService.java | 1 + .../exception/ReservationNotFoundException.java | 9 --------- .../src/main/java/com/nowait/order/entity/UserOrder.java | 2 ++ 8 files changed, 11 insertions(+), 14 deletions(-) delete mode 100644 application-user/src/main/java/com/nowait/applicationuser/reservation/exception/ReservationNotFoundException.java diff --git a/application-admin/src/main/java/com/nowait/applicationadmin/ApiAdminApplication.java b/application-admin/src/main/java/com/nowait/applicationadmin/ApiAdminApplication.java index 4099bf40..0e8b5c2f 100644 --- a/application-admin/src/main/java/com/nowait/applicationadmin/ApiAdminApplication.java +++ b/application-admin/src/main/java/com/nowait/applicationadmin/ApiAdminApplication.java @@ -10,7 +10,8 @@ "com.nowait.applicationadmin", "com.nowait.infraaws", "com.nowait.adminsecurity", - "com.nowait.config" + "com.nowait.config", + "com.nowait.reservation" }) @EntityScan(basePackages = { "com.nowait.menu.entity", diff --git a/application-admin/src/main/java/com/nowait/applicationadmin/reservation/service/ReservationService.java b/application-admin/src/main/java/com/nowait/applicationadmin/reservation/service/ReservationService.java index 07109a97..79b891d7 100644 --- a/application-admin/src/main/java/com/nowait/applicationadmin/reservation/service/ReservationService.java +++ b/application-admin/src/main/java/com/nowait/applicationadmin/reservation/service/ReservationService.java @@ -10,10 +10,10 @@ import com.nowait.applicationadmin.reservation.dto.ReservationGetResponseDto; import com.nowait.applicationadmin.reservation.dto.ReservationStatusSummaryDto; import com.nowait.applicationadmin.reservation.dto.ReservationStatusUpdateRequestDto; +import com.nowait.common.enums.ReservationStatus; import com.nowait.reservation.entity.Reservation; import com.nowait.reservation.exception.ReservationNotFoundException; import com.nowait.reservation.repository.ReservationRepository; -import com.nowait.common.enums.ReservationStatus; import lombok.RequiredArgsConstructor; diff --git a/application-user/src/main/java/com/nowait/applicationuser/exception/GlobalExceptionHandler.java b/application-user/src/main/java/com/nowait/applicationuser/exception/GlobalExceptionHandler.java index bcf4eda3..14039ab8 100644 --- a/application-user/src/main/java/com/nowait/applicationuser/exception/GlobalExceptionHandler.java +++ b/application-user/src/main/java/com/nowait/applicationuser/exception/GlobalExceptionHandler.java @@ -1,8 +1,8 @@ package com.nowait.applicationuser.exception; import static com.nowait.common.exception.ErrorMessage.*; -import static org.springframework.http.HttpStatus.*; import static org.springframework.http.HttpStatus.UNAUTHORIZED; +import static org.springframework.http.HttpStatus.*; import java.util.Map; import java.util.stream.Collectors; @@ -17,8 +17,6 @@ import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.multipart.MultipartException; - -import com.nowait.applicationuser.reservation.exception.ReservationNotFoundException; import com.nowait.bookmark.exception.BookmarkOwnerMismatchException; import com.nowait.bookmark.exception.DuplicateBookmarkException; import com.nowait.common.exception.ErrorMessage; @@ -28,6 +26,7 @@ import com.nowait.order.exception.DuplicateOrderException; import com.nowait.order.exception.OrderItemsEmptyException; import com.nowait.order.exception.OrderParameterEmptyException; +import com.nowait.reservation.exception.ReservationNotFoundException; import com.nowait.token.exception.BusinessException; import com.nowait.user.exception.UserNotFoundException; diff --git a/application-user/src/main/java/com/nowait/applicationuser/order/dto/OrderCreateRequestDto.java b/application-user/src/main/java/com/nowait/applicationuser/order/dto/OrderCreateRequestDto.java index 1372a980..f480ed05 100644 --- a/application-user/src/main/java/com/nowait/applicationuser/order/dto/OrderCreateRequestDto.java +++ b/application-user/src/main/java/com/nowait/applicationuser/order/dto/OrderCreateRequestDto.java @@ -10,6 +10,7 @@ @AllArgsConstructor @Builder public class OrderCreateRequestDto { + private final String depositorName; // 예약자 이름 private final List items; // 장바구니 항목 리스트 } diff --git a/application-user/src/main/java/com/nowait/applicationuser/order/dto/OrderCreateResponseDto.java b/application-user/src/main/java/com/nowait/applicationuser/order/dto/OrderCreateResponseDto.java index 3326d510..89a0e5e5 100644 --- a/application-user/src/main/java/com/nowait/applicationuser/order/dto/OrderCreateResponseDto.java +++ b/application-user/src/main/java/com/nowait/applicationuser/order/dto/OrderCreateResponseDto.java @@ -16,6 +16,7 @@ public class OrderCreateResponseDto { private Long storeId; // 상점 ID private String storeName; // 상점 이름 private String sessionId; + private String depositorName; private List orderItems; // 주문 항목 목록 public static OrderCreateResponseDto fromEntity(UserOrder order) { @@ -24,6 +25,7 @@ public static OrderCreateResponseDto fromEntity(UserOrder order) { .storeId(order.getStore().getStoreId()) .storeName(order.getStore().getName()) .sessionId(order.getSessionId()) + .depositorName(order.getDepositorName()) .orderItems(List.of()) .build(); } diff --git a/application-user/src/main/java/com/nowait/applicationuser/order/service/OrderService.java b/application-user/src/main/java/com/nowait/applicationuser/order/service/OrderService.java index 07cc19c3..10db847f 100644 --- a/application-user/src/main/java/com/nowait/applicationuser/order/service/OrderService.java +++ b/application-user/src/main/java/com/nowait/applicationuser/order/service/OrderService.java @@ -55,6 +55,7 @@ public OrderCreateResponseDto createOrder(Long storeId, Long tableId, .store(store) .signature(signature) // signature 저장 .sessionId(sessionId) // sessionId 저장 + .depositorName(orderCreateRequestDto.getDepositorName()) .build(); UserOrder savedOrder = orderRepository.save(order); diff --git a/application-user/src/main/java/com/nowait/applicationuser/reservation/exception/ReservationNotFoundException.java b/application-user/src/main/java/com/nowait/applicationuser/reservation/exception/ReservationNotFoundException.java deleted file mode 100644 index bb6db2f8..00000000 --- a/application-user/src/main/java/com/nowait/applicationuser/reservation/exception/ReservationNotFoundException.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.nowait.applicationuser.reservation.exception; - -import com.nowait.common.exception.ErrorMessage; - -public class ReservationNotFoundException extends RuntimeException { - public ReservationNotFoundException() { - super(ErrorMessage.NOTFOUND_RESERVATION.getMessage()); - } -} diff --git a/domain-order/src/main/java/com/nowait/order/entity/UserOrder.java b/domain-order/src/main/java/com/nowait/order/entity/UserOrder.java index 7d94e44e..4228c290 100644 --- a/domain-order/src/main/java/com/nowait/order/entity/UserOrder.java +++ b/domain-order/src/main/java/com/nowait/order/entity/UserOrder.java @@ -47,4 +47,6 @@ public class UserOrder extends BaseTimeEntity { private String sessionId; + private String depositorName; + } From 7a43ff7c1541dc8d9cf0bd8ad84e3e511624708c Mon Sep 17 00:00:00 2001 From: jeonghyemin Date: Tue, 1 Jul 2025 18:05:40 +0900 Subject: [PATCH 2/3] =?UTF-8?q?feat(APIAdmin,Order):=20order=EC=B9=BC?= =?UTF-8?q?=EB=9F=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - order에 입금자명 추가 - reservation exception 디렉토리 위치 변경 --- .../exception/GlobalExceptionHandler.java | 8 ++++++++ .../order/dto/OrderCreateRequestDto.java | 4 ++++ .../applicationuser/order/service/OrderService.java | 10 ++++++++-- .../java/com/nowait/common/exception/ErrorMessage.java | 1 + .../main/java/com/nowait/order/entity/UserOrder.java | 2 +- .../order/exception/DepositorNameTooLongException.java | 9 +++++++++ 6 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 domain-order/src/main/java/com/nowait/order/exception/DepositorNameTooLongException.java diff --git a/application-user/src/main/java/com/nowait/applicationuser/exception/GlobalExceptionHandler.java b/application-user/src/main/java/com/nowait/applicationuser/exception/GlobalExceptionHandler.java index 14039ab8..20d346c1 100644 --- a/application-user/src/main/java/com/nowait/applicationuser/exception/GlobalExceptionHandler.java +++ b/application-user/src/main/java/com/nowait/applicationuser/exception/GlobalExceptionHandler.java @@ -23,6 +23,7 @@ import com.nowait.common.exception.ErrorResponse; import com.nowait.frontsecurity.exception.ResourceNotFoundException; import com.nowait.frontsecurity.exception.UnauthorizedException; +import com.nowait.order.exception.DepositorNameTooLongException; import com.nowait.order.exception.DuplicateOrderException; import com.nowait.order.exception.OrderItemsEmptyException; import com.nowait.order.exception.OrderParameterEmptyException; @@ -139,6 +140,13 @@ public ErrorResponse orderItemsEmptyException(OrderItemsEmptyException e) { return new ErrorResponse(e.getMessage(), ORDER_ITEMS_EMPTY.getCode()); } + @ResponseStatus(value = BAD_REQUEST) + @ExceptionHandler(DepositorNameTooLongException.class) + public ErrorResponse depositorNameTooLongException(DepositorNameTooLongException e) { + log.error("depositorNameTooLongException", e); + return new ErrorResponse(e.getMessage(), DEPOSITOR_NAME_TOO_LONG.getCode()); + } + @ResponseStatus(value = BAD_REQUEST) @ExceptionHandler(DuplicateOrderException.class) public ErrorResponse duplicateOrderException(DuplicateOrderException e) { diff --git a/application-user/src/main/java/com/nowait/applicationuser/order/dto/OrderCreateRequestDto.java b/application-user/src/main/java/com/nowait/applicationuser/order/dto/OrderCreateRequestDto.java index f480ed05..1bdd2528 100644 --- a/application-user/src/main/java/com/nowait/applicationuser/order/dto/OrderCreateRequestDto.java +++ b/application-user/src/main/java/com/nowait/applicationuser/order/dto/OrderCreateRequestDto.java @@ -2,6 +2,8 @@ import java.util.List; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; @@ -11,6 +13,8 @@ @Builder public class OrderCreateRequestDto { private final String depositorName; // 예약자 이름 + @NotBlank(message = "주문자 이름은 필수입니다") + @Size(max = 100, message = "주문자 이름은 10자 이하여야 합니다") private final List items; // 장바구니 항목 리스트 } diff --git a/application-user/src/main/java/com/nowait/applicationuser/order/service/OrderService.java b/application-user/src/main/java/com/nowait/applicationuser/order/service/OrderService.java index 10db847f..35ffdde4 100644 --- a/application-user/src/main/java/com/nowait/applicationuser/order/service/OrderService.java +++ b/application-user/src/main/java/com/nowait/applicationuser/order/service/OrderService.java @@ -103,10 +103,16 @@ public List getOrderItems(Long storeId, Long tableI private static void parameterValidation(Long storeId, Long tableId, OrderCreateRequestDto orderCreateRequestDto) { if (storeId == null || tableId == null || orderCreateRequestDto == null) { - throw new OrderParameterEmptyException(); + throw new OrderParameterEmptyException(); } if (orderCreateRequestDto.getItems() == null || orderCreateRequestDto.getItems().isEmpty()) { - throw new OrderItemsEmptyException(); + throw new OrderItemsEmptyException(); + } + if (orderCreateRequestDto.getDepositorName() == null || orderCreateRequestDto.getDepositorName().trim().isEmpty()) { + throw new OrderParameterEmptyException(); + } + if (orderCreateRequestDto.getDepositorName().length() > 20) { + throw new IllegalArgumentException("Depositor name is too long"); } } private String generateOrderSignature(Long storeId, Long tableId, List items) { diff --git a/common/src/main/java/com/nowait/common/exception/ErrorMessage.java b/common/src/main/java/com/nowait/common/exception/ErrorMessage.java index 5fb5aecb..a0e33556 100644 --- a/common/src/main/java/com/nowait/common/exception/ErrorMessage.java +++ b/common/src/main/java/com/nowait/common/exception/ErrorMessage.java @@ -18,6 +18,7 @@ public enum ErrorMessage { ORDER_PARAMETER_EMPTY("주문 생성 시 파라미터 정보가 없습니다.", "order001"), ORDER_ITEMS_EMPTY("주문 항목이 없습니다.", "order002"), DUPLICATE_ORDER("동일한 주문이 접수되었습니다.", "order003"), + DEPOSITOR_NAME_TOO_LONG("주문자명은 10자 이내 글자열입니다.", "order004"), //reservation NOTFOUND_RESERVATION("저장된 예약 정보가 없습니다.", "reservation001"), diff --git a/domain-order/src/main/java/com/nowait/order/entity/UserOrder.java b/domain-order/src/main/java/com/nowait/order/entity/UserOrder.java index 4228c290..06909f2c 100644 --- a/domain-order/src/main/java/com/nowait/order/entity/UserOrder.java +++ b/domain-order/src/main/java/com/nowait/order/entity/UserOrder.java @@ -46,7 +46,7 @@ public class UserOrder extends BaseTimeEntity { private List orderItems = new ArrayList<>(); private String sessionId; - + @Column(length = 10) // 예약자 이름 길이 제한 private String depositorName; } diff --git a/domain-order/src/main/java/com/nowait/order/exception/DepositorNameTooLongException.java b/domain-order/src/main/java/com/nowait/order/exception/DepositorNameTooLongException.java new file mode 100644 index 00000000..e6a1e9aa --- /dev/null +++ b/domain-order/src/main/java/com/nowait/order/exception/DepositorNameTooLongException.java @@ -0,0 +1,9 @@ +package com.nowait.order.exception; + +import com.nowait.common.exception.ErrorMessage; + +public class DepositorNameTooLongException extends RuntimeException { + public DepositorNameTooLongException() { + super(ErrorMessage.DUPLICATE_ORDER.getMessage()); + } +} From 2f0b5c2c6004cd4331d89adb5a7b25215ec922f6 Mon Sep 17 00:00:00 2001 From: jeonghyemin Date: Tue, 1 Jul 2025 18:07:40 +0900 Subject: [PATCH 3/3] =?UTF-8?q?feat(APIAdmin,Order):=20order=EC=B9=BC?= =?UTF-8?q?=EB=9F=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - order에 입금자명 추가 - reservation exception 디렉토리 위치 변경 --- .../nowait/order/exception/DepositorNameTooLongException.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/domain-order/src/main/java/com/nowait/order/exception/DepositorNameTooLongException.java b/domain-order/src/main/java/com/nowait/order/exception/DepositorNameTooLongException.java index e6a1e9aa..b5da206e 100644 --- a/domain-order/src/main/java/com/nowait/order/exception/DepositorNameTooLongException.java +++ b/domain-order/src/main/java/com/nowait/order/exception/DepositorNameTooLongException.java @@ -4,6 +4,6 @@ public class DepositorNameTooLongException extends RuntimeException { public DepositorNameTooLongException() { - super(ErrorMessage.DUPLICATE_ORDER.getMessage()); + super(ErrorMessage.DEPOSITOR_NAME_TOO_LONG.getMessage()); } }