콘텐츠로 이동

주문 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"
}

상태 변경 프로세스

  1. 상태 변경 요청
  2. 주문 ID와 변경할 상태 전달
  3. 상태값 유효성 검증

  4. 주문 확인

  5. 주문 존재 여부 확인
  6. 현재 상태 확인
  7. 상태 변경 가능 여부 검증

  8. 상태 업데이트

  9. 주문 상태 변경
  10. 변경 시간 기록
  11. 변경 이력 저장

  12. 후속 처리

  13. COMPLETED: 리워드 지급 처리
  14. CANCELLED: 재고 복구 처리
  15. 필요한 알림 발송

참고사항

  1. 상태 변경 순서
  2. REQUESTED → COMPLETED
  3. REQUESTED → CANCELLED
  4. 완료된 주문은 취소 불가
  5. 취소된 주문은 완료 불가

  6. 상태별 제약사항

  7. COMPLETED
    • 재고 확인 필요
    • 결제 완료 확인 필요
  8. CANCELLED

    • 리워드 미지급 상태 확인
    • 결제 취소 가능 여부 확인
  9. 보안

  10. 인증된 요청만 허용
  11. 권한에 따른 상태 변경 제한
  12. 상태 변경 이력 추적

도메인별 주문 조회

전체 주문 내역 조회

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
    }
}

필터링 및 정렬

상태별 필터링

  • 특정 상태의 주문만 조회 가능
  • 여러 상태 동시 필터링 불가
  • 상태값이 없으면 모든 상태 조회

정렬

  • 기본적으로 생성일 기준 내림차순 정렬
  • 최신 주문이 먼저 표시됨

참고사항

  1. 권한 관리
  2. 도메인 관리자는 자신의 도메인 주문만 조회 가능
  3. 슈퍼 관리자는 모든 도메인 주문 조회 가능

  4. 데이터 제한

  5. 한 번에 조회되는 주문 수 제한
  6. 페이지네이션 구현 예정

  7. 성능 최적화

  8. 인덱스 사용으로 빠른 조회
  9. 필요한 필드만 선택적 조회
  10. 캐싱 적용 고려

  11. 보안

  12. 도메인 간 데이터 격리
  13. 권한 체크 철저
  14. 민감 정보 필터링