提交所有代码到 qiaoxinjiu 分支

This commit is contained in:
qiaoxinjiu
2026-05-11 14:29:16 +08:00
parent 01a4ac8ea1
commit 2fea5adb44
59 changed files with 4957 additions and 1603 deletions

View File

@@ -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)