50 lines
2.3 KiB
Python
50 lines
2.3 KiB
Python
from typing import List, Optional, Dict
|
|
from pydantic import BaseModel, EmailStr, Field
|
|
from ..common.base import BaseResponseWithID
|
|
|
|
|
|
class UserListDetailItem(BaseResponseWithID):
|
|
"""
|
|
用户列表内明细模型
|
|
"""
|
|
id: Optional[str] = Field(default=None, description="唯一标识符")
|
|
username: Optional[str] = Field(None, description="用户名")
|
|
name: Optional[str] = Field(None, description="姓名")
|
|
phone: Optional[str] = Field(None, description="手机号")
|
|
phone_country: Optional[str] = Field(None, description="手机号国家前缀")
|
|
country_code: Optional[str] = Field(None, description="国家编码")
|
|
id_card: Optional[str] = Field(None, description="身份证号")
|
|
status: Optional[str] = Field(None, description="状态")
|
|
email: Optional[EmailStr] = Field(None, description="邮箱地址")
|
|
user_type: str = Field(..., description="用户类型")
|
|
last_login_at: Optional[str] = Field(None, description="最后登录时间")
|
|
updated_at: Optional[str] = Field(None, description="更新时间")
|
|
company_id: Optional[str] = Field(None, description="公司id")
|
|
company_name: Optional[str] = Field(None, description="公司名称")
|
|
created_at: Optional[str] = Field(None, description="创建时间")
|
|
approval_status: Optional[str] = Field(None, description="审批状态")
|
|
approval_time: Optional[str] = Field(None, description="审批通过时间")
|
|
last_login_ip: Optional[str] = Field(None, description="最后登录ip")
|
|
project_ids: Optional[List[str]] = Field([], description="权限内项目id")
|
|
contract_ids: Optional[List[str]] = Field([], description="权限内合同id")
|
|
apply_files: Optional[List[Dict]] = Field([],
|
|
examples=[
|
|
{"id": "file:001", "name": "文件1",
|
|
"url": "https://example.com/file1.pdf"}
|
|
],
|
|
description='申请文件'
|
|
)
|
|
|
|
|
|
class UserListResponse(BaseModel):
|
|
"""
|
|
用户列表响应模型
|
|
"""
|
|
|
|
page: int
|
|
page_size: int
|
|
total: int
|
|
list: List[UserListDetailItem]
|
|
|
|
|