#!/usr/bin/env python3 """ 测试菜单权限数据是否存在 """ import sys import os sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) from app.core.database import get_db_connection def test_menu_permissions(): print("=== 测试菜单权限数据 ===\n") try: # 连接数据库 with get_db_connection() as connection: cursor = connection.cursor(dictionary=True) # 1. 检查menus表 print("1. 检查menus表:") cursor.execute("SELECT COUNT(*) as count FROM menus") menu_count = cursor.fetchone()['count'] print(f" - 菜单总数: {menu_count}") if menu_count > 0: cursor.execute("SELECT menu_id, menu_code, menu_name, is_active FROM menus ORDER BY sort_order") menus = cursor.fetchall() for menu in menus: print(f" - [{menu['menu_id']}] {menu['menu_name']} ({menu['menu_code']}) - 启用: {menu['is_active']}") else: print(" ⚠️ menus表为空!") print() # 2. 检查roles表 print("2. 检查roles表:") cursor.execute("SELECT * FROM roles ORDER BY role_id") roles = cursor.fetchall() for role in roles: print(f" - [{role['role_id']}] {role['role_name']}") print() # 3. 检查role_menu_permissions表 print("3. 检查role_menu_permissions表:") cursor.execute("SELECT COUNT(*) as count FROM role_menu_permissions") perm_count = cursor.fetchone()['count'] print(f" - 权限总数: {perm_count}") if perm_count > 0: cursor.execute(""" SELECT r.role_name, m.menu_name, rmp.role_id, rmp.menu_id FROM role_menu_permissions rmp JOIN roles r ON rmp.role_id = r.role_id JOIN menus m ON rmp.menu_id = m.menu_id ORDER BY rmp.role_id, m.sort_order """) permissions = cursor.fetchall() current_role = None for perm in permissions: if current_role != perm['role_name']: current_role = perm['role_name'] print(f"\n {current_role}的权限:") print(f" - {perm['menu_name']}") else: print(" ⚠️ role_menu_permissions表为空!") print("\n" + "="*50) # 4. 检查是否需要执行SQL脚本 if menu_count == 0 or perm_count == 0: print("\n❌ 数据库中缺少菜单或权限数据!") print("请执行以下命令初始化数据:") print("\nmysql -h 10.100.51.161 -u root -psagacity imeeting_dev < backend/sql/add_menu_permissions_system.sql") print("\n或者在MySQL客户端中执行该SQL文件。") else: print("\n✅ 菜单权限数据正常!") cursor.close() connection.close() except Exception as e: print(f"❌ 错误: {str(e)}") import traceback traceback.print_exc() if __name__ == "__main__": test_menu_permissions()