base_schema.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. from pydantic import BaseModel, ConfigDict, Field
  2. from app.core.validator import DateTimeStr
  3. class CommonSchema(BaseModel):
  4. """通用信息模型"""
  5. model_config = ConfigDict(from_attributes=True)
  6. id: int = Field(description="编号ID")
  7. name: str = Field(description="名称")
  8. class BaseSchema(BaseModel):
  9. """通用输出模型,包含基础字段和审计字段"""
  10. model_config = ConfigDict(from_attributes=True)
  11. id: int | None = Field(default=None, description="主键ID")
  12. uuid: str | None = Field(default=None, description="UUID")
  13. status: str = Field(default="0", description="状态")
  14. description: str | None = Field(default=None, description="描述")
  15. created_time: DateTimeStr | None = Field(default=None, description="创建时间")
  16. updated_time: DateTimeStr | None = Field(default=None, description="更新时间")
  17. class UserBySchema(BaseModel):
  18. """通用创建模型,包含基础字段和审计字段"""
  19. model_config = ConfigDict(from_attributes=True)
  20. created_id: int | None = Field(default=None, description="创建人ID")
  21. created_by: CommonSchema | None = Field(default=None, description="创建人信息")
  22. updated_id: int | None = Field(default=None, description="更新人ID")
  23. updated_by: CommonSchema | None = Field(default=None, description="更新人信息")
  24. class TenantBySchema(BaseModel):
  25. """租户嵌套出参(不再使用扁平 tenant_id / tenant_name / tenant_code)"""
  26. model_config = ConfigDict(from_attributes=True)
  27. tenant_id: int | None = Field(default=None, description="租户ID")
  28. tenant: CommonSchema | None = Field(default=None, description="租户信息")
  29. class BatchSetAvailable(BaseModel):
  30. """批量设置可用状态的请求模型"""
  31. ids: list[int] = Field(default_factory=list, description="ID列表")
  32. status: str = Field(default="0", description="是否可用")
  33. class UploadResponseSchema(BaseModel):
  34. """上传响应模型"""
  35. model_config = ConfigDict(from_attributes=True)
  36. file_path: str | None = Field(default=None, description="新文件映射路径")
  37. file_name: str | None = Field(default=None, description="新文件名称")
  38. origin_name: str | None = Field(default=None, description="原文件名称")
  39. file_url: str | None = Field(default=None, description="新文件访问地址")
  40. class DownloadFileSchema(BaseModel):
  41. """下载文件模型"""
  42. file_path: str = Field(..., description="新文件映射路径")
  43. file_name: str = Field(..., description="新文件名称")