# _*_ coding : UTF-8 _*_ # @Time : 2025/01/19 02:19 # @UpdateTime : 2025/01/19 02:19 # @Author : sonder # @File : department.py # @Software : PyCharm # @Comment : 本程序 from datetime import datetime from typing import Optional, List from pydantic import BaseModel, Field from schemas.common import BaseResponse, ListQueryResult class DepartmentInfo(BaseModel): """ 部门表基础模型。 """ id: str = Field(..., description="主键") create_by: str = Field(default="", description="创建者") create_time: Optional[datetime] = Field(default=None, description="创建时间") update_by: str = Field(default="", description="更新者") update_time: Optional[datetime] = Field(default=None, description="更新时间") name: str = Field(..., max_length=100, description="部门名称") parent_id: Optional[str] = Field(default=None, max_length=36, description="父部门ID") sort: int = Field(default=0, description="排序权重(0最高)") phone: Optional[str] = Field(default=None, max_length=30, description="部门电话") principal: str = Field(..., max_length=64, description="部门负责人") email: Optional[str] = Field(default=None, max_length=128, description="部门邮箱") remark: Optional[str] = Field(default=None, max_length=255, description="备注信息") status: Optional[int] = Field(default=None, description="状态") class Config: json_schema_extra = { "example": { "id": "550e8400-e29b-41d4-a716-446655440000", "create_by": "admin", "create_time": "2023-10-01T12:00:00", "update_by": "admin", "update_time": "2023-10-01T12:00:00", "name": "研发部", "parent_id": "", "sort": 0, "phone": "1234567890", "principal": "张三", "email": "dev@example.com", "remark": "研发部门", "status": 1 } } class GetDepartmentInfoResponse(BaseResponse): """ 获取部门信息响应模型。 """ data: DepartmentInfo = Field(default=None, description="响应数据") class AddDepartmentParams(BaseModel): """ 添加部门参数模型。 """ name: str = Field(..., max_length=100, description="部门名称") parent_id: Optional[str] = Field(default=None, max_length=36, description="父部门ID") sort: int = Field(default=0, description="排序权重(0最高)") phone: Optional[str] = Field(default=None, max_length=30, description="部门电话") principal: str = Field(..., max_length=64, description="部门负责人") email: Optional[str] = Field(default=None, max_length=128, description="部门邮箱") remark: Optional[str] = Field(default=None, max_length=255, description="备注信息") status: Optional[int] = Field(default=None, description="状态") class Config: json_schema_extra = { "example": { "name": "研发部", "parent_id": "", "sort": 0, "phone": "1234567890", "principal": "张三", "email": "dev@example.com", "remark": "研发部门", "status": 1 } } class DeleteDepartmentListParams(BaseModel): """ 删除部门参数模型。 """ ids: List[str] = Field(..., description="部门ID列表") class GetDepartmentListResult(ListQueryResult): """ 获取部门列表结果模型。 """ result: List[DepartmentInfo] = Field(default=[], description="部门列表") class GetDepartmentListResponse(BaseResponse): """ 获取部门列表响应模型。 """ data: GetDepartmentListResult = Field(default=None, description="响应数据") class AddDepartmentRoleParams(BaseModel): """ 添加部门角色参数模型。 """ department_id: str = Field(..., max_length=36, description="部门ID") role_id: str = Field(..., max_length=36, description="角色ID") class Config: json_schema_extra = { "example": { "department_id": "550e8400-e29b-41d4-a716-446655440000", "role_id": "550e8400-e29b-41d4-a716-446655440000" } } class DepartmentRoleInfo(BaseModel): """ 部门角色信息模型。 """ id: str = Field(..., max_length=36, description="主键ID") department_id: str = Field(..., max_length=36, description="部门ID") department_name: str = Field(..., max_length=100, description="部门名称") department_phone: str = Field(..., max_length=30, description="部门电话") department_principal: str = Field(..., max_length=64, description="部门负责人") department_email: str = Field(..., max_length=128, description="部门邮箱") role_name: str = Field(..., max_length=100, description="角色名称") role_code: str = Field(..., max_length=100, description="角色编码") role_id: str = Field(..., max_length=36, description="角色ID") create_time: datetime = Field(..., description="创建时间") update_time: datetime = Field(..., description="更新时间") class Config: json_schema_extra = { "example": { "id": "550e8400-e29b-41d4-a716-446655440000", "department_id": "550e8400-e29b-41d4-a716-446655440000", "department_name": "研发部", "department_phone": "1234567890", "department_principal": "张三", "department_email": "dev@example.com", "role_name": "管理员", "role_code": "admin", "role_id": "550e8400-e29b-41d4-a716-446655440000", "create_time": "2023-10-01T12:00:00", "update_time": "2023-10-01T12:00:00" } } class GetDepartmentRoleInfoResponse(BaseResponse): """ 获取部门角色信息响应模型。 """ data: DepartmentRoleInfo = Field(default=None, description="响应数据") class GetDepartmentRoleListResult(ListQueryResult): """ 获取部门角色列表结果模型。 """ result: List[DepartmentRoleInfo] = Field(default=[], description="部门角色列表") class GetDepartmentRoleListResponse(BaseResponse): """ 获取部门角色列表响应模型。 """ data: GetDepartmentRoleListResult = Field(default=None, description="响应数据")