from typing import Optional from pydantic import Field from domain.dtos.base_dto import DtoBase class SysUserBaseDto(DtoBase): nick_name: Optional[str] = Field(None, title="昵称", max_length=100) phone: Optional[str] = Field(None, title="手机号", max_length=20) email: Optional[str] = Field(None, title="邮箱", max_length=100) sex: Optional[int] = Field(0, title="性别", ge=0, le=2) class Config: from_attributes = True class SysUserDto(SysUserBaseDto): id: int = Field(..., title="用户ID", gt=0) username: str = Field(..., title="用户名", max_length=30) password: Optional[str] = Field(None, title="密码", max_length=100) is_lock: int = Field(0, title="是否锁定", ge=0, le=1) class SysUserCreateDto(SysUserBaseDto): username: str = Field(..., title="用户名", max_length=30) password: str = Field(..., title="密码", max_length=100) class SysUserUpdateDto(SysUserBaseDto): id: int = Field(..., title="用户ID", gt=0)