68 lines
2.4 KiB
Python
68 lines
2.4 KiB
Python
"""
|
|
分成协议相关Pydantic模型
|
|
"""
|
|
from datetime import date, datetime
|
|
from typing import Optional, List
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class ContractBase(BaseModel):
|
|
"""分成协议基础模型"""
|
|
contract_no: Optional[str] = Field(None, description="协议编号")
|
|
contract_type: str = Field(..., description="协议类型")
|
|
streamer_id: Optional[str] = Field(None, description="主播ID")
|
|
streamer_name: str = Field(..., description="主播姓名")
|
|
streamer_entity_type: Optional[str] = Field(None, description="主播主体类型")
|
|
platform_party: str = Field(..., description="平台方名称")
|
|
platform_credit_code: Optional[str] = Field(None, description="平台方统一社会信用代码")
|
|
revenue_type: str = Field(..., description="收入类型")
|
|
platform_ratio: float = Field(..., description="平台分成比例")
|
|
streamer_ratio: float = Field(..., description="主播分成比例")
|
|
settlement_cycle: str = Field(..., description="结算周期")
|
|
contract_start_date: date = Field(..., description="协议开始日期")
|
|
contract_end_date: date = Field(..., description="协议结束日期")
|
|
contract_status: Optional[str] = Field(None, description="协议状态")
|
|
remark: Optional[str] = Field(None, description="备注")
|
|
|
|
|
|
class ContractCreate(ContractBase):
|
|
"""创建分成协议"""
|
|
pass
|
|
|
|
|
|
class ContractUpdate(BaseModel):
|
|
"""更新分成协议"""
|
|
contract_no: Optional[str] = None
|
|
contract_type: Optional[str] = None
|
|
streamer_id: Optional[str] = None
|
|
streamer_name: Optional[str] = None
|
|
streamer_entity_type: Optional[str] = None
|
|
platform_party: Optional[str] = None
|
|
platform_credit_code: Optional[str] = None
|
|
revenue_type: Optional[str] = None
|
|
platform_ratio: Optional[float] = None
|
|
streamer_ratio: Optional[float] = None
|
|
settlement_cycle: Optional[str] = None
|
|
contract_start_date: Optional[date] = None
|
|
contract_end_date: Optional[date] = None
|
|
contract_status: Optional[str] = None
|
|
remark: Optional[str] = None
|
|
|
|
|
|
class ContractResponse(ContractBase):
|
|
"""分成协议响应模型"""
|
|
id: int
|
|
contract_id: str
|
|
created_at: Optional[str] = None
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class ContractListResponse(BaseModel):
|
|
"""分成协议列表响应模型"""
|
|
records: List[ContractResponse]
|
|
total: int
|
|
page: int
|
|
size: int
|