""" 添加角色权限管理菜单到数据库 """ import sys import asyncio from pathlib import Path # 添加项目根目录到 Python 路径 sys.path.insert(0, str(Path(__file__).parent.parent)) from sqlalchemy import text from app.core.database import async_session async def add_role_permissions_menu(): """添加角色权限管理菜单""" print("正在添加角色权限管理菜单...") async with async_session() as session: # 1. 检查菜单是否已存在 result = await session.execute( text("SELECT COUNT(*) FROM system_menus WHERE id = 14") ) count = result.scalar() if count > 0: print(" 菜单已存在,跳过添加") return # 2. 插入菜单项 await session.execute( text(""" INSERT INTO system_menus ( id, parent_id, menu_name, menu_code, menu_type, path, component, icon, sort_order, visible, status, created_at, updated_at ) VALUES ( 14, 4, '角色权限管理', 'system:role_permissions', 1, '/role-permissions', 'RolePermissions', 'SafetyOutlined', 6, 1, 1, NOW(), NOW() ) """) ) print("✓ 菜单项添加成功") # 3. 为超级管理员角色分配菜单权限 result = await session.execute( text("SELECT id FROM roles WHERE role_code = 'super_admin'") ) super_admin_role_id = result.scalar() if super_admin_role_id: await session.execute( text(""" INSERT INTO role_menus (role_id, menu_id, created_at) VALUES (:role_id, 14, NOW()) """), {"role_id": super_admin_role_id} ) print(f"✓ 已为超级管理员角色分配权限") # 4. 为管理员角色分配菜单权限 result = await session.execute( text("SELECT id FROM roles WHERE role_code = 'admin'") ) admin_role_id = result.scalar() if admin_role_id: await session.execute( text(""" INSERT INTO role_menus (role_id, menu_id, created_at) VALUES (:role_id, 14, NOW()) """), {"role_id": admin_role_id} ) print(f"✓ 已为管理员角色分配权限") await session.commit() print("\n✓ 角色权限管理菜单添加完成!") async def main(): """主函数""" print("=" * 60) print("添加角色权限管理菜单") print("=" * 60) print() try: await add_role_permissions_menu() print() print("=" * 60) print("✓ 操作完成!") print("=" * 60) except Exception as e: print(f"\n✗ 操作失败: {str(e)}") import traceback traceback.print_exc() sys.exit(1) if __name__ == "__main__": asyncio.run(main())