57 lines
1.6 KiB
Python
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
|