table_game/backend/app/schemas/order_info.py
2025-03-10 08:35:19 +08:00

57 lines
1.6 KiB
Python

from pydantic import BaseModel, condecimal, conint, Field
from typing import Optional
from datetime import date, datetime
from decimal import Decimal
from typing import Literal
class OrderInfo(BaseModel):
order_id: int
user_id: Optional[int]
order_date: date
num_players: int
order_status: str
# 额外字段
payable_price: Optional[Decimal] = None
paid_price: Optional[Decimal] = None
payment_method: Optional[str] = None
start_datetime: Optional[datetime] = None
end_datetime: Optional[datetime] = None
discount_amount: Optional[Decimal] = None
used_points: Optional[int] = None
coupon_id: Optional[int] = None
game_process_time: Optional[int] = None
game_table_number: Optional[str] = None
user_name: Optional[str] = None
settlement_time: Optional[datetime] = None
class OrderListResponse(BaseModel):
orders: list[OrderInfo]
total: int
class OrderRangeQueryRequest(BaseModel):
token: str
start: int
end: int
order_status: Literal['pending', 'paid', 'in_progress', 'completed', 'cancelled']
# 订单状态包含:['待处理', '已支付', '进行中', '已完成', '已取消']
class OrderCompleteRequest(BaseModel):
token: str
end_datetime: datetime
class OrderSettleRequest(BaseModel):
token: str
used_points: int = Field(ge=0)
coupon_id: Optional[int] = None
class OrderDetailResponse(OrderInfo):
table_price: Decimal
game_price: Optional[Decimal] = None
class Config:
arbitrary_types_allowed = True
class OrderDetailRequest(BaseModel):
token: str
order_id: int