""" 佣金结算单相关Pydantic模型 """ from datetime import date, datetime from typing import Optional, List from pydantic import BaseModel, Field class SettlementBase(BaseModel): """佣金结算单基础模型""" settlement_no: str = Field(..., description="结算单号") streamer_id: str = Field(..., description="主播ID") streamer_name: str = Field(..., description="主播姓名") streamer_entity_type: str = Field(..., description="主播主体类型") settlement_period: str = Field(..., description="结算周期(YYYY-MM)") settlement_start_date: date = Field(..., description="结算开始日期") settlement_end_date: date = Field(..., description="结算结束日期") order_count: int = Field(..., description="订单数量") total_sales: float = Field(..., description="总销售额") total_commission: float = Field(..., description="总佣金") platform_service_fee: float = Field(..., description="平台服务费") actual_settlement_amount: float = Field(..., description="实际结算金额") tax_withholding: float = Field(..., description="代扣代缴税费") payment_method: str = Field(..., description="付款方式") payment_account_no: str = Field(..., description="付款账号") payment_account_name: str = Field(..., description="付款账户名") payment_time: Optional[datetime] = Field(None, description="付款时间") payment_status: str = Field(..., description="付款状态") settlement_status: str = Field(..., description="结算状态") remark: Optional[str] = Field(None, description="备注") class SettlementCreate(SettlementBase): """创建佣金结算单""" pass class SettlementUpdate(BaseModel): """更新佣金结算单""" settlement_no: Optional[str] = None streamer_id: Optional[str] = None streamer_name: Optional[str] = None streamer_entity_type: Optional[str] = None settlement_period: Optional[str] = None settlement_start_date: Optional[date] = None settlement_end_date: Optional[date] = None order_count: Optional[int] = None total_sales: Optional[float] = None total_commission: Optional[float] = None platform_service_fee: Optional[float] = None actual_settlement_amount: Optional[float] = None tax_withholding: Optional[float] = None payment_method: Optional[str] = None payment_account_no: Optional[str] = None payment_account_name: Optional[str] = None payment_time: Optional[datetime] = None payment_status: Optional[str] = None settlement_status: Optional[str] = None remark: Optional[str] = None class SettlementResponse(SettlementBase): """佣金结算单响应模型""" id: int settlement_id: str class Config: from_attributes = True class SettlementListResponse(BaseModel): """佣金结算单列表响应模型""" records: List[SettlementResponse] total: int page: int size: int