diff --git a/src/main/java/in/koreatech/koin/domain/order/model/Order.java b/src/main/java/in/koreatech/koin/domain/order/model/Order.java index 8c0f84c..9d6511e 100644 --- a/src/main/java/in/koreatech/koin/domain/order/model/Order.java +++ b/src/main/java/in/koreatech/koin/domain/order/model/Order.java @@ -61,11 +61,11 @@ public class Order extends BaseEntity { @Column(name = "is_deleted", nullable = false) private Boolean isDeleted = FALSE; - @JoinColumn(name = "orderable_shop_id") + @JoinColumn(name = "orderable_shop_id", nullable = false, updatable = false) @ManyToOne(fetch = LAZY) private OrderableShop orderableShop; - @JoinColumn(name = "user_id") + @JoinColumn(name = "user_id", nullable = false, updatable = false) @ManyToOne(fetch = LAZY) private User user; diff --git a/src/main/java/in/koreatech/koin/domain/order/model/OrderDelivery.java b/src/main/java/in/koreatech/koin/domain/order/model/OrderDelivery.java index e0f9125..24f7190 100644 --- a/src/main/java/in/koreatech/koin/domain/order/model/OrderDelivery.java +++ b/src/main/java/in/koreatech/koin/domain/order/model/OrderDelivery.java @@ -36,14 +36,12 @@ public class OrderDelivery { @Column(name = "address", length = 100, nullable = false, updatable = false) private String address; - @NotNull @Size(max = 50) - @Column(name = "to_owner", length = 50, nullable = false, updatable = false) + @Column(name = "to_owner", length = 50, updatable = false) private String toOwner; - @NotNull @Size(max = 50) - @Column(name = "to_rider", length = 50, nullable = false, updatable = false) + @Column(name = "to_rider", length = 50, updatable = false) private String toRider; @NotNull diff --git a/src/main/java/in/koreatech/koin/domain/order/model/OrderMenu.java b/src/main/java/in/koreatech/koin/domain/order/model/OrderMenu.java index cec326f..6033a2c 100644 --- a/src/main/java/in/koreatech/koin/domain/order/model/OrderMenu.java +++ b/src/main/java/in/koreatech/koin/domain/order/model/OrderMenu.java @@ -33,24 +33,23 @@ public class OrderMenu { @GeneratedValue(strategy = IDENTITY) private Integer id; - @NotNull + @NotBlank @Column(name = "menu_name", nullable = false, updatable = false) private String menuName; - @NotNull - @Column(name = "menu_option_name", nullable = false, updatable = false) - private String menuOptionName; - @NotNull @Column(name = "menu_price", nullable = false, updatable = false) private Integer menuPrice; + @Column(name = "menu_price_name", updatable = false) + private String menuPriceName; + @NotNull @Column(name = "quantity", nullable = false, updatable = false) private Integer quantity; @ManyToOne(fetch = LAZY) - @JoinColumn(name = "order_id", nullable = false) + @JoinColumn(name = "order_id", nullable = false, updatable = false) private Order order; @OneToMany(mappedBy = "orderMenu", cascade = ALL, orphanRemoval = true) @@ -59,13 +58,13 @@ public class OrderMenu { @Builder private OrderMenu( String menuName, - String menuOptionName, + String menuPriceName, Integer menuPrice, Integer quantity, Order order ) { this.menuName = menuName; - this.menuOptionName = menuOptionName; + this.menuPriceName = menuPriceName; this.menuPrice = menuPrice; this.quantity = quantity; this.order = order; diff --git a/src/main/java/in/koreatech/koin/domain/order/model/OrderMenuOption.java b/src/main/java/in/koreatech/koin/domain/order/model/OrderMenuOption.java index deaf184..733575e 100644 --- a/src/main/java/in/koreatech/koin/domain/order/model/OrderMenuOption.java +++ b/src/main/java/in/koreatech/koin/domain/order/model/OrderMenuOption.java @@ -28,7 +28,11 @@ public class OrderMenuOption { @Column(name = "id", nullable = false, updatable = false) private Integer id; - @NotNull + @NotBlank + @Column(name = "option_group_name", nullable = false, updatable = false) + private String optionGroupName; + + @NotBlank @Column(name = "option_name", nullable = false, updatable = false) private String optionName; @@ -46,11 +50,13 @@ public class OrderMenuOption { @Builder private OrderMenuOption( + String optionGroupName, String optionName, Integer optionPrice, Integer quantity, OrderMenu orderMenu ) { + this.optionGroupName = optionGroupName; this.optionName = optionName; this.optionPrice = optionPrice; this.quantity = quantity; diff --git a/src/main/java/in/koreatech/koin/domain/order/model/OrderTakeout.java b/src/main/java/in/koreatech/koin/domain/order/model/OrderTakeout.java index db7c2ed..2da8610 100644 --- a/src/main/java/in/koreatech/koin/domain/order/model/OrderTakeout.java +++ b/src/main/java/in/koreatech/koin/domain/order/model/OrderTakeout.java @@ -30,9 +30,8 @@ public class OrderTakeout { @JoinColumn(name = "order_id", referencedColumnName = "id") private Order order; - @NotNull @Size(max = 50) - @Column(name = "to_owner", length = 50, nullable = false, updatable = false) + @Column(name = "to_owner", length = 50, updatable = false) private String toOwner; @Builder diff --git a/src/main/java/in/koreatech/payment/controller/PaymentsApi.java b/src/main/java/in/koreatech/payment/controller/PaymentsApi.java index af6516f..5d2d1fb 100644 --- a/src/main/java/in/koreatech/payment/controller/PaymentsApi.java +++ b/src/main/java/in/koreatech/payment/controller/PaymentsApi.java @@ -39,8 +39,8 @@ public interface PaymentsApi { ## 요청 Body 필드 설명 - `address`: 배달 받을 주소 (필수) - `phone_number`: 수신자 연락처 (필수) - - `to_owner`: 사장님께 전달할 메시지 (선택 / null로 들어오면 서버로에서 공백으로 처리) - - `to_rider`: 라이더에게 전달할 메시지 (선택 / null로 들어오면 서버로에서 공백으로 처리) + - `to_owner`: 사장님께 전달할 메시지 (선택) + - `to_rider`: 라이더에게 전달할 메시지 (선택) - `total_menu_price`: 메뉴 총 금액 (필수) - `delivery_tip`: 배달 팁 (필수) - `total_amount`: 총 결제 금액 (필수) @@ -63,7 +63,7 @@ ResponseEntity createTemporaryDeliveryPayment( ## 요청 Body 필드 설명 - `phone_number`: 수신자 연락처 (필수) - - `to_owner`: 사장님께 전달할 메시지 (선택 / null로 들어오면 서버로에서 공백으로 처리) + - `to_owner`: 사장님께 전달할 메시지 (선택) - `total_menu_price`: 메뉴 총 금액 (필수) - `total_amount`: 총 결제 금액 (필수) """ diff --git a/src/main/java/in/koreatech/payment/dto/request/TemporaryDeliveryPaymentSaveRequest.java b/src/main/java/in/koreatech/payment/dto/request/TemporaryDeliveryPaymentSaveRequest.java index 1115ecb..d9ecac9 100644 --- a/src/main/java/in/koreatech/payment/dto/request/TemporaryDeliveryPaymentSaveRequest.java +++ b/src/main/java/in/koreatech/payment/dto/request/TemporaryDeliveryPaymentSaveRequest.java @@ -41,13 +41,5 @@ public record TemporaryDeliveryPaymentSaveRequest( @NotNull(message = "결제 금액은 필수 입력사항입니다.") Integer totalAmount ) { - public TemporaryDeliveryPaymentSaveRequest { - if (toOwner == null) { - toOwner = ""; - } - - if (toRider == null) { - toRider = ""; - } - } + } diff --git a/src/main/java/in/koreatech/payment/dto/request/TemporaryTakeoutPaymentSaveRequest.java b/src/main/java/in/koreatech/payment/dto/request/TemporaryTakeoutPaymentSaveRequest.java index dde2ff8..755498c 100644 --- a/src/main/java/in/koreatech/payment/dto/request/TemporaryTakeoutPaymentSaveRequest.java +++ b/src/main/java/in/koreatech/payment/dto/request/TemporaryTakeoutPaymentSaveRequest.java @@ -27,9 +27,5 @@ public record TemporaryTakeoutPaymentSaveRequest( @NotNull(message = "결제 금액은 필수 입력사항입니다.") Integer totalAmount ) { - public TemporaryTakeoutPaymentSaveRequest { - if (toOwner == null) { - toOwner = ""; - } - } + } diff --git a/src/main/java/in/koreatech/payment/dto/response/PaymentConfirmResponse.java b/src/main/java/in/koreatech/payment/dto/response/PaymentConfirmResponse.java index 07024bb..8f2d15d 100644 --- a/src/main/java/in/koreatech/payment/dto/response/PaymentConfirmResponse.java +++ b/src/main/java/in/koreatech/payment/dto/response/PaymentConfirmResponse.java @@ -15,12 +15,12 @@ import in.koreatech.koin.domain.order.model.Order; import in.koreatech.koin.domain.order.model.OrderDelivery; +import in.koreatech.koin.domain.order.model.OrderMenu; +import in.koreatech.koin.domain.order.model.OrderMenuOption; import in.koreatech.koin.domain.order.model.OrderTakeout; import in.koreatech.koin.domain.order.model.Payment; import in.koreatech.koin.domain.order.shop.model.entity.shop.OrderableShop; import in.koreatech.koin.domain.shop.model.shop.Shop; -import in.koreatech.payment.model.domain.TemporaryMenuItems; -import in.koreatech.payment.model.domain.TemporaryMenuOption; import io.swagger.v3.oas.annotations.media.Schema; @JsonNaming(value = SnakeCaseStrategy.class) @@ -34,7 +34,7 @@ public record PaymentConfirmResponse( @Schema(description = "가게 주소", example = "충청남도 천안시 동남구 병천면 충절로 1600 은솔관 422호", requiredMode = NOT_REQUIRED) String shopAddress, - @Schema(description = "사장님에게", example = "리뷰 이벤트 감사합니다.", requiredMode = REQUIRED) + @Schema(description = "사장님에게", example = "리뷰 이벤트 감사합니다.", requiredMode = NOT_REQUIRED) String toOwner, @Schema(description = "라이더에게", example = "문 앞에 놔주세요.", requiredMode = NOT_REQUIRED) @@ -75,18 +75,18 @@ public record InnerCartItemResponse( @Schema(description = "선택한 옵션 목록", requiredMode = NOT_REQUIRED) List options ) { - public static InnerCartItemResponse from(TemporaryMenuItems temporaryMenuItems) { + public static InnerCartItemResponse from(OrderMenu orderMenu) { List optionResponses = new ArrayList<>(); - if (temporaryMenuItems.options() != null && !temporaryMenuItems.options().isEmpty()) { - optionResponses = temporaryMenuItems.options().stream() + if (orderMenu.getOrderMenuOptions() != null && !orderMenu.getOrderMenuOptions().isEmpty()) { + optionResponses = orderMenu.getOrderMenuOptions().stream() .map(InnerMenuOptionResponse::from) .toList(); } return new InnerCartItemResponse( - temporaryMenuItems.name(), - temporaryMenuItems.quantity(), + orderMenu.getMenuName(), + orderMenu.getQuantity(), optionResponses ); } @@ -99,10 +99,10 @@ public record InnerMenuOptionResponse( @Schema(description = "옵션 이름", example = "레드디핑 소스", requiredMode = REQUIRED) String optionName ) { - public static InnerMenuOptionResponse from(TemporaryMenuOption temporaryMenuOption) { + public static InnerMenuOptionResponse from(OrderMenuOption orderMenuOption) { return new InnerMenuOptionResponse( - temporaryMenuOption.optionGroupName(), - temporaryMenuOption.optionName() + orderMenuOption.getOptionGroupName(), + orderMenuOption.getOptionName() ); } } @@ -110,7 +110,7 @@ public static InnerMenuOptionResponse from(TemporaryMenuOption temporaryMenuOpti public static PaymentConfirmResponse of( Payment payment, Order order, - List temporaryMenuItems + List orderMenus ) { OrderableShop orderableShop = order.getOrderableShop(); Shop shop = orderableShop.getShop(); @@ -137,7 +137,7 @@ public static PaymentConfirmResponse of( toRider, payment.getAmount(), shop.getName(), - temporaryMenuItems.stream() + orderMenus.stream() .map(InnerCartItemResponse::from) .toList(), order.getOrderType().name(), diff --git a/src/main/java/in/koreatech/payment/model/domain/TemporaryMenuItems.java b/src/main/java/in/koreatech/payment/model/domain/TemporaryMenuItems.java index 551ebdc..3e427a3 100644 --- a/src/main/java/in/koreatech/payment/model/domain/TemporaryMenuItems.java +++ b/src/main/java/in/koreatech/payment/model/domain/TemporaryMenuItems.java @@ -1,7 +1,6 @@ package in.koreatech.payment.model.domain; import java.util.List; -import java.util.Objects; import in.koreatech.koin.domain.order.model.Order; import in.koreatech.koin.domain.order.model.OrderMenu; @@ -16,10 +15,10 @@ public record TemporaryMenuItems( ) { public OrderMenu toOrderMenu(Order order) { OrderMenu orderMenu = OrderMenu.builder() - .menuName(Objects.requireNonNullElse(name, "")) + .menuName(name) .quantity(quantity) - .menuOptionName(Objects.requireNonNullElse(price.name(), "")) .menuPrice(price.price()) + .menuPriceName(price.name()) .order(order) .build(); diff --git a/src/main/java/in/koreatech/payment/model/domain/TemporaryMenuOption.java b/src/main/java/in/koreatech/payment/model/domain/TemporaryMenuOption.java index f3bc859..94f3ba8 100644 --- a/src/main/java/in/koreatech/payment/model/domain/TemporaryMenuOption.java +++ b/src/main/java/in/koreatech/payment/model/domain/TemporaryMenuOption.java @@ -1,7 +1,5 @@ package in.koreatech.payment.model.domain; -import java.util.Objects; - import in.koreatech.koin.domain.order.model.OrderMenu; import in.koreatech.koin.domain.order.model.OrderMenuOption; @@ -13,7 +11,8 @@ public record TemporaryMenuOption( ) { public OrderMenuOption toOrderMenuOption(OrderMenu orderMenu) { return OrderMenuOption.builder() - .optionName(Objects.requireNonNullElse(optionName, "")) + .optionGroupName(optionGroupName) + .optionName(optionName) .optionPrice(optionPrice) .quantity(quantity) .orderMenu(orderMenu) diff --git a/src/main/java/in/koreatech/payment/service/TossService.java b/src/main/java/in/koreatech/payment/service/TossService.java index 007fa5e..3dc9827 100644 --- a/src/main/java/in/koreatech/payment/service/TossService.java +++ b/src/main/java/in/koreatech/payment/service/TossService.java @@ -164,10 +164,9 @@ public PaymentConfirmResponse confirmPayment(String accessToken, String paymentK Payment payment = tossPaymentResponse.toEntity(order); paymentRepository.save(payment); - final PaymentConfirmResponse response = PaymentConfirmResponse.of(payment, order, temporaryPayment.getTemporaryMenuItems()); temporaryPaymentRedisRepository.deleteById(orderId); cartRepository.deleteByUserId(user.getId()); - return response; + return PaymentConfirmResponse.of(payment, order, orderMenus); } @Transactional