주문 시스템
주문 상태 관리
상태 흐름도
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 처리
- 재고 관리
- 상품 재고 차감
-
재고 부족 시 오류 처리
-
리워드 처리
- 추천인 확인
- 리워드 금액 계산
-
단계별 리워드 지급
-
알림 처리
- 구매자에게 완료 알림
- 추천인에게 리워드 알림
CANCELLED 처리
- 재고 관리
- 차감된 재고 복구
-
재고 이력 기록
-
결제 처리
- 결제 취소 요청
-
취소 이력 기록
-
알림 처리
- 구매자에게 취소 알림
- 관리자에게 취소 알림
상태 변경 API
상태 변경 요청
POST /api/v1/orders/{id}/status
요청 데이터
{
"status": "COMPLETED"
}
응답
{
"_id": "507f1f77bcf86cd799439011",
"status": "COMPLETED",
"updatedAt": "2024-02-19T02:08:44.285Z"
}
주의사항
- 상태 변경 검증
- 현재 상태 확인
- 변경 가능 여부 확인
-
필요 권한 확인
-
동시성 처리
- 재고 업데이트 락
- 리워드 지급 락
-
트랜잭션 처리
-
오류 처리
- 재고 부족
- 결제 실패
-
리워드 지급 실패
-
로깅
- 상태 변경 이력
- 오류 상황
- 처리 시간