49 lines
3.1 KiB
Python
49 lines
3.1 KiB
Python
"""为 test 系统初始化菜单和角色"""
|
|
import pymysql
|
|
conn = pymysql.connect(host='db1.prod.zgitm.com', port=3306, user='mokeegateway', password='mokee.',
|
|
database='mokeegateway', charset='utf8mb4')
|
|
cur = conn.cursor()
|
|
sc = 'test'
|
|
|
|
# 1. 顶级菜单
|
|
cur.execute(f"INSERT INTO sys_menu (system_id,parent_id,menu_name,menu_path,component,icon,menu_type,sort_order,status) SELECT s.id,0,'系统管理','/system','Layout','Setting',1,1,1 FROM sys_system s WHERE s.system_code='{sc}'")
|
|
cur.execute(f"INSERT INTO sys_menu (system_id,parent_id,menu_name,menu_path,component,icon,menu_type,sort_order,status) SELECT s.id,0,'业务管理','/biz','Layout','Document',1,2,1 FROM sys_system s WHERE s.system_code='{sc}'")
|
|
conn.commit()
|
|
|
|
# 获取父ID
|
|
cur.execute(f"SELECT id FROM sys_menu WHERE menu_name='系统管理' AND system_id=(SELECT id FROM sys_system WHERE system_code='{sc}')")
|
|
sys_pid = cur.fetchone()[0]
|
|
cur.execute(f"SELECT id FROM sys_menu WHERE menu_name='业务管理' AND system_id=(SELECT id FROM sys_system WHERE system_code='{sc}')")
|
|
biz_pid = cur.fetchone()[0]
|
|
|
|
# 子菜单
|
|
subs = [
|
|
('用户管理', '/system/user', 'system/user/index', 'User', 2, 1, sys_pid),
|
|
('角色管理', '/system/role', 'system/role/index', 'Avatar', 2, 2, sys_pid),
|
|
('订单管理', '/biz/order', 'biz/order/index', 'Tickets', 2, 1, biz_pid),
|
|
('报表查询', '/biz/report', 'biz/report/index', 'TrendCharts', 2, 2, biz_pid),
|
|
]
|
|
for nm, path, comp, icon, mtype, sort, pid in subs:
|
|
cur.execute(f"INSERT INTO sys_menu (system_id,parent_id,menu_name,menu_path,component,icon,menu_type,sort_order,status) SELECT s.id,{pid},'{nm}','{path}','{comp}','{icon}',{mtype},{sort},1 FROM sys_system s WHERE s.system_code='{sc}'")
|
|
conn.commit()
|
|
|
|
# 2. 角色
|
|
cur.execute(f"INSERT IGNORE INTO sys_role (system_id,role_name,role_code,description,status) SELECT s.id,'管理员','admin','系统管理员',1 FROM sys_system s WHERE s.system_code='{sc}'")
|
|
cur.execute(f"INSERT IGNORE INTO sys_role (system_id,role_name,role_code,description,status) SELECT s.id,'普通用户','user','普通用户',1 FROM sys_system s WHERE s.system_code='{sc}'")
|
|
conn.commit()
|
|
|
|
# 3. 角色菜单绑定
|
|
cur.execute(f"INSERT INTO sys_role_menu (role_id,menu_id) SELECT r.id,m.id FROM sys_role r,sys_menu m,sys_system s WHERE r.role_code='admin' AND r.system_id=s.id AND m.system_id=s.id AND s.system_code='{sc}'")
|
|
conn.commit()
|
|
|
|
print("=== Menus ===")
|
|
cur.execute(f"SELECT menu_name,menu_path,menu_type FROM sys_menu WHERE system_id=(SELECT id FROM sys_system WHERE system_code='{sc}') ORDER BY sort_order,id")
|
|
for r in cur.fetchall(): print(f" {r[0]:10s} {r[1]:20s} type={r[2]}")
|
|
print("=== Roles ===")
|
|
cur.execute(f"SELECT role_name,role_code FROM sys_role WHERE system_id=(SELECT id FROM sys_system WHERE system_code='{sc}')")
|
|
for r in cur.fetchall(): print(f" {r[0]} ({r[1]})")
|
|
cur.execute(f"SELECT COUNT(*) FROM sys_role_menu rm JOIN sys_role r ON rm.role_id=r.id WHERE r.system_id=(SELECT id FROM sys_system WHERE system_code='{sc}')")
|
|
print(f"=== Role-Menu bindings: {cur.fetchone()[0]} ===")
|
|
cur.close(); conn.close()
|
|
print("Done")
|