75 lines
2.6 KiB
Python
75 lines
2.6 KiB
Python
#!/usr/bin/env python
|
|
# encoding: UTF-8
|
|
|
|
import psycopg2
|
|
|
|
def generate_menu_sql():
|
|
try:
|
|
conn = psycopg2.connect(
|
|
host="39.170.26.156",
|
|
port=8366,
|
|
dbname="test",
|
|
user="postgres",
|
|
password="difyai123456"
|
|
)
|
|
cursor = conn.cursor()
|
|
|
|
# 查询自动化模块的权限
|
|
cursor.execute("""
|
|
SELECT code, name, action
|
|
FROM permission
|
|
WHERE module = 'automation' AND is_delete = 0
|
|
ORDER BY id;
|
|
""")
|
|
|
|
permissions = cursor.fetchall()
|
|
|
|
print("自动化模块权限列表:")
|
|
print("-" * 60)
|
|
print(f"{'权限代码':<30} {'权限名称':<20} {'action'}")
|
|
print("-" * 60)
|
|
for p in permissions:
|
|
print(f"{p[0]:<30} {p[1]:<20} {p[2]}")
|
|
|
|
# 查询已存在的menu
|
|
cursor.execute("SELECT code FROM menu WHERE is_delete = 0")
|
|
existing_menus = {row[0] for row in cursor.fetchall()}
|
|
|
|
conn.close()
|
|
|
|
# 生成SQL
|
|
sql_lines = []
|
|
sql_lines.append("-- ==============================================")
|
|
sql_lines.append("-- 自动化执行模块 - 权限对应的按钮菜单")
|
|
sql_lines.append("-- ==============================================")
|
|
sql_lines.append("")
|
|
|
|
sort_order = 1
|
|
for code, name, action in permissions:
|
|
menu_code = f"automation_{action}"
|
|
if menu_code in existing_menus:
|
|
print(f"跳过已存在的菜单: {menu_code}")
|
|
continue
|
|
|
|
sql_lines.append(f"-- {name} 按钮")
|
|
sql_lines.append(f"INSERT INTO menu (name, code, type, path, component, icon, permission_code, parent_id, sort, visible, status, is_delete)")
|
|
sql_lines.append(f"SELECT '{name}', '{menu_code}', 3, '', '', '', '{code}',")
|
|
sql_lines.append(f" (SELECT id FROM menu WHERE code = 'automation_list'), {sort_order}, 1, 1, 0")
|
|
sql_lines.append(f"WHERE NOT EXISTS (SELECT 1 FROM menu WHERE code = '{menu_code}');")
|
|
sql_lines.append("")
|
|
sort_order += 1
|
|
|
|
sql_lines.append("COMMIT;")
|
|
|
|
# 写入文件
|
|
with open("automation_menus.sql", "w", encoding="utf-8") as f:
|
|
f.write("\n".join(sql_lines))
|
|
|
|
print(f"\n已生成 SQL 文件: automation_menus.sql")
|
|
print(f"共生成 {sort_order - 1} 条菜单记录")
|
|
|
|
except Exception as e:
|
|
print("Error: " + str(e))
|
|
|
|
if __name__ == "__main__":
|
|
generate_menu_sql() |