from iti.applications.common.utils.schema import BaseSchema, Pagination from iti.applications.common.enums import StatusEnum from apiflask import fields from marshmallow_dataclass import dataclass from dataclasses import field from datetime import datetime from typing import ClassVar @dataclass(base_schema=BaseSchema) class SysDeptQuery(Pagination): """ 部门查询请求 """ name: str = field( metadata={ "required": False, "metadata": {"example": "部门名称", "description": "部门名称"}, }, default=None, ) parent_id: str = field( metadata={ "required": False, "data_key": "parentId", "metadata": {"example": "0", "description": "父部门ID"}, }, default=None, ) leader_id: str = field( metadata={ "required": False, "data_key": "leaderId", "metadata": {"example": "0", "description": "负责人ID"}, }, default=None, ) status: StatusEnum = field( metadata={ "required": False, "by_value": True, "metadata": {"example": "enabled", "description": "状态"}, }, default=StatusEnum.ENABLED, ) startTime: datetime = field( metadata={ "required": False, "metadata": {"example": "2025-01-01 00:00:00", "description": "开始时间"}, }, default=None, ) endTime: datetime = field( metadata={ "required": False, "metadata": {"example": "2025-01-01 23:59:59", "description": "结束时间"}, }, default=None, ) Schema: ClassVar[BaseSchema] = BaseSchema # For the type check class SysDeptCreateRequest(BaseSchema): """ 创建部门请求 """ name = fields.String( required=True, metadata={"example": "部门名称", "description": "部门名称"} ) parent_id = fields.String( data_key="parentId", required=False, metadata={"example": "0", "description": "父部门ID"}, load_default=None, ) desc = fields.String( required=False, metadata={"example": "部门描述", "description": "部门描述"}, load_default=None, ) sort = fields.Integer( required=False, metadata={"example": 0, "description": "排序"}, load_default=0 ) leader_id = fields.String( data_key="leaderId", required=False, metadata={"example": "0", "description": "负责人ID"}, load_default=None, ) status = fields.Enum( StatusEnum, required=False, by_value=True, metadata={"example": "enabled", "description": "状态"}, load_default=StatusEnum.ENABLED, ) class SysDeptUpdateRequest(BaseSchema): """ 更新部门请求 """ name = fields.String( required=False, metadata={"example": "部门名称", "description": "部门名称"}, load_default=None, ) parent_id = fields.String( data_key="parentId", required=False, metadata={"example": "0", "description": "父部门ID"}, load_default=None, ) desc = fields.String( required=False, metadata={"example": "部门描述", "description": "部门描述"}, load_default=None, ) sort = fields.Integer( required=False, metadata={"example": 0, "description": "排序"}, load_default=None, ) leader_id = fields.String( data_key="leaderId", required=False, metadata={"example": "0", "description": "负责人ID"}, load_default=None, ) status = fields.Enum( StatusEnum, required=False, by_value=True, metadata={"example": "enabled", "description": "状态"}, load_default=None, )