#!/usr/bin/env python3 """ 更新菜单结构 - 移除"我的应用"菜单,将应用管理功能迁移到管理员菜单下 """ import pymysql from dotenv import load_dotenv import os load_dotenv() def get_db_connection(): """获取数据库连接""" try: config = { 'host': os.getenv('DB_HOST', 'localhost'), 'port': int(os.getenv('DB_PORT', 3306)), 'user': os.getenv('DB_USER', 'root'), 'password': os.getenv('DB_PASSWORD', 'admin'), 'database': os.getenv('DB_NAME', 'lq_db'), 'charset': 'utf8mb4', 'autocommit': True } return pymysql.connect(**config) except Exception as e: print(f"数据库连接失败: {e}") return None def update_menu_structure(): """更新菜单结构""" print("🔄 更新菜单结构...") print("=" * 50) conn = get_db_connection() if not conn: print("❌ 数据库连接失败") return False cursor = conn.cursor() try: # 1. 删除"我的应用"相关菜单和按钮 print("🗑️ 删除旧的'我的应用'菜单...") # 删除应用管理按钮权限 cursor.execute("DELETE FROM menus WHERE parent_id = 'apps-menu'") print(f" 删除了应用管理按钮权限") # 删除"我的应用"主菜单 cursor.execute("DELETE FROM menus WHERE id = 'apps-menu'") print(f" 删除了'我的应用'主菜单") # 2. 更新菜单排序 print("📝 更新菜单排序...") cursor.execute("UPDATE menus SET sort_order = 3 WHERE id = 'admin-menu'") print(" 更新了系统管理菜单排序") # 3. 确保应用管理按钮权限在管理员应用管理菜单下 print("➕ 添加应用管理按钮权限...") apps_buttons = [ ('apps-create-btn', 'admin-apps-menu', 'apps-create', '创建应用', None, None, 'Plus', 1, 'button', False), ('apps-edit-btn', 'admin-apps-menu', 'apps-edit', '编辑应用', None, None, 'Edit', 2, 'button', False), ('apps-delete-btn', 'admin-apps-menu', 'apps-delete', '删除应用', None, None, 'Delete', 3, 'button', False), ('apps-secret-btn', 'admin-apps-menu', 'apps-secret', '查看密钥', None, None, 'Key', 4, 'button', False), ] for button_data in apps_buttons: # 检查是否已存在 cursor.execute("SELECT COUNT(*) FROM menus WHERE id = %s", (button_data[0],)) if cursor.fetchone()[0] == 0: cursor.execute(""" INSERT INTO menus (id, parent_id, name, title, path, component, icon, sort_order, menu_type, is_hidden) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s) """, button_data) print(f" 添加了按钮权限: {button_data[3]}") else: print(f" 按钮权限已存在: {button_data[3]}") # 4. 清理角色菜单关联中的"我的应用"菜单 print("🧹 清理角色菜单关联...") cursor.execute("DELETE FROM role_menus WHERE menu_id = 'apps-menu'") cursor.execute("DELETE FROM role_menus WHERE menu_id LIKE 'apps-%' AND menu_id != 'admin-apps-menu'") print(" 清理了旧的角色菜单关联") # 5. 为管理员角色添加应用管理权限 print("🔐 为管理员角色添加应用管理权限...") # 获取管理员相关角色 admin_roles = ['super_admin', 'admin', 'app_manager'] for role_name in admin_roles: # 获取角色ID cursor.execute("SELECT id FROM roles WHERE name = %s", (role_name,)) role_result = cursor.fetchone() if role_result: role_id = role_result[0] # 添加应用管理菜单权限 cursor.execute(""" INSERT IGNORE INTO role_menus (role_id, menu_id, created_at) VALUES (%s, 'admin-apps-menu', NOW()) """, (role_id,)) # 添加应用管理按钮权限 for button_data in apps_buttons: cursor.execute(""" INSERT IGNORE INTO role_menus (role_id, menu_id, created_at) VALUES (%s, %s, NOW()) """, (role_id, button_data[0])) print(f" 为角色 {role_name} 添加了应用管理权限") conn.commit() print("\n" + "=" * 50) print("✅ 菜单结构更新完成!") print("📋 更新内容:") print(" - 删除了'我的应用'菜单") print(" - 应用管理功能迁移到系统管理下") print(" - 更新了菜单排序") print(" - 更新了角色权限") print("=" * 50) return True except Exception as e: print(f"❌ 更新失败: {e}") conn.rollback() return False finally: cursor.close() conn.close() def main(): """主函数""" success = update_menu_structure() if success: print("\n🎉 菜单结构更新成功!请重启前端服务以查看更改。") else: print("\n❌ 菜单结构更新失败!") if __name__ == "__main__": main()