deep-risk/backend/app/schemas/order.py
2025-12-14 20:08:27 +08:00

79 lines
2.8 KiB
Python

"""
电商订单相关Pydantic模型
"""
from datetime import datetime, date
from typing import Optional, List
from pydantic import BaseModel, Field
class OrderBase(BaseModel):
"""电商订单基础模型"""
platform_order_no: str = Field(..., description="平台订单号")
ecommerce_platform: str = Field(..., description="电商平台")
streamer_id: str = Field(..., description="主播ID")
streamer_name: str = Field(..., description="主播姓名")
product_id: str = Field(..., description="商品ID")
product_name: str = Field(..., description="商品名称")
quantity: int = Field(..., description="购买数量")
original_price: float = Field(..., description="原价")
sale_price: float = Field(..., description="售价")
total_amount: float = Field(..., description="总金额")
actual_payment: float = Field(..., description="实付金额")
commission_ratio: float = Field(..., description="佣金比例")
commission_amount: float = Field(..., description="佣金金额")
streamer_commission: float = Field(..., description="主播佣金")
buyer_id: str = Field(..., description="买家ID")
order_time: datetime = Field(..., description="下单时间")
settlement_time: Optional[datetime] = Field(None, description="结算时间")
order_status: str = Field(..., description="订单状态")
is_commission_settled: bool = Field(..., description="是否已结算佣金")
province: Optional[str] = Field(None, description="省份")
city: Optional[str] = Field(None, description="城市")
class OrderCreate(OrderBase):
"""创建电商订单"""
pass
class OrderUpdate(BaseModel):
"""更新电商订单"""
platform_order_no: Optional[str] = None
ecommerce_platform: Optional[str] = None
streamer_id: Optional[str] = None
streamer_name: Optional[str] = None
product_id: Optional[str] = None
product_name: Optional[str] = None
quantity: Optional[int] = None
original_price: Optional[float] = None
sale_price: Optional[float] = None
total_amount: Optional[float] = None
actual_payment: Optional[float] = None
commission_ratio: Optional[float] = None
commission_amount: Optional[float] = None
streamer_commission: Optional[float] = None
buyer_id: Optional[str] = None
order_time: Optional[datetime] = None
settlement_time: Optional[datetime] = None
order_status: Optional[str] = None
is_commission_settled: Optional[bool] = None
province: Optional[str] = None
city: Optional[str] = None
class OrderResponse(OrderBase):
"""电商订单响应模型"""
id: int
order_id: str
class Config:
from_attributes = True
class OrderListResponse(BaseModel):
"""电商订单列表响应模型"""
records: List[OrderResponse]
total: int
page: int
size: int