#!/usr/bin/env python3 """修改表单管理菜单结构""" import asyncio from sqlalchemy.ext.asyncio import create_async_engine from sqlalchemy import text DB_CONFIG = { 'host': '123.57.81.127', 'port': 3306, 'user': 'cpy_admin', 'password': 'Tgzz2025+', 'database': 'ruoyi-fastapi' } DATABASE_URL = ( f"mysql+asyncmy://{DB_CONFIG['user']}:{DB_CONFIG['password']}@" f"{DB_CONFIG['host']}:{DB_CONFIG['port']}/{DB_CONFIG['database']}" ) async def fix_menu(): engine = create_async_engine(DATABASE_URL, echo=False) async with engine.connect() as conn: print("=" * 80) print("Fixing Form Management Menu Structure") print("=" * 80) # 1. 删除旧的表单管理菜单 print("\n[1] Removing old test_form menu...") result = await conn.execute(text(""" SELECT menu_id FROM sys_menu WHERE path = 'test_form' AND menu_type = 'C' """)) old_menu = result.fetchone() if old_menu: old_menu_id = old_menu[0] # 删除子菜单(按钮) await conn.execute(text(f"DELETE FROM sys_menu WHERE parent_id = {old_menu_id}")) # 删除菜单 await conn.execute(text(f"DELETE FROM sys_menu WHERE menu_id = {old_menu_id}")) await conn.commit() print(f" [OK] Old menu removed (ID: {old_menu_id})") # 2. 创建表单管理目录 print("\n[2] Creating Form Management directory...") await conn.execute(text(""" INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time) VALUES ('表单管理', 0, 8, '/formmgmt', NULL, 0, 0, 'M', '0', '0', NULL, 'el-icon-document-copy', 'admin', NOW()) """)) await conn.commit() # 获取新目录ID result = await conn.execute(text(""" SELECT menu_id FROM sys_menu WHERE path = '/formmgmt' AND menu_type = 'M' """)) parent_id = result.scalar() print(f" [OK] Directory created (ID: {parent_id})") # 3. 创建测试条件表单菜单 print("\n[3] Creating Condition Form menu...") await conn.execute(text(f""" INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time) VALUES ('测试条件表单', {parent_id}, 1, 'formmgmt/condition', 'system/test_form/condition', 0, 0, 'C', '0', '0', 'system:test_form:list', 'el-icon-document', 'admin', NOW()) """)) await conn.commit() result = await conn.execute(text(""" SELECT menu_id FROM sys_menu WHERE path = 'formmgmt/condition' """)) condition_menu_id = result.scalar() # 添加按钮权限 buttons = [ ('查询', 'system:test_form:query'), ('新增', 'system:test_form:add'), ('修改', 'system:test_form:edit'), ('删除', 'system:test_form:remove'), ] for btn_name, btn_perm in buttons: await conn.execute(text(f""" INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time) VALUES ('{btn_name}', {condition_menu_id}, 1, '#', NULL, 0, 0, 'F', '0', '0', '{btn_perm}', NULL, 'admin', NOW()) """)) await conn.commit() print(f" [OK] Condition Form menu created (ID: {condition_menu_id})") # 4. 创建测试结果表单菜单 print("\n[4] Creating Result Form menu...") await conn.execute(text(f""" INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time) VALUES ('测试结果表单', {parent_id}, 2, 'formmgmt/result', 'system/test_form/result', 0, 0, 'C', '0', '0', 'system:test_form:list', 'el-icon-document-checked', 'admin', NOW()) """)) await conn.commit() result = await conn.execute(text(""" SELECT menu_id FROM sys_menu WHERE path = 'formmgmt/result' """)) result_menu_id = result.scalar() # 添加按钮权限 for btn_name, btn_perm in buttons: await conn.execute(text(f""" INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time) VALUES ('{btn_name}', {result_menu_id}, 1, '#', NULL, 0, 0, 'F', '0', '0', '{btn_perm}', NULL, 'admin', NOW()) """)) await conn.commit() print(f" [OK] Result Form menu created (ID: {result_menu_id})") print("\n" + "=" * 80) print("Menu structure fixed successfully!") print("=" * 80) await engine.dispose() if __name__ == '__main__': asyncio.run(fix_menu())