From cf34c9dfe0d1efa6e7469cde7ff67bcf105a6c1e Mon Sep 17 00:00:00 2001 From: Chan Jin Date: Tue, 28 Feb 2023 00:27:35 +0900 Subject: [PATCH 1/2] =?UTF-8?q?refactor=20:=20approve=20order=20=EC=9A=94?= =?UTF-8?q?=EC=B2=AD=EC=8B=9C=20=EC=95=84=EC=9D=B4=ED=85=9C=20=EA=B5=AC?= =?UTF-8?q?=EB=A7=A4=EA=B0=80=EB=8A=A5=20=ED=9A=9F=EC=88=98=20=EC=A0=9C?= =?UTF-8?q?=ED=95=9C=20=EA=B1=B8=EA=B8=B0=20(#480)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * style : 쓸모없는 파일 삭제 * feat : 주문 생성시 분산락 적용 * feat : 승인 대기 중인 주문아이템 갯수 합산 검증 * refactor : issueDoneOrderEvent 을 주문 상태가 대기중일 때만 발생 * style : spotless * style : spotless * test : 테스트 돌아가게 수정 --- .../domains/order/adaptor/OrderAdaptor.java | 5 ++++ .../domain/domains/order/domain/Order.java | 14 +++++++-- .../domains/order/domain/OrderStatus.java | 4 +++ .../domain/validator/OrderValidator.java | 28 ++++++++++++++++++ ...oveWaitingOrderPurchaseLimitException.java | 14 +++++++++ .../order/exception/OrderErrorCode.java | 6 +++- .../order/repository/OrderRepository.java | 3 ++ .../order/service/CreateOrderService.java | 7 +++-- .../handler/ConfirmOrderFailHandler.java | 7 ----- .../ticket_item/domain/TicketItem.java | 6 +++- .../domain/validator/OrderValidatorTest.java | 5 +++- temp.xlsx | Bin 4169 -> 0 bytes 12 files changed, 84 insertions(+), 15 deletions(-) create mode 100644 DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/exception/ApproveWaitingOrderPurchaseLimitException.java delete mode 100644 temp.xlsx diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/adaptor/OrderAdaptor.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/adaptor/OrderAdaptor.java index 049a3090..2351b575 100644 --- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/adaptor/OrderAdaptor.java +++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/adaptor/OrderAdaptor.java @@ -3,6 +3,7 @@ import band.gosrock.common.annotation.Adaptor; import band.gosrock.domain.domains.order.domain.Order; +import band.gosrock.domain.domains.order.domain.OrderStatus; import band.gosrock.domain.domains.order.exception.OrderNotFoundException; import band.gosrock.domain.domains.order.repository.OrderRepository; import band.gosrock.domain.domains.order.repository.condition.FindEventOrdersCondition; @@ -34,6 +35,10 @@ public List findByEventId(Long eventId) { return orderRepository.findByEventId(eventId); } + public List findByEventIdAndOrderStatus(Long eventId, OrderStatus orderStatus) { + return orderRepository.findByEventIdAndOrderStatus(eventId, orderStatus); + } + public Order findByOrderUuid(String uuid) { return orderRepository .findByOrderUuid(uuid) diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/domain/Order.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/domain/Order.java index 151e575a..3604e3c0 100644 --- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/domain/Order.java +++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/domain/Order.java @@ -153,6 +153,7 @@ public static Order createApproveOrder( .eventId(item.getEventId()) .build(); orderValidator.validCanCreate(order); + orderValidator.validApproveStatePurchaseLimit(order); order.calculatePaymentInfo(); return order; } @@ -199,7 +200,7 @@ public void calculatePaymentInfo() { /** 결제 방식의 주문을 승인 합니다. */ public void confirmPayment( LocalDateTime approvedAt, PgPaymentInfo pgPaymentInfo, OrderValidator orderValidator) { - Events.raise(DoneOrderEvent.from(this)); + issueDoneOrderEvent(); orderValidator.validCanConfirmPayment(this); orderStatus = OrderStatus.CONFIRM; this.approvedAt = approvedAt; @@ -208,7 +209,7 @@ public void confirmPayment( /** 승인 방식의 주문을 승인합니다. */ public void approve(OrderValidator orderValidator) { - Events.raise(DoneOrderEvent.from(this)); + issueDoneOrderEvent(); orderValidator.validCanApproveOrder(this); this.approvedAt = LocalDateTime.now(); this.orderStatus = OrderStatus.APPROVED; @@ -217,12 +218,19 @@ public void approve(OrderValidator orderValidator) { /** 선착순 방식의 0원 결제입니다. */ public void freeConfirm(Long currentUserId, OrderValidator orderValidator) { orderValidator.validOwner(this, currentUserId); - Events.raise(DoneOrderEvent.from(this)); + issueDoneOrderEvent(); orderValidator.validCanFreeConfirm(this); this.approvedAt = LocalDateTime.now(); this.orderStatus = OrderStatus.APPROVED; } + /** 주문 상태가 완료될수 있는 상태일 때 돈 오더 이벤트를 발생시킵니다. */ + private void issueDoneOrderEvent() { + if (orderStatus.isCanDone()) { + Events.raise(DoneOrderEvent.from(this)); + } + } + /** 관리자가 주문을 취소 시킵니다 */ public void cancel(OrderValidator orderValidator) { orderValidator.validCanCancel(this); diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/domain/OrderStatus.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/domain/OrderStatus.java index 401d6650..40bf3ff5 100644 --- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/domain/OrderStatus.java +++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/domain/OrderStatus.java @@ -38,6 +38,10 @@ public Boolean isInEventOrderExcelStatus() { || this == OrderStatus.REFUND; } + public Boolean isCanDone() { + return this == OrderStatus.PENDING_PAYMENT || this == OrderStatus.PENDING_APPROVE; + } + public Boolean isCanWithDraw() { return this == OrderStatus.APPROVED || this == OrderStatus.CONFIRM; } diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/domain/validator/OrderValidator.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/domain/validator/OrderValidator.java index 423d9af2..0a11d2e8 100644 --- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/domain/validator/OrderValidator.java +++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/domain/validator/OrderValidator.java @@ -6,9 +6,11 @@ import band.gosrock.domain.domains.event.adaptor.EventAdaptor; import band.gosrock.domain.domains.event.domain.Event; import band.gosrock.domain.domains.issuedTicket.adaptor.IssuedTicketAdaptor; +import band.gosrock.domain.domains.order.adaptor.OrderAdaptor; import band.gosrock.domain.domains.order.domain.Order; import band.gosrock.domain.domains.order.domain.OrderLineItem; import band.gosrock.domain.domains.order.domain.OrderStatus; +import band.gosrock.domain.domains.order.exception.ApproveWaitingOrderPurchaseLimitException; import band.gosrock.domain.domains.order.exception.CanNotApproveDeletedUserOrderException; import band.gosrock.domain.domains.order.exception.CanNotCancelOrderException; import band.gosrock.domain.domains.order.exception.CanNotRefundOrderException; @@ -47,6 +49,8 @@ public class OrderValidator { private final UserAdaptor userAdaptor; + private final OrderAdaptor orderAdaptor; + /** 주문을 생성할 수 있는지에 대한검증 */ public void validCanCreate(Order order) { TicketItem item = getItem(order); @@ -158,6 +162,30 @@ public void validItemPurchaseLimit(Order order, TicketItem item) { item.validPurchaseLimit(totalIssuedCount); } + /** 승인 주문 생성시에 이미 넣은 승인 주문 총합 계산 */ + public void validApproveStatePurchaseLimit(Order order) { + TicketItem item = getItem(order); + // 이미 발급된 티켓 개수 + Long paidTicketCount = issuedTicketAdaptor.countPaidTicket(order.getUserId(), item.getId()); + + List approveWaitingOrders = + orderAdaptor.findByEventIdAndOrderStatus( + order.getEventId(), OrderStatus.PENDING_APPROVE); + // 승인 대기중인 티켓 개수 + Long approveWaitingTicketCount = + approveWaitingOrders.stream() + .filter(o -> Objects.equals(item.getId(), o.getItemId())) + .map(Order::getTotalQuantity) + .reduce(0L, Long::sum); + // 주문승인 요청할 티켓 개수 + Long totalIssuedCount = + paidTicketCount + approveWaitingTicketCount + order.getTotalQuantity(); + // 아이템 갯수 리밋을 초과하면 + if (item.isPurchaseLimitExceed(totalIssuedCount)) { + throw ApproveWaitingOrderPurchaseLimitException.EXCEPTION; + } + } + /** 이벤트가 열려있는 상태인지 */ public void validEventIsOpen(Event event) { event.validateStatusOpen(); diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/exception/ApproveWaitingOrderPurchaseLimitException.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/exception/ApproveWaitingOrderPurchaseLimitException.java new file mode 100644 index 00000000..dca991d6 --- /dev/null +++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/exception/ApproveWaitingOrderPurchaseLimitException.java @@ -0,0 +1,14 @@ +package band.gosrock.domain.domains.order.exception; + + +import band.gosrock.common.exception.DuDoongCodeException; + +public class ApproveWaitingOrderPurchaseLimitException extends DuDoongCodeException { + + public static final DuDoongCodeException EXCEPTION = + new ApproveWaitingOrderPurchaseLimitException(); + + private ApproveWaitingOrderPurchaseLimitException() { + super(OrderErrorCode.APPROVE_WAITING_PURCHASE_LIMIT); + } +} diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/exception/OrderErrorCode.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/exception/OrderErrorCode.java index 453d57d8..320ec74c 100644 --- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/exception/OrderErrorCode.java +++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/exception/OrderErrorCode.java @@ -35,7 +35,11 @@ public enum OrderErrorCode implements BaseErrorCode { @ExplainError("한 장바구니엔 관련된 한 아이템만 올수 있음") ORDER_INVALID_ITEM_KIND_POLICY(BAD_REQUEST, "Order_400_12", "장바구니에 아이템을 담는 정책을 위반하였습니다."), ORDER_OPTION_CHANGED(BAD_REQUEST, "Order_400_13", "주문 과정중 아이템의 옵션이 변화했습니다."), - CAN_NOT_DELETED_USER_APPROVE(BAD_REQUEST, "Order_400_14", "유저가 탈퇴를 했습니다."); + CAN_NOT_DELETED_USER_APPROVE(BAD_REQUEST, "Order_400_14", "유저가 탈퇴를 했습니다."), + APPROVE_WAITING_PURCHASE_LIMIT( + BAD_REQUEST, + "Order_400_15", + "승인 대기중인 주문으로 인해 티켓 최대 구매 가능 회수를 넘겼습니다." + "이미 신청한 주문이 승인 될 때까지 기다려주세요."); private Integer status; private String code; diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/repository/OrderRepository.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/repository/OrderRepository.java index d3ab02bf..c273d86e 100644 --- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/repository/OrderRepository.java +++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/repository/OrderRepository.java @@ -2,6 +2,7 @@ import band.gosrock.domain.domains.order.domain.Order; +import band.gosrock.domain.domains.order.domain.OrderStatus; import java.util.List; import org.springframework.data.repository.CrudRepository; @@ -9,5 +10,7 @@ public interface OrderRepository extends CrudRepository, OrderCusto List findByEventId(Long eventId); + List findByEventIdAndOrderStatus(Long eventId, OrderStatus orderStatus); + List findByUuidIn(List uuids); } diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/service/CreateOrderService.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/service/CreateOrderService.java index 179a607d..ce7c4984 100644 --- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/service/CreateOrderService.java +++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/service/CreateOrderService.java @@ -2,6 +2,7 @@ import band.gosrock.common.annotation.DomainService; +import band.gosrock.domain.common.aop.redissonLock.RedissonLock; import band.gosrock.domain.domains.order.adaptor.OrderAdaptor; import band.gosrock.domain.domains.order.domain.Order; import lombok.RequiredArgsConstructor; @@ -15,13 +16,15 @@ public class CreateOrderService { private final OrderFactory orderFactory; private final OrderAdaptor orderAdaptor; - @Transactional + // 주문 생성간에 승인 주문일경우 이전 목록 조회해서 티켓 발급 한계 개산해야하므로 + // 동시성 이슈가 있음. + @RedissonLock(LockName = "주문생성", identifier = "userId") public String withOutCoupon(Long cartId, Long userId) { Order order = orderFactory.createNormalOrder(cartId, userId); return orderAdaptor.save(order).getUuid(); } - @Transactional + @RedissonLock(LockName = "주문생성", identifier = "userId") public String withCoupon(Long cartId, Long userId, Long couponId) { Order order = orderFactory.createCouponOrder(cartId, userId, couponId); return orderAdaptor.save(order).getUuid(); diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/service/handler/ConfirmOrderFailHandler.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/service/handler/ConfirmOrderFailHandler.java index 417e2740..13637b10 100644 --- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/service/handler/ConfirmOrderFailHandler.java +++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/service/handler/ConfirmOrderFailHandler.java @@ -3,11 +3,9 @@ import band.gosrock.domain.common.events.order.DoneOrderEvent; import band.gosrock.domain.domains.coupon.service.RecoveryCouponService; -import band.gosrock.domain.domains.issuedTicket.adaptor.IssuedTicketAdaptor; import band.gosrock.domain.domains.issuedTicket.service.IssuedTicketDomainService; import band.gosrock.domain.domains.order.adaptor.OrderAdaptor; import band.gosrock.domain.domains.order.domain.Order; -import band.gosrock.domain.domains.order.domain.OrderStatus; import band.gosrock.domain.domains.order.service.WithdrawPaymentService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -27,7 +25,6 @@ public class ConfirmOrderFailHandler { private final RecoveryCouponService recoveryCouponService; private final OrderAdaptor orderAdaptor; - private final IssuedTicketAdaptor issuedTicketAdaptor; @Async @TransactionalEventListener( @@ -38,10 +35,6 @@ public void handleDoneOrderFailEvent(DoneOrderEvent doneOrderEvent) { log.info(doneOrderEvent.getOrderUuid() + "주문 실패 처리 핸들러"); Order order = orderAdaptor.findByOrderUuid(doneOrderEvent.getOrderUuid()); - if (order.getOrderStatus() == OrderStatus.FAILED) { - return; - } - order.fail(); if (order.hasCoupon()) { // 쿠폰 사용했을 시 쿠폰 복구 diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/ticket_item/domain/TicketItem.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/ticket_item/domain/TicketItem.java index cf746a50..daf3082e 100644 --- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/ticket_item/domain/TicketItem.java +++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/ticket_item/domain/TicketItem.java @@ -245,11 +245,15 @@ public void validEnoughQuantity(Long quantity) { } public void validPurchaseLimit(Long quantity) { - if (this.purchaseLimit < quantity) { + if (isPurchaseLimitExceed(quantity)) { throw TicketPurchaseLimitException.EXCEPTION; } } + public Boolean isPurchaseLimitExceed(Long quantity) { + return this.purchaseLimit < quantity; + } + public void increaseQuantity(Long quantity) { if (this.quantity + quantity > supplyCount) { throw TicketItemQuantityLargeException.EXCEPTION; diff --git a/DuDoong-Domain/src/test/java/band/gosrock/domain/domains/order/domain/validator/OrderValidatorTest.java b/DuDoong-Domain/src/test/java/band/gosrock/domain/domains/order/domain/validator/OrderValidatorTest.java index fa4616eb..5c6292a8 100644 --- a/DuDoong-Domain/src/test/java/band/gosrock/domain/domains/order/domain/validator/OrderValidatorTest.java +++ b/DuDoong-Domain/src/test/java/band/gosrock/domain/domains/order/domain/validator/OrderValidatorTest.java @@ -13,6 +13,7 @@ import band.gosrock.domain.domains.event.exception.EventNotOpenException; import band.gosrock.domain.domains.event.exception.EventTicketingTimeIsPassedException; import band.gosrock.domain.domains.issuedTicket.adaptor.IssuedTicketAdaptor; +import band.gosrock.domain.domains.order.adaptor.OrderAdaptor; import band.gosrock.domain.domains.order.domain.Order; import band.gosrock.domain.domains.order.domain.OrderLineItem; import band.gosrock.domain.domains.order.domain.OrderMethod; @@ -57,6 +58,7 @@ class OrderValidatorTest { @Mock IssuedTicketAdaptor issuedTicketAdaptor; @Mock OptionAdaptor optionAdaptor; @Mock UserAdaptor userAdaptor; + @Mock OrderAdaptor OrderAdaptor; @Mock Option optionOfGroup1; @Mock Option optionOfGroup2; @Mock OrderLineItem orderLineItem; @@ -73,7 +75,8 @@ void setUp() { ticketItemAdaptor, issuedTicketAdaptor, optionAdaptor, - userAdaptor); + userAdaptor, + OrderAdaptor); } @Test diff --git a/temp.xlsx b/temp.xlsx deleted file mode 100644 index 293e90c68df2d63b267cc35d71d792df1d69faf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4169 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 s?cc%w(l~zK=jfpz%jzNUbpO1>{}Wjq Date: Tue, 28 Feb 2023 00:27:47 +0900 Subject: [PATCH 2/2] =?UTF-8?q?refactor=20:=20=ED=83=88=ED=87=B4=20?= =?UTF-8?q?=EC=8B=9C=EC=97=90=20=EB=A7=88=EC=BC=80=ED=8C=85=20=EA=B4=80?= =?UTF-8?q?=EB=A0=A8=20=EC=98=B5=EC=85=98=20false=20=EB=A1=9C=20(#482)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/band/gosrock/domain/domains/user/domain/User.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/user/domain/User.java b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/user/domain/User.java index bf7e82fc..624a11d3 100644 --- a/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/user/domain/User.java +++ b/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/user/domain/User.java @@ -82,6 +82,8 @@ public void withDrawUser() { accountState = AccountState.DELETED; profile.withdraw(); oauthInfo = oauthInfo.withDrawOauthInfo(); + marketingAgree = Boolean.FALSE; + receiveMail = Boolean.FALSE; } public void login() {