diff --git a/backend/app/admin/api/v1/sys/dept.py b/backend/app/admin/api/v1/sys/dept.py index ac6d291b..082b4885 100644 --- a/backend/app/admin/api/v1/sys/dept.py +++ b/backend/app/admin/api/v1/sys/dept.py @@ -1,10 +1,10 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -from typing import Annotated, Any +from typing import Annotated from fastapi import APIRouter, Depends, Path, Query, Request -from backend.app.admin.schema.dept import CreateDeptParam, GetDeptDetail, UpdateDeptParam +from backend.app.admin.schema.dept import CreateDeptParam, GetDeptDetail, GetDeptTree, UpdateDeptParam from backend.app.admin.service.dept_service import dept_service from backend.common.response.response_schema import ResponseModel, ResponseSchemaModel, response_base from backend.common.security.jwt import DependsJwtAuth @@ -27,7 +27,7 @@ async def get_dept_tree( leader: Annotated[str | None, Query(description='部门负责人')] = None, phone: Annotated[str | None, Query(description='联系电话')] = None, status: Annotated[int | None, Query(description='状态')] = None, -) -> ResponseSchemaModel[list[dict[str, Any]]]: +) -> ResponseSchemaModel[list[GetDeptTree]]: dept = await dept_service.get_tree(request=request, name=name, leader=leader, phone=phone, status=status) return response_base.success(data=dept) diff --git a/backend/app/admin/api/v1/sys/menu.py b/backend/app/admin/api/v1/sys/menu.py index 3b3d799d..6aed46de 100644 --- a/backend/app/admin/api/v1/sys/menu.py +++ b/backend/app/admin/api/v1/sys/menu.py @@ -4,7 +4,7 @@ from typing import Annotated, Any from fastapi import APIRouter, Depends, Path, Query, Request -from backend.app.admin.schema.menu import CreateMenuParam, GetMenuDetail, UpdateMenuParam +from backend.app.admin.schema.menu import CreateMenuParam, GetMenuDetail, GetMenuTree, UpdateMenuParam from backend.app.admin.service.menu_service import menu_service from backend.common.response.response_schema import ResponseModel, ResponseSchemaModel, response_base from backend.common.security.jwt import DependsJwtAuth @@ -30,7 +30,7 @@ async def get_menu(pk: Annotated[int, Path(description='菜单 ID')]) -> Respons async def get_menu_tree( title: Annotated[str | None, Query(description='菜单标题')] = None, status: Annotated[int | None, Query(description='状体')] = None, -) -> ResponseSchemaModel[list[dict[str, Any]]]: +) -> ResponseSchemaModel[list[GetMenuTree]]: menu = await menu_service.get_tree(title=title, status=status) return response_base.success(data=menu) diff --git a/backend/app/admin/api/v1/sys/role.py b/backend/app/admin/api/v1/sys/role.py index 3f3f2802..52eca783 100644 --- a/backend/app/admin/api/v1/sys/role.py +++ b/backend/app/admin/api/v1/sys/role.py @@ -1,9 +1,10 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -from typing import Annotated, Any +from typing import Annotated from fastapi import APIRouter, Depends, Path, Query +from backend.app.admin.schema.menu import GetMenuTree from backend.app.admin.schema.role import ( CreateRoleParam, DeleteRoleParam, @@ -33,7 +34,7 @@ async def get_all_roles() -> ResponseSchemaModel[list[GetRoleDetail]]: @router.get('/{pk}/menus', summary='获取角色菜单树', dependencies=[DependsJwtAuth]) async def get_role_menu_tree( pk: Annotated[int, Path(description='角色 ID')], -) -> ResponseSchemaModel[list[dict[str, Any] | None]]: +) -> ResponseSchemaModel[list[GetMenuTree] | None]: menu = await role_service.get_menu_tree(pk=pk) return response_base.success(data=menu) diff --git a/backend/app/admin/schema/dept.py b/backend/app/admin/schema/dept.py index 8c45290f..5cf8be07 100644 --- a/backend/app/admin/schema/dept.py +++ b/backend/app/admin/schema/dept.py @@ -37,3 +37,9 @@ class GetDeptDetail(DeptSchemaBase): del_flag: bool = Field(description='是否删除') created_time: datetime = Field(description='创建时间') updated_time: datetime | None = Field(None, description='更新时间') + + +class GetDeptTree(GetDeptDetail): + """获取部门树""" + + children: list['GetDeptTree'] | None = Field(None, description='子菜单') diff --git a/backend/app/admin/schema/menu.py b/backend/app/admin/schema/menu.py index 88261fe1..09d1b3fe 100644 --- a/backend/app/admin/schema/menu.py +++ b/backend/app/admin/schema/menu.py @@ -43,3 +43,9 @@ class GetMenuDetail(MenuSchemaBase): id: int = Field(description='菜单 ID') created_time: datetime = Field(description='创建时间') updated_time: datetime | None = Field(None, description='更新时间') + + +class GetMenuTree(GetMenuDetail): + """获取菜单树""" + + children: list['GetMenuTree'] | None = Field(None, description='子菜单')