90 lines
3.0 KiB
Python
90 lines
3.0 KiB
Python
|
|
#!/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()
|