|
5 | 5 | from fastapi import Request |
6 | 6 | from sqlalchemy import Select |
7 | 7 |
|
| 8 | +from backend.app.admin.crud.crud_dept import dept_dao |
8 | 9 | from backend.app.admin.crud.crud_menu import menu_dao |
9 | 10 | from backend.app.admin.crud.crud_role import role_dao |
10 | 11 | from backend.app.admin.model import Role |
11 | | -from backend.app.admin.schema.role import CreateRoleParam, UpdateRoleMenuParam, UpdateRoleParam |
| 12 | +from backend.app.admin.schema.role import CreateRoleParam, UpdateRoleDeptParam, UpdateRoleMenuParam, UpdateRoleParam |
12 | 13 | from backend.common.exception import errors |
13 | 14 | from backend.core.conf import settings |
14 | 15 | from backend.database.db_mysql import async_db_session |
@@ -77,6 +78,21 @@ async def update_role_menu(*, request: Request, pk: int, menu_ids: UpdateRoleMen |
77 | 78 | await redis_client.delete(f'{settings.JWT_USER_REDIS_PREFIX}:{request.user.id}') |
78 | 79 | return count |
79 | 80 |
|
| 81 | + @staticmethod |
| 82 | + async def update_role_dept(*, request: Request, pk: int, dept_ids: UpdateRoleDeptParam) -> int: |
| 83 | + async with async_db_session.begin() as db: |
| 84 | + role = await role_dao.get(db, pk) |
| 85 | + if not role: |
| 86 | + raise errors.NotFoundError(msg='角色不存在') |
| 87 | + for dept_id in dept_ids.depts: |
| 88 | + dept = await dept_dao.get(db, dept_id) |
| 89 | + if not dept: |
| 90 | + raise errors.NotFoundError(msg='部门不存在') |
| 91 | + count = await role_dao.update_depts(db, pk, dept_ids) |
| 92 | + if pk in [role.id for role in request.user.roles]: |
| 93 | + await redis_client.delete(f'{settings.JWT_USER_REDIS_PREFIX}:{request.user.id}') |
| 94 | + return count |
| 95 | + |
80 | 96 | @staticmethod |
81 | 97 | async def delete(*, pk: list[int]) -> int: |
82 | 98 | async with async_db_session.begin() as db: |
|
0 commit comments