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