ETest-Vue-FastAPI/recreate_workorder_menu.py

110 lines
4.2 KiB
Python
Raw Permalink 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 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 recreate_workorder_menu():
engine = create_async_engine(DATABASE_URL, echo=False)
async with engine.connect() as conn:
print("=" * 80)
print("Recreating Work Order Claim Menu")
print("=" * 80)
# 1. 找到测试工单目录ID:2098
print("\n[1] Finding Test Work Order directory...")
result = await conn.execute(text("""
SELECT menu_id, menu_name, path FROM sys_menu WHERE menu_id = 2098
"""))
row = result.fetchone()
if row:
parent_id = row[0]
print(f" Found: ID:{row[0]} | {row[1]} | Path:{row[2]}")
else:
print(" [ERROR] Test Work Order directory not found!")
return
# 2. 检查是否已存在工单领取菜单
print("\n[2] Checking if work order claim menu exists...")
result = await conn.execute(text("""
SELECT COUNT(*) FROM sys_menu WHERE path = 'claim' AND parent_id = 2098
"""))
count = result.scalar()
if count > 0:
print(" Work order claim menu already exists")
else:
# 3. 创建工单领取菜单
print("\n[3] Creating work order claim 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 ('工单领取', 2098, 3, 'claim', 'workorder/claim/index',
0, 0, 'C', '0', '0', 'workorder:claim:list', 'el-icon-s-claim', 'admin', NOW())
"""))
await conn.commit()
print(" [OK] Work order claim menu created")
# 获取新创建的菜单ID
result = await conn.execute(text("""
SELECT menu_id FROM sys_menu WHERE path = 'claim' AND parent_id = 2098
"""))
claim_menu_id = result.scalar()
# 4. 创建按钮权限
print("\n[4] Creating button permissions...")
buttons = [
('工单领取查询', 'workorder:claim:query', 1),
('工单领取', 'workorder:claim:claim', 2),
('批量领取', 'workorder:claim:batch', 3),
]
for btn_name, btn_perm, order 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}', {claim_menu_id}, {order}, '#', NULL,
0, 0, 'F', '0', '0', '{btn_perm}', NULL, 'admin', NOW())
"""))
await conn.commit()
print(" [OK] Button permissions created")
# 5. 验证
print("\n[5] Verification:")
result = await conn.execute(text("""
SELECT m.menu_id, m.menu_name, m.path, m.component, m.menu_type, p.menu_name as parent_name
FROM sys_menu m
LEFT JOIN sys_menu p ON m.parent_id = p.menu_id
WHERE m.parent_id = 2098
ORDER BY m.order_num
"""))
rows = result.fetchall()
print(f" Children of Test Work Order directory:")
for row in rows:
print(f" ID:{row[0]} | {row[1]} | Path:{row[2]} | Type:{row[4]}")
print("\n" + "=" * 80)
print("Recreate Complete")
print("=" * 80)
print("\nPlease logout and login again to refresh the menu")
await engine.dispose()
if __name__ == '__main__':
asyncio.run(recreate_workorder_menu())