| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- from pydantic import BaseModel, Field
- from typing import Optional, List, Any
- from datetime import datetime
- class ContractItemResponse(BaseModel):
- """合同项响应模型(contract_url 中的单个合同项)"""
- contract_url: str = Field(description="合同模版链接")
- file_name: str = Field(description="签署的合同的文件名称")
- file_id: str = Field(description="生成的文件ID")
- status: int = Field(description="签署状态 0 未签署 1 已签署")
- sign_flow_id: str = Field(description="签署流程ID")
- sign_url: str = Field(default="", description="e签宝生成的签署页面")
- signing_time: str = Field(default="", description="签署合同的时间")
- effective_time: str = Field(default="", description="合同生效的时间")
- expiry_time: str = Field(default="", description="合同失效的时间")
- contract_download_url: str = Field(default="", description="合同签署完成后下载文件的链接")
- is_master: int = Field(description="是否是入驻店铺的协议合同 是 1 否 0")
- class ContractStoreResponse(BaseModel):
- """合同记录响应模型"""
- id: int = Field(description="主键")
- store_id: int = Field(description="店铺id")
- store_name: str = Field(description="商家店铺名称")
- business_segment: str = Field(description="经营板块")
- merchant_name: str = Field(description="商家姓名")
- contact_phone: str = Field(description="联系电话")
- signing_status: str = Field(description="签署状态(已签署,未签署,已到期)")
- contract_url: str = Field(description="合同URL(JSON字符串)")
- ord_id: str = Field(description="入驻商家的社会同一信用代码")
- signing_time: Optional[datetime] = Field(default=None, description="签署时间")
- effective_time: Optional[datetime] = Field(default=None, description="生效时间")
- expiry_time: Optional[datetime] = Field(default=None, description="到期时间")
- created_time: Optional[datetime] = Field(default=None, description="创建时间")
- updated_time: Optional[datetime] = Field(default=None, description="更新时间")
-
- class Config:
- from_attributes = True
- class ContractStoreDetailResponse(BaseModel):
- """合同记录详情响应模型(包含解析后的 contract_url)"""
- id: int = Field(description="主键")
- store_id: int = Field(description="店铺id")
- store_name: str = Field(description="商家店铺名称")
- business_segment: str = Field(description="经营板块")
- merchant_name: str = Field(description="商家姓名")
- contact_phone: str = Field(description="联系电话")
- signing_status: str = Field(description="签署状态(已签署,未签署,已到期)")
- contract_items: List[ContractItemResponse] = Field(description="合同项列表(解析后的 contract_url)")
- ord_id: str = Field(description="入驻商家的社会同一信用代码")
- signing_time: Optional[datetime] = Field(default=None, description="签署时间")
- effective_time: Optional[datetime] = Field(default=None, description="生效时间")
- expiry_time: Optional[datetime] = Field(default=None, description="到期时间")
- created_time: Optional[datetime] = Field(default=None, description="创建时间")
- updated_time: Optional[datetime] = Field(default=None, description="更新时间")
- class TemplatesCreateResponse(BaseModel):
- """创建模板响应模型"""
- success: bool = Field(description="是否成功")
- message: str = Field(description="响应消息")
- sign_flow_id: Optional[str] = Field(default=None, description="签署流程ID")
- file_id: Optional[str] = Field(default=None, description="文件ID")
- contract_url: Optional[str] = Field(default=None, description="合同URL")
- class SignUrlResponse(BaseModel):
- """获取签署URL响应模型"""
- success: bool = Field(description="是否成功")
- data: dict = Field(description="响应数据", default_factory=dict)
-
- class Config:
- json_schema_extra = {
- "example": {
- "success": True,
- "data": {
- "url": "https://example.com/sign"
- }
- }
- }
- class ErrorResponse(BaseModel):
- """错误响应模型"""
- success: bool = Field(default=False, description="是否成功")
- message: str = Field(description="错误消息")
- raw: Optional[Any] = Field(default=None, description="原始错误数据")
- class SuccessResponse(BaseModel):
- """通用成功响应模型"""
- code: str = Field(description="响应代码")
- msg: str = Field(description="响应消息")
- class PaginatedResponse(BaseModel):
- """分页响应模型"""
- items: List[ContractStoreResponse] = Field(description="数据列表")
- total: int = Field(description="总记录数")
- page: int = Field(description="当前页码")
- page_size: int = Field(description="每页条数")
- total_pages: int = Field(description="总页数")
- class ModuleStatusResponse(BaseModel):
- """模块状态响应模型"""
- module: str = Field(description="模块名称")
- status: str = Field(description="状态")
|