diff --git a/liberty52-main-service/src/main/java/com/liberty52/main/global/constants/PriceConstants.java b/liberty52-main-service/src/main/java/com/liberty52/main/global/constants/PriceConstants.java deleted file mode 100644 index 5ac6456f..00000000 --- a/liberty52-main-service/src/main/java/com/liberty52/main/global/constants/PriceConstants.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.liberty52.main.global.constants; - -public class PriceConstants { - - public static final int DEFAULT_DELIVERY_PRICE = 100; - -} diff --git a/liberty52-main-service/src/main/java/com/liberty52/main/global/data/DBInitConfig.java b/liberty52-main-service/src/main/java/com/liberty52/main/global/data/DBInitConfig.java index 6a8076c9..646a3576 100644 --- a/liberty52-main-service/src/main/java/com/liberty52/main/global/data/DBInitConfig.java +++ b/liberty52-main-service/src/main/java/com/liberty52/main/global/data/DBInitConfig.java @@ -1,7 +1,6 @@ package com.liberty52.main.global.data; import com.liberty52.main.global.adapter.portone.dto.PortOnePaymentInfo; -import com.liberty52.main.global.constants.PriceConstants; import com.liberty52.main.global.constants.ProductConstants; import com.liberty52.main.global.constants.VBankConstants; import com.liberty52.main.service.applicationservice.OrderCreateService; @@ -161,10 +160,9 @@ public void init() { // Add Order Orders order = ordersRepository.save( - Orders.create(AUTH_ID, PriceConstants.DEFAULT_DELIVERY_PRICE, - OrderDestination.create("receiver", "email", "01012341234", - "경기도 어딘가", - "101동 101호", "12345"))); + Orders.create(AUTH_ID, OrderDestination.create( + "receiver", "email", "01012341234", + "경기도 어딘가", "101동 101호", "12345"))); DBInitService.order = order; customProduct0 = CustomProduct.create(imageUrl, 1, AUTH_ID); @@ -191,10 +189,9 @@ public void init() { // Add Order Orders orderSub = ordersRepository.save( - Orders.create(AUTH_ID, PriceConstants.DEFAULT_DELIVERY_PRICE, - OrderDestination.create("receiver", "email", "01012341234", - "경기도 어딘가", - "101동 101호", "12345"))); + Orders.create(AUTH_ID, OrderDestination.create( + "receiver", "email", "01012341234", + "경기도 어딘가", "101동 101호", "12345"))); DBInitService.order = order; CustomProduct customProduct = CustomProduct.create(imageUrl, 1, AUTH_ID); @@ -226,9 +223,9 @@ public void init() { for (int i = 0; i < 10; i++) { Orders guestOrder = Orders.create("GUEST-00" + i, - PriceConstants.DEFAULT_DELIVERY_PRICE, OrderDestination.create("receiver", "email", "01012341234", "경기도 어딘가", "101동 101호", "12345")); + guestOrder.changeOrderStatusToOrdered(); Field guestOrderId = guestOrder.getClass().getDeclaredField("id"); guestOrderId.setAccessible(true); @@ -261,7 +258,6 @@ public void init() { for (int i = 11; i < 15; i++) { Orders guestOrder = Orders.create("GUEST-00" + i, - PriceConstants.DEFAULT_DELIVERY_PRICE, OrderDestination.create("receiver", "email", "01012341234", "경기도 어딘가", "101동 101호", "12345")); guestOrder.changeOrderStatusToWaitingDeposit(); @@ -297,7 +293,6 @@ public void init() { // 카드 취소 for (; c < 5; c++) { Orders c_order = Orders.create("CANCELER-00" + c, - PriceConstants.DEFAULT_DELIVERY_PRICE, OrderDestination.create("receiver", "email", "01012341234", "경기도 어딘가", "101동 101호", "12345") ); @@ -333,7 +328,6 @@ public void init() { for (; c < 10; c++) { Orders c_order = Orders.create("CANCELER-00" + c, - PriceConstants.DEFAULT_DELIVERY_PRICE, OrderDestination.create("receiver", "email", "01012341234", "경기도 어딘가", "101동 101호", "12345") ); @@ -366,7 +360,6 @@ public void init() { for (; c < 15; c++) { Orders c_order = Orders.create("CANCELER-00" + c, - PriceConstants.DEFAULT_DELIVERY_PRICE, OrderDestination.create("receiver", "email", "01012341234", "경기도 어딘가", "101동 101호", "12345") ); diff --git a/liberty52-main-service/src/main/java/com/liberty52/main/service/entity/CustomProduct.java b/liberty52-main-service/src/main/java/com/liberty52/main/service/entity/CustomProduct.java index 6661528f..7bf83f23 100644 --- a/liberty52-main-service/src/main/java/com/liberty52/main/service/entity/CustomProduct.java +++ b/liberty52-main-service/src/main/java/com/liberty52/main/service/entity/CustomProduct.java @@ -157,5 +157,8 @@ public void modifyQuantity(int quantity) { this.quantity = quantity; } + public int getDeliveryFee() { + return this.product.getDeliveryFee(); + } } diff --git a/liberty52-main-service/src/main/java/com/liberty52/main/service/entity/Orders.java b/liberty52-main-service/src/main/java/com/liberty52/main/service/entity/Orders.java index 7abbad35..06ce49c0 100644 --- a/liberty52-main-service/src/main/java/com/liberty52/main/service/entity/Orders.java +++ b/liberty52-main-service/src/main/java/com/liberty52/main/service/entity/Orders.java @@ -1,6 +1,5 @@ package com.liberty52.main.service.entity; -import com.liberty52.main.global.constants.PriceConstants; import com.liberty52.main.global.util.Utils; import com.liberty52.main.service.entity.payment.Payment; import jakarta.persistence.*; @@ -26,12 +25,14 @@ public class Orders { @Id private final String id = UUID.randomUUID().toString(); private final LocalDateTime orderedAt = LocalDateTime.now(ZoneId.of("Asia/Seoul")); + @Column(updatable = false, nullable = false) private String authId; + @Enumerated(EnumType.STRING) private OrderStatus orderStatus; - private int deliveryPrice = PriceConstants.DEFAULT_DELIVERY_PRICE; + private int deliveryPrice = 0; private Long amount = 0L; @@ -56,15 +57,6 @@ public class Orders { @OneToOne(cascade = CascadeType.ALL, mappedBy = "order") private OrderDelivery orderDelivery; - @Deprecated - private Orders(String authId, int deliveryPrice, OrderDestination orderDestination) { - this.authId = authId; - orderStatus = OrderStatus.ORDERED; - this.orderNum = Utils.OrderNumberBuilder.createOrderNum(); - this.deliveryPrice = deliveryPrice; - this.orderDestination = orderDestination; - } - private Orders(String authId, OrderDestination orderDestination) { this.authId = authId; this.orderStatus = OrderStatus.READY; @@ -72,11 +64,6 @@ private Orders(String authId, OrderDestination orderDestination) { this.orderDestination = orderDestination; } - @Deprecated - public static Orders create(String authId, int deliveryPrice, OrderDestination orderDestination) { - return new Orders(authId, deliveryPrice, orderDestination); - } - public static Orders create(String authId, OrderDestination orderDestination) { return new Orders(authId, orderDestination); } @@ -131,7 +118,11 @@ private void calcTotalAmountAndSet() { // 수량 totalAmount.getAndUpdate(x -> customProduct.getQuantity() * x); }); + // 배송비 + this.deliveryPrice = this.customProducts.stream() + .mapToInt(CustomProduct::getDeliveryFee) + .sum(); totalAmount.getAndAdd(this.deliveryPrice); this.amount = totalAmount.get(); diff --git a/liberty52-main-service/src/main/java/com/liberty52/main/service/entity/Product.java b/liberty52-main-service/src/main/java/com/liberty52/main/service/entity/Product.java index bcbea160..dda96cf1 100644 --- a/liberty52-main-service/src/main/java/com/liberty52/main/service/entity/Product.java +++ b/liberty52-main-service/src/main/java/com/liberty52/main/service/entity/Product.java @@ -101,4 +101,11 @@ public float getRate(List productReviewList) { public void updateProductOrder(int productOrder) { this.productOrder = productOrder; } + + public int getDeliveryFee() { + if (this.deliveryOption == null) { + return 0; + } + return this.deliveryOption.getFee(); + } } diff --git a/liberty52-main-service/src/test/java/com/liberty52/main/service/applicationservice/impl/OrderCreateServiceImplUnitTest.java b/liberty52-main-service/src/test/java/com/liberty52/main/service/applicationservice/impl/OrderCreateServiceImplUnitTest.java index f6d2cd10..371ae5f2 100644 --- a/liberty52-main-service/src/test/java/com/liberty52/main/service/applicationservice/impl/OrderCreateServiceImplUnitTest.java +++ b/liberty52-main-service/src/test/java/com/liberty52/main/service/applicationservice/impl/OrderCreateServiceImplUnitTest.java @@ -86,6 +86,7 @@ private PaymentCardResponseDto executeCardPaymentOrders(String authId, List customProducts + ) { + var order = MockFactory.createOrder(authId); + customProducts.forEach(it -> it.associateWithOrder(order)); + return order; } - @AfterEach - public void deleteS3Image() { - Orders orders = ordersRepository.findById(orderId).get(); - orders.getCustomProducts().forEach(customProduct -> { - String imageUrl = customProduct.getUserCustomPictureUrl(); - s3Uploader.delete(imageUrl); - }); + private Orders givenOrder( + String authId, + CustomProduct customProduct + ) { + return givenOrder(authId, List.of(customProduct)); } + private CustomProduct givenCustomProduct( + String authId, + Product product, + OptionDetail... selectedOptions + ) { + var customProduct = MockFactory.createCustomProduct("image", 1, authId, product); + Arrays.stream(selectedOptions).forEach(it -> + MockFactory.createCustomProductOption(customProduct, it)); + + return customProduct; + } + + private Product givenProduct( + Long productPrice, + Integer deliveryFee + ) { + var product = MockFactory.createProduct("product", productPrice); + + var productOption1 = MockFactory.createProductOption("product-option-1", true); + var optionDetail1 = MockFactory.createOptionDetail("detail-1", 1000); + var optionDetail2 = MockFactory.createOptionDetail("detail-2", 100); + optionDetail1.associate(productOption1); + optionDetail2.associate(productOption1); + + var productOption2 = MockFactory.createProductOption("product-option-2", true); + var optionDetail3 = MockFactory.createOptionDetail("detail-3", 1000); + var optionDetail4 = MockFactory.createOptionDetail("detail-4", 10000); + optionDetail3.associate(productOption2); + optionDetail4.associate(productOption2); + + product.addOption(productOption1); + product.addOption(productOption2); + + MockFactory.createProductDeliveryOption("cj", deliveryFee, product); + + return product; + } }