fix: 修正角色权限分配异常问题

This commit is contained in:
2025-02-28 16:47:48 +08:00
parent b59dba18f0
commit 141883424b
4 changed files with 30 additions and 12 deletions

View File

@@ -14,7 +14,7 @@ from annotation.auth import Auth, hasAdmin
from annotation.log import Log
from config.constant import BusinessType, RedisKeyConfig
from controller.login import LoginController
from models import Permission
from models import Permission,RolePermission
from schemas.common import BaseResponse
from schemas.permission import AddPermissionParams, GetPermissionInfoResponse, GetPermissionListResponse
from utils.response import Response
@@ -73,8 +73,8 @@ async def add_permission(request: Request, params: AddPermissionParams):
@Auth(permission_list=["permission:btn:delete"])
async def delete_permission(request: Request, id: str = Path(description="权限ID")):
if permission := await Permission.get_or_none(id=id, del_flag=1):
permission.del_flag = 0
await permission.save()
# 移除角色权限
await delete_permission_recursive(permission_id=permission.id)
# 更新用户信息缓存
userInfos = await request.app.state.redis.keys(f'{RedisKeyConfig.USER_INFO.key}*')
if userInfos:
@@ -88,6 +88,19 @@ async def delete_permission(request: Request, id: str = Path(description="权限
return Response.error(msg="删除权限失败,权限不存在!")
async def delete_permission_recursive(permission_id: str):
"""
递归删除权限及其附属权限
:param permission_id: 权限ID
:return:
"""
await Permission.filter(id=permission_id, del_flag=1).update(del_flag=0)
await RolePermission.filter(permission_id=permission_id, del_flag=1).update(del_flag=0)
sub_permissions = await Permission.filter(parent_id=permission_id, del_flag=1).all()
for sub_department in sub_permissions:
await delete_permission_recursive(sub_department.id)
return True
@permissionAPI.put("/update/{id}", response_model=BaseResponse, response_class=JSONResponse, summary="更新权限")
@permissionAPI.post("/update/{id}", response_model=BaseResponse, response_class=JSONResponse, summary="更新权限")
@Log(title="更新权限", business_type=BusinessType.UPDATE)