from typing import Optional from pydantic import Field from domain.dtos.base_dto import DtoBase class SysDeptBaseDto(DtoBase): dept_name: str = Field(..., title="部门名称", max_length=30) parent_id: int = Field(0, title="父部门ID", ge=0) status: int = Field(0, title="状态", ge=0, le=1) leader: Optional[str] = Field(None, title="负责人", max_length=20) phone: Optional[str] = Field(None, title="联系电话", max_length=11) email: Optional[str] = Field(None, title="邮箱", max_length=50) class SysDeptDto(SysDeptBaseDto): id: int = Field(..., title="部门ID", gt=0) class SysDeptCreateDto(SysDeptBaseDto): dept_name: str = Field(..., title="部门名称", max_length=30) class SysDeptUpdateDto(SysDeptBaseDto): id: int = Field(..., title="部门ID", gt=0) parent_id: Optional[int] = Field(None, title="父部门ID", ge=0)