"""为 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")