O0oO0Oo / netty-reservation-service

트랜잭션, 동시성을 공부하기 위한 토이 프로젝트입니다.
0 stars 0 forks source link

feat: payment module #25

Closed O0oO0Oo closed 1 month ago

O0oO0Oo commented 1 month ago

이슈 개요

외부 결제 서비스와의 연동을 용이하게 하기위해, Payment 모듈을 만들고 User 엔티티의 balance 속성을 Wallet 엔티티로 이동

재현 단계

  1. payment 모듈 생성
  2. user balance 분리
  3. 예약 생성 orchestration saga 로직 재설정

예상 동작

  1. payment 모듈에서 지출 관련 로직이 동작한다.

실제 동작

  1. payment 모듈에서 이벤트를 소비한다
  2. 결제 타입이 WALLET 일 경우, Wallet 테이블에서 값을 찾아 지출한다.
  3. Payment 테이블에 결제 기록을 남긴다.
  4. 결제 후, 아이템의 재고 감소가 이뤄지는데 재고가 부족하다면 보상 트랜잭션이 실행되어 Payment 는 Cancel 상태로 바뀌고 결제 타입이 WALLET 이라면 Wallet 의 잔액 복구가 이뤄진다.

추가 정보