imetting_backend/test/test_menu_permissions.py

90 lines
3.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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