주문 API
주문 상태 관리
상태 정의
OrderStatus
- REQUESTED: 주문 요청됨
- COMPLETED: 주문 완료
- CANCELLED: 주문 취소
상태 변경 API
POST /api/v1/orders/{id}/status
권한
- JWT 인증 필요
- Bearer 토큰 사용
요청
{
"status": "COMPLETED"
}
상태값
| 상태 | 설명 | 후속 처리 |
|---|---|---|
| REQUESTED | 주문이 요청된 초기 상태 | - |
| COMPLETED | 주문이 완료된 상태 | 리워드 지급 처리 |
| CANCELLED | 주문이 취소된 상태 | 재고 복구 |
응답
{
"_id": "507f1f77bcf86cd799439011",
"status": "COMPLETED",
"updatedAt": "2024-02-19T02:08:44.285Z"
}
오류 응답
잘못된 상태값
{
"statusCode": 400,
"message": "유효하지 않은 주문 상태입니다.",
"error": "Bad Request"
}
주문을 찾을 수 없음
{
"statusCode": 404,
"message": "주문을 찾을 수 없습니다.",
"error": "Not Found"
}
상태 변경 프로세스
- 상태 변경 요청
- 주문 ID와 변경할 상태 전달
-
상태값 유효성 검증
-
주문 확인
- 주문 존재 여부 확인
- 현재 상태 확인
-
상태 변경 가능 여부 검증
-
상태 업데이트
- 주문 상태 변경
- 변경 시간 기록
-
변경 이력 저장
-
후속 처리
- COMPLETED: 리워드 지급 처리
- CANCELLED: 재고 복구 처리
- 필요한 알림 발송
참고사항
- 상태 변경 순서
- REQUESTED → COMPLETED
- REQUESTED → CANCELLED
- 완료된 주문은 취소 불가
-
취소된 주문은 완료 불가
-
상태별 제약사항
- COMPLETED
- 재고 확인 필요
- 결제 완료 확인 필요
-
CANCELLED
- 리워드 미지급 상태 확인
- 결제 취소 가능 여부 확인
-
보안
- 인증된 요청만 허용
- 권한에 따른 상태 변경 제한
- 상태 변경 이력 추적
도메인별 주문 조회
전체 주문 내역 조회
GET /api/v1/orders/{domain}
권한
- JWT 인증 필요
- Bearer 토큰 사용
- SUPER_ADMIN 또는 DOMAIN_ADMIN 권한 필요
요청 파라미터
- domain: 도메인 이름 (필수)
- status: 주문 상태로 필터링 (선택)
- REQUESTED
- COMPLETED
- CANCELLED
예시 요청
GET /api/v1/orders/example.com?status=COMPLETED
응답
[
{
"_id": "507f1f77bcf86cd799439011",
"productId": {
"name": "Premium Package",
"price": 200,
"snpQty": 100
},
"userId": "507f1f77bcf86cd799439012",
"status": "COMPLETED",
"price": 200,
"totalAmount": 200,
"quantity": 1,
"createdAt": "2024-02-19T02:08:44.285Z"
}
]
오류 응답
도메인을 찾을 수 없음
{
"statusCode": 404,
"message": "도메인을 찾을 수 없습니다.",
"error": "Not Found"
}
권한 없음
{
"statusCode": 403,
"message": "이 작업을 수행할 권한이 없습니다.",
"error": "Forbidden"
}
도메인 주문 통계
GET /api/v1/orders/domain/{domain}/stats
권한
- JWT 인증 필요
- Bearer 토큰 사용
- SUPER_ADMIN 또는 해당 도메인의 DOMAIN_ADMIN 권한 필요
응답
{
"totalOrders": 100,
"totalRevenue": 20000,
"ordersByStatus": {
"REQUESTED": 20,
"COMPLETED": 75,
"CANCELLED": 5
}
}
필터링 및 정렬
상태별 필터링
- 특정 상태의 주문만 조회 가능
- 여러 상태 동시 필터링 불가
- 상태값이 없으면 모든 상태 조회
정렬
- 기본적으로 생성일 기준 내림차순 정렬
- 최신 주문이 먼저 표시됨
참고사항
- 권한 관리
- 도메인 관리자는 자신의 도메인 주문만 조회 가능
-
슈퍼 관리자는 모든 도메인 주문 조회 가능
-
데이터 제한
- 한 번에 조회되는 주문 수 제한
-
페이지네이션 구현 예정
-
성능 최적화
- 인덱스 사용으로 빠른 조회
- 필요한 필드만 선택적 조회
-
캐싱 적용 고려
-
보안
- 도메인 간 데이터 격리
- 권한 체크 철저
- 민감 정보 필터링