From 754b9d9edc09b058cd8509a3afe7725f0ba7f13b Mon Sep 17 00:00:00 2001 From: Wu Clan Date: Sat, 20 Jan 2024 19:58:06 +0800 Subject: [PATCH] Fix dept and menu parent id update logic (#274) --- backend/app/schemas/dept.py | 2 +- backend/app/services/dept_service.py | 2 ++ backend/app/services/menu_service.py | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/backend/app/schemas/dept.py b/backend/app/schemas/dept.py index 16be7aa6..7bd6add9 100644 --- a/backend/app/schemas/dept.py +++ b/backend/app/schemas/dept.py @@ -10,7 +10,7 @@ from backend.app.schemas.base import CustomPhoneNumber, SchemaBase class DeptSchemaBase(SchemaBase): name: str - parent_id: int | None = Field(default=None, description='菜单父级ID') + parent_id: int | None = Field(default=None, description='部门父级ID') sort: int = Field(default=0, ge=0, description='排序') leader: str | None = None phone: CustomPhoneNumber | None = None diff --git a/backend/app/services/dept_service.py b/backend/app/services/dept_service.py index 6b4f7ab9..dbc16ef1 100644 --- a/backend/app/services/dept_service.py +++ b/backend/app/services/dept_service.py @@ -53,6 +53,8 @@ class DeptService: parent_dept = await DeptDao.get(db, obj.parent_id) if not parent_dept: raise errors.NotFoundError(msg='父级部门不存在') + if obj.parent_id == dept.id: + raise errors.ForbiddenError(msg='禁止关联自身为父级') count = await DeptDao.update(db, pk, obj) return count diff --git a/backend/app/services/menu_service.py b/backend/app/services/menu_service.py index f3cbb5a6..00688e4e 100644 --- a/backend/app/services/menu_service.py +++ b/backend/app/services/menu_service.py @@ -80,6 +80,8 @@ class MenuService: parent_menu = await MenuDao.get(db, obj.parent_id) if not parent_menu: raise errors.NotFoundError(msg='父级菜单不存在') + if obj.parent_id == menu.id: + raise errors.ForbiddenError(msg='禁止关联自身为父级') count = await MenuDao.update(db, pk, obj) await redis_client.delete_prefix(settings.PERMISSION_REDIS_PREFIX) return count