提交所有代码到 qiaoxinjiu 分支
This commit is contained in:
@@ -208,9 +208,6 @@ class RbacController(BaseCrudController):
|
||||
(('name',), 'name'),
|
||||
(('code',), 'code'),
|
||||
(('type',), 'type'),
|
||||
(('path',), 'path'),
|
||||
(('component',), 'component'),
|
||||
(('icon',), 'icon'),
|
||||
(('permissionCode', 'permission_code'), 'permission_code'),
|
||||
(('sort',), 'sort'),
|
||||
(('visible',), 'visible'),
|
||||
@@ -220,12 +217,30 @@ class RbacController(BaseCrudController):
|
||||
value = self._get(self.req_data, *req_keys)
|
||||
if value is not None:
|
||||
update_info[column_key] = value
|
||||
|
||||
for key in ['path', 'component', 'icon']:
|
||||
if key in self.req_data:
|
||||
update_info[key] = self.req_data[key]
|
||||
|
||||
return RbacService.update_by_id(self.session, Menu, menu_id, update_info)
|
||||
|
||||
def menu_delete(self):
|
||||
menu_id = self._get(self.req_data, 'menuId', 'id')
|
||||
if not menu_id:
|
||||
return 0, 'menuId 为必传参数'
|
||||
|
||||
menu = RbacService.get_by_id(self.session, Menu, menu_id)
|
||||
if menu and menu.permission_code:
|
||||
permission = self.session.query(Permission).filter(
|
||||
Permission.code == menu.permission_code,
|
||||
Permission.is_delete == 0
|
||||
).first()
|
||||
if permission:
|
||||
self.session.query(RolePermission).filter(
|
||||
RolePermission.permission_id == permission.id,
|
||||
RolePermission.is_delete == 0
|
||||
).update({'is_delete': 1})
|
||||
|
||||
return RbacService.delete_by_id(self.session, Menu, menu_id)
|
||||
|
||||
def role_permission_list(self):
|
||||
@@ -254,4 +269,44 @@ class RbacController(BaseCrudController):
|
||||
menu_ids = self._get(self.req_data, 'menuIds', default=[])
|
||||
if not role_id:
|
||||
return 0, 'roleId 为必传参数'
|
||||
|
||||
if isinstance(menu_ids, str):
|
||||
import json
|
||||
menu_ids = json.loads(menu_ids)
|
||||
if not isinstance(menu_ids, list):
|
||||
menu_ids = []
|
||||
|
||||
menu_permission_codes = RbacService.get_menu_permission_codes(self.session, menu_ids)
|
||||
|
||||
permission_ids = RbacService.get_permission_ids_by_codes(self.session, menu_permission_codes)
|
||||
|
||||
existing_permission_ids = RbacService.get_role_permission_ids(self.session, role_id)
|
||||
|
||||
deleted_permission_ids = [pid for pid in existing_permission_ids if pid not in permission_ids]
|
||||
if deleted_permission_ids:
|
||||
self.session.query(RolePermission).filter(
|
||||
RolePermission.role_id == int(role_id),
|
||||
RolePermission.permission_id.in_(deleted_permission_ids),
|
||||
RolePermission.is_delete == 0
|
||||
).update({'is_delete': 1})
|
||||
|
||||
new_permission_ids = [pid for pid in permission_ids if pid not in existing_permission_ids]
|
||||
if new_permission_ids:
|
||||
existing_deleted = self.session.query(RolePermission).filter(
|
||||
RolePermission.role_id == int(role_id),
|
||||
RolePermission.permission_id.in_(new_permission_ids),
|
||||
RolePermission.is_delete == 1
|
||||
).all()
|
||||
existing_deleted_map = {rp.permission_id: rp for rp in existing_deleted}
|
||||
|
||||
for permission_id in new_permission_ids:
|
||||
if permission_id in existing_deleted_map:
|
||||
existing_deleted_map[permission_id].is_delete = 0
|
||||
else:
|
||||
self.session.add(RolePermission(
|
||||
role_id=int(role_id),
|
||||
permission_id=permission_id,
|
||||
is_delete=0
|
||||
))
|
||||
|
||||
return RbacService.assign_menus(self.session, role_id, menu_ids)
|
||||
|
||||
Reference in New Issue
Block a user