Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor : 주문 승인 후 티켓 발급 과정에서 오류시 보상트랜잭션 실행 ( 민준이 추가작업 예정 ) #282

Merged
merged 8 commits into from
Feb 5, 2023
Prev Previous commit
Next Next commit
fix: 발급 티켓 쿼리 락 안으로 수정
sanbonai06 committed Feb 3, 2023
commit 0c5c5d2bf368df64a3796c5b3f36d8ad606db6bf
Original file line number Diff line number Diff line change
@@ -39,6 +39,21 @@ public void withdrawIssuedTicket(Long itemId, List<IssuedTicket> issuedTickets)
});
}

/*
주문 승인 과정 중 티켓 아이템의 상태가 변해서 주문이 취소되는 경우
이미 발급된 티켓 취소 로직
*/
@RedissonLock(LockName = "티켓관리", identifier = "itemId")
public void doneOrderEventAfterRollBackWithdrawIssuedTickets(Long itemId,
String orderUuid) {
List<IssuedTicket> failIssuedTickets = issuedTicketAdaptor.findAllByOrderUuid(orderUuid);
TicketItem ticketItem = ticketItemAdaptor.queryTicketItem(itemId);
failIssuedTickets.forEach(issuedTicket -> {
ticketItem.increaseQuantity(1L);
issuedTicket.cancel();
});
}

@Transactional
public IssuedTicketInfoVo processingEntranceIssuedTicket(
Long eventId, Long currentUserId, Long issuedTicketId) {
Original file line number Diff line number Diff line change
@@ -40,10 +40,8 @@ public void handleDoneOrderFailEvent(DoneOrderEvent doneOrderEvent) {
order.fail();
// TODO : 쿠폰을 함께한 결제라면 쿠폰 원상 복구

List<IssuedTicket> failIssuedTickets =
issuedTicketAdaptor.findAllByOrderUuid(doneOrderEvent.getOrderUuid());
issuedTicketDomainService.withdrawIssuedTicket(
doneOrderEvent.getItemId(), failIssuedTickets);
issuedTicketDomainService.doneOrderEventAfterRollBackWithdrawIssuedTickets(
doneOrderEvent.getItemId(), doneOrderEvent.getOrderUuid());

if (order.isPaid()) {
log.info(