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..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 @@ -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,17 +17,17 @@ 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; 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; +import com.nowait.reservation.exception.ReservationNotFoundException; import com.nowait.token.exception.BusinessException; import com.nowait.user.exception.UserNotFoundException; @@ -140,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 1372a980..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; @@ -10,6 +12,9 @@ @AllArgsConstructor @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/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..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 @@ -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); @@ -102,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/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/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 7d94e44e..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,5 +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..b5da206e --- /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.DEPOSITOR_NAME_TOO_LONG.getMessage()); + } +}