""" 平台充值记录相关Pydantic模型 """ from datetime import datetime, date from typing import Optional from pydantic import BaseModel, Field class PlatformRechargeBase(BaseModel): """平台充值基础模型""" user_id: str = Field(..., description="用户ID") user_name: Optional[str] = Field(None, description="用户昵称") user_phone: Optional[str] = Field(None, description="用户手机号") recharge_amount: float = Field(..., description="充值金额") recharge_time: Optional[datetime] = Field(None, description="充值时间") payment_method: str = Field(..., description="支付方式") payment_channel: Optional[str] = Field(None, description="支付渠道") transaction_no: Optional[str] = Field(None, description="交易流水号") platform_order_no: Optional[str] = Field(None, description="平台订单号") currency_type: Optional[str] = Field(None, description="币种") exchange_rate: Optional[float] = Field(None, description="汇率") actual_amount_cny: Optional[float] = Field(None, description="折算人民币金额") recharge_type: Optional[str] = Field(None, description="充值类型") bonus_coins: Optional[float] = Field(None, description="赠送虚拟币") total_coins: Optional[float] = Field(None, description="到账虚拟币") is_first_recharge: Optional[bool] = Field(None, description="是否首充") ip_address: Optional[str] = Field(None, description="充值IP地址") device_type: Optional[str] = Field(None, description="设备类型") device_id: Optional[str] = Field(None, description="设备ID") province: Optional[str] = Field(None, description="省份") city: Optional[str] = Field(None, description="城市") status: Optional[str] = Field(None, description="充值状态") refund_amount: Optional[float] = Field(None, description="退款金额") refund_time: Optional[datetime] = Field(None, description="退款时间") withdrawal_status: Optional[str] = Field(None, description="提现状态") withdrawn_amount: Optional[float] = Field(None, description="已提现金额") class PlatformRechargeCreate(PlatformRechargeBase): """创建平台充值记录""" pass class PlatformRechargeUpdate(BaseModel): """更新平台充值记录""" user_name: Optional[str] = None user_phone: Optional[str] = None recharge_amount: Optional[float] = None recharge_time: Optional[datetime] = None payment_method: Optional[str] = None payment_channel: Optional[str] = None transaction_no: Optional[str] = None platform_order_no: Optional[str] = None currency_type: Optional[str] = None exchange_rate: Optional[float] = None actual_amount_cny: Optional[float] = None recharge_type: Optional[str] = None bonus_coins: Optional[float] = None total_coins: Optional[float] = None is_first_recharge: Optional[bool] = None ip_address: Optional[str] = None device_type: Optional[str] = None device_id: Optional[str] = None province: Optional[str] = None city: Optional[str] = None status: Optional[str] = None refund_amount: Optional[float] = None refund_time: Optional[datetime] = None withdrawal_status: Optional[str] = None withdrawn_amount: Optional[float] = None class PlatformRechargeResponse(PlatformRechargeBase): """平台充值记录响应模型""" id: int recharge_id: str created_at: datetime updated_at: Optional[datetime] = None class Config: from_attributes = True class PlatformRechargeListResponse(BaseModel): """平台充值记录列表响应模型""" records: list[PlatformRechargeResponse] total: int page: int size: int