schema.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. from datetime import datetime
  2. from typing import Optional
  3. from pydantic import BaseModel, ConfigDict, Field
  4. class DepartmentCreateSchema(BaseModel):
  5. """创建部门请求"""
  6. name: str = Field(max_length=128, description="部门名称")
  7. code: Optional[str] = Field(default=None, max_length=64, description="部门编码")
  8. parent_id: Optional[str] = Field(default=None, description="上级部门ID")
  9. leader_employee_id: Optional[str] = Field(default=None, description="部门负责人员工ID")
  10. sort_order: Optional[int] = Field(default=0, description="排序值(越大越靠前)")
  11. class DepartmentUpdateSchema(BaseModel):
  12. """更新部门请求"""
  13. name: Optional[str] = Field(default=None, max_length=128, description="部门名称")
  14. code: Optional[str] = Field(default=None, max_length=64, description="部门编码")
  15. parent_id: Optional[str] = Field(default=None, description="上级部门ID")
  16. leader_employee_id: Optional[str] = Field(default=None, description="部门负责人员工ID")
  17. sort_order: Optional[int] = Field(default=None, description="排序值(越大越靠前)")
  18. status: Optional[str] = Field(default=None, description="状态")
  19. class DepartmentOutSchema(BaseModel):
  20. """部门响应模型"""
  21. model_config = ConfigDict(from_attributes=True)
  22. id: int = Field(description="主键ID")
  23. department_id: Optional[str] = Field(default=None, description="部门ID(业务主键)")
  24. enterprise_id: Optional[str] = Field(default=None, description="企业ID")
  25. name: str = Field(description="部门名称")
  26. code: Optional[str] = Field(default=None, description="部门编码")
  27. parent_id: Optional[str] = Field(default=None, description="上级部门ID")
  28. leader_employee_id: Optional[str] = Field(default=None, description="部门负责人员工ID")
  29. sort_order: int = Field(description="排序值")
  30. status: str = Field(description="状态")
  31. created_time: Optional[datetime] = Field(default=None, description="创建时间")
  32. updated_time: Optional[datetime] = Field(default=None, description="更新时间")
  33. class DepartmentTreeSchema(BaseModel):
  34. """部门树形结构响应"""
  35. model_config = ConfigDict(from_attributes=True)
  36. department_id: Optional[str] = Field(default=None, description="部门ID")
  37. name: str = Field(description="部门名称")
  38. code: Optional[str] = Field(default=None, description="部门编码")
  39. parent_id: Optional[str] = Field(default=None, description="上级部门ID")
  40. leader_employee_id: Optional[str] = Field(default=None, description="部门负责人员工ID")
  41. sort_order: int = Field(description="排序值")
  42. status: str = Field(description="状态")
  43. children: list["DepartmentTreeSchema"] = Field(default_factory=list, description="子部门")
  44. class DepartmentMoveSchema(BaseModel):
  45. """移动部门请求"""
  46. parent_id: Optional[str] = Field(default=None, description="新的上级部门ID")