콘텐츠로 이동

주문 시스템

주문 상태 관리

상태 흐름도

stateDiagram-v2
    [*] --> REQUESTED: 주문 생성
    REQUESTED --> COMPLETED: 결제 완료
    REQUESTED --> CANCELLED: 주문 취소
    COMPLETED --> [*]
    CANCELLED --> [*]

상태 설명

REQUESTED

  • 의미: 주문이 생성된 초기 상태
  • 처리: 결제 대기 중
  • 가능한 다음 상태: COMPLETED, CANCELLED
  • 제약사항:
  • 결제 정보 필수
  • 재고 확인 필요

COMPLETED

  • 의미: 주문이 완료된 상태
  • 처리:
  • 재고 차감
  • 리워드 지급
  • 구매 이력 기록
  • 제약사항:
  • 결제 완료 필수
  • 재고 충분 확인
  • REQUESTED 상태에서만 변경 가능

CANCELLED

  • 의미: 주문이 취소된 상태
  • 처리:
  • 재고 복구
  • 결제 취소
  • 제약사항:
  • REQUESTED 상태에서만 취소 가능
  • 리워드 미지급 상태 확인

상태 변경 권한

상태 변경 필요 권한 비고
REQUESTED → COMPLETED USER, ADMIN 결제 완료 시
REQUESTED → CANCELLED USER, ADMIN 취소 요청 시
COMPLETED → CANCELLED ADMIN 특수 상황만

상태별 후속 처리

COMPLETED 처리

  1. 재고 관리
  2. 상품 재고 차감
  3. 재고 부족 시 오류 처리

  4. 리워드 처리

  5. 추천인 확인
  6. 리워드 금액 계산
  7. 단계별 리워드 지급

  8. 알림 처리

  9. 구매자에게 완료 알림
  10. 추천인에게 리워드 알림

CANCELLED 처리

  1. 재고 관리
  2. 차감된 재고 복구
  3. 재고 이력 기록

  4. 결제 처리

  5. 결제 취소 요청
  6. 취소 이력 기록

  7. 알림 처리

  8. 구매자에게 취소 알림
  9. 관리자에게 취소 알림

상태 변경 API

상태 변경 요청

POST /api/v1/orders/{id}/status

요청 데이터

{
    "status": "COMPLETED"
}

응답

{
    "_id": "507f1f77bcf86cd799439011",
    "status": "COMPLETED",
    "updatedAt": "2024-02-19T02:08:44.285Z"
}

주의사항

  1. 상태 변경 검증
  2. 현재 상태 확인
  3. 변경 가능 여부 확인
  4. 필요 권한 확인

  5. 동시성 처리

  6. 재고 업데이트 락
  7. 리워드 지급 락
  8. 트랜잭션 처리

  9. 오류 처리

  10. 재고 부족
  11. 결제 실패
  12. 리워드 지급 실패

  13. 로깅

  14. 상태 변경 이력
  15. 오류 상황
  16. 처리 시간