fix: clean orphaned permission tree nodes and enhance outbound search with material name/spec model
This commit is contained in:
@ -447,6 +447,18 @@ class PermissionService:
|
||||
('system_audit', '审计日志', '/system/audit', 'system_mgmt', 3),
|
||||
]
|
||||
|
||||
# 第一步:清理根级别的冗余子菜单(这些本应是子节点,但可能之前被错误地创建为根节点)
|
||||
child_codes = [m[0] for m in menu_defs if m[3] is not None] # 所有子菜单的code
|
||||
orphaned_menus = SysMenu.query.filter(
|
||||
SysMenu.code.in_(child_codes),
|
||||
(SysMenu.parent_id == 0) | (SysMenu.parent_id.is_(None))
|
||||
).all()
|
||||
for menu in orphaned_menus:
|
||||
print(f"🗑️ 清理根级别冗余菜单: {menu.code} ({menu.name})")
|
||||
# 删除关联的权限
|
||||
SysRolePermission.query.filter_by(target_code=menu.code).delete()
|
||||
db.session.delete(menu)
|
||||
|
||||
# 创建或更新菜单
|
||||
menu_map = {} # code -> menu obj
|
||||
|
||||
|
||||
Reference in New Issue
Block a user