| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- #!/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()
|