114 lines
8.4 KiB
Python
114 lines
8.4 KiB
Python
"""QA数据库初始化 (UUID版本) - 直接用Python处理关联"""
|
|
import pymysql, uuid
|
|
|
|
def uid(): return uuid.uuid4().hex
|
|
|
|
conn = pymysql.connect(host='db1.qa.zgitm.com', port=3306, user='mokeegatewayqa', password='mokee.', database='mokeegatewayqa', charset='utf8mb4')
|
|
cur = conn.cursor()
|
|
|
|
# 重建
|
|
cur.execute('DROP DATABASE IF EXISTS mokeegatewayqa')
|
|
cur.execute('CREATE DATABASE mokeegatewayqa DEFAULT CHARSET utf8mb4')
|
|
cur.execute('USE mokeegatewayqa')
|
|
conn.commit()
|
|
|
|
# 读DDL执行
|
|
with open('E:/AI/claude/new/mokeeGateway/sql/qa_ddl.sql', 'r', encoding='utf-8') as f:
|
|
for stmt in f.read().split(';'):
|
|
stmt = stmt.strip()
|
|
if stmt and not stmt.startswith('--') and 'USE ' not in stmt:
|
|
try: cur.execute(stmt); conn.commit()
|
|
except Exception as e: print(f'DDL WARN: {e}')
|
|
|
|
print('DDL done')
|
|
|
|
# === 管理员 ===
|
|
admin_id = uid()
|
|
cur.execute("INSERT INTO sys_user (id, username, password, real_name, email, phone, post, status) VALUES (%s,%s,%s,%s,%s,%s,%s,%s)",
|
|
(admin_id, 'admin', '$2b$10$ffAZHF6lmUuNV6OJITADXeduD5mMTS0.7kElPI7zno2zGn/RF5uC6', '管理员', 'admin@mokee.com', '13800000000', '管理员', 1))
|
|
|
|
# === 系统 ===
|
|
test_sid = uid()
|
|
gw_sid = uid()
|
|
cur.execute("INSERT INTO sys_system (id,system_code,system_name,front_url,backend_url,gateway_url,status,description) VALUES (%s,%s,%s,%s,%s,%s,%s,%s)",
|
|
(test_sid, 'test', '测试系统', 'http://127.0.0.1:5001', 'http://127.0.0.1:32000', 'http://127.0.0.1:9000/test', 1, '测试用业务系统'))
|
|
cur.execute("INSERT INTO sys_system (id,system_code,system_name,front_url,backend_url,gateway_url,icon,sort_order,status,description,doc_token) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)",
|
|
(gw_sid, 'gateway', '网关管理平台', 'http://127.0.0.1:5001', 'http://127.0.0.1:9000', 'http://127.0.0.1:9000/gateway', '', 0, 1, '统一登录网关管理后台', 'gateway1234567890'))
|
|
|
|
# === 绑定系统 ===
|
|
cur.execute("INSERT INTO sys_user_system (id,user_id,system_id) VALUES (%s,%s,%s)", (uid(), admin_id, test_sid))
|
|
cur.execute("INSERT INTO sys_user_system (id,user_id,system_id) VALUES (%s,%s,%s)", (uid(), admin_id, gw_sid))
|
|
|
|
# === 角色 ===
|
|
test_admin_role = uid()
|
|
test_user_role = uid()
|
|
gw_super_admin = uid()
|
|
gw_admin_role = uid()
|
|
cur.execute("INSERT INTO sys_role (id,system_id,role_name,role_code,description,status) VALUES (%s,%s,%s,%s,%s,%s)", (test_admin_role, test_sid, '管理员', 'admin', '系统管理员', 1))
|
|
cur.execute("INSERT INTO sys_role (id,system_id,role_name,role_code,description,status) VALUES (%s,%s,%s,%s,%s,%s)", (test_user_role, test_sid, '普通用户', 'user', '普通用户', 1))
|
|
cur.execute("INSERT INTO sys_role (id,system_id,role_name,role_code,description,status) VALUES (%s,%s,%s,%s,%s,%s)", (gw_super_admin, gw_sid, '超级管理员', 'super_admin', '网关平台超级管理员', 1))
|
|
cur.execute("INSERT INTO sys_role (id,system_id,role_name,role_code,description,status) VALUES (%s,%s,%s,%s,%s,%s)", (gw_admin_role, gw_sid, '普通管理员', 'admin', '网关平台普通管理员', 1))
|
|
|
|
# === 用户角色 ===
|
|
cur.execute("INSERT INTO sys_user_role (id,user_id,role_id) VALUES (%s,%s,%s)", (uid(), admin_id, test_admin_role))
|
|
cur.execute("INSERT INTO sys_user_role (id,user_id,role_id) VALUES (%s,%s,%s)", (uid(), admin_id, gw_super_admin))
|
|
|
|
# === 测试系统菜单 ===
|
|
m = {}
|
|
m['t_sys'] = uid()
|
|
m['t_biz'] = uid()
|
|
cur.execute("INSERT INTO sys_menu (id,system_id,parent_id,menu_name,menu_path,component,icon,menu_type,sort_order,status) VALUES (%s,%s,'0',%s,%s,%s,%s,1,%s,1)", (m['t_sys'], test_sid, '系统管理', '/system', 'Layout', 'Setting', 1))
|
|
cur.execute("INSERT INTO sys_menu (id,system_id,parent_id,menu_name,menu_path,component,icon,menu_type,sort_order,status) VALUES (%s,%s,'0',%s,%s,%s,%s,1,%s,1)", (m['t_biz'], test_sid, '业务管理', '/biz', 'Layout', 'Document', 2))
|
|
for nm, path, comp, icon, sort, pid_key in [('用户管理','/system/user','system/user/index','User',1,'t_sys'),('角色管理','/system/role','system/role/index','Avatar',2,'t_sys'),('订单管理','/biz/order','biz/order/index','Tickets',1,'t_biz'),('报表查询','/biz/report','biz/report/index','TrendCharts',2,'t_biz')]:
|
|
mid = uid()
|
|
m[nm] = mid
|
|
cur.execute("INSERT INTO sys_menu (id,system_id,parent_id,menu_name,menu_path,component,icon,menu_type,sort_order,status) VALUES (%s,%s,%s,%s,%s,%s,%s,2,%s,1)", (mid, test_sid, m[pid_key], nm, path, comp, icon, sort))
|
|
|
|
# 角色绑定菜单
|
|
cur.execute(f"INSERT INTO sys_role_menu (id,role_id,menu_id) SELECT REPLACE(UUID(),'-',''), '{test_admin_role}', id FROM sys_menu WHERE system_id='{test_sid}'")
|
|
|
|
# === Gateway 菜单 ===
|
|
gm = {}
|
|
for nm, path, comp, icon, sort, mtype in [('首页','/admin/dashboard','','HomeFilled',1,1),('系统管理',None,'','Monitor',2,1),('用户权限',None,'','User',3,1),('日志审计',None,'','Notebook',4,1)]:
|
|
mid = uid(); gm[nm] = mid
|
|
cur.execute("INSERT INTO sys_menu (id,system_id,parent_id,menu_name,menu_path,component,icon,menu_type,sort_order,status) VALUES (%s,%s,'0',%s,%s,%s,%s,%s,%s,1)", (mid, gw_sid, nm, path, comp, icon, mtype, sort))
|
|
|
|
for nm, path, comp, icon, sort, pkey, mtype in [
|
|
('系统列表','/admin/system','','List',1,'系统管理',2), ('接口管理','/admin/api','','Link',2,'系统管理',2), ('数据字典','/admin/dict','','Collection',3,'系统管理',2),
|
|
('用户管理','/admin/user','','UserFilled',1,'用户权限',2), ('角色管理','/admin/role','','Avatar',2,'用户权限',2), ('菜单管理','/admin/menu','','Menu',3,'用户权限',2),
|
|
('登录日志','/admin/log/login','','Document',1,'日志审计',2), ('操作日志','/admin/log/operation','','Tickets',2,'日志审计',2), ('Token日志','/admin/log/token','','Key',3,'日志审计',2)]:
|
|
mid = uid(); gm[nm] = mid
|
|
cur.execute("INSERT INTO sys_menu (id,system_id,parent_id,menu_name,menu_path,component,icon,menu_type,sort_order,status) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,1)", (mid, gw_sid, gm[pkey], nm, path, comp, icon, mtype, sort))
|
|
|
|
# 按钮权限
|
|
for pid_key, label, perm, sort in [
|
|
('系统列表','新增系统','system:system:add',1), ('系统列表','编辑系统','system:system:edit',2), ('系统列表','删除系统','system:system:delete',3),
|
|
('用户管理','新增用户','system:user:add',1), ('用户管理','编辑用户','system:user:edit',2), ('用户管理','删除用户','system:user:delete',3),
|
|
('角色管理','新增角色','system:role:add',1), ('角色管理','编辑角色','system:role:edit',2), ('角色管理','删除角色','system:role:delete',3), ('角色管理','分配菜单','system:role:assignMenu',4),
|
|
('菜单管理','新增菜单','system:menu:add',1), ('菜单管理','编辑菜单','system:menu:edit',2), ('菜单管理','删除菜单','system:menu:delete',3),
|
|
('接口管理','新增接口','system:api:add',1), ('接口管理','编辑接口','system:api:edit',2), ('接口管理','删除接口','system:api:delete',3),
|
|
('数据字典','新增字典','system:dict:add',1), ('数据字典','编辑字典','system:dict:edit',2), ('数据字典','删除字典','system:dict:delete',3)]:
|
|
cur.execute("INSERT INTO sys_menu (id,system_id,parent_id,menu_name,menu_path,component,icon,menu_type,sort_order,status,permission) VALUES (%s,%s,%s,%s,NULL,NULL,'',3,%s,1,%s)", (uid(), gw_sid, gm[pid_key], label, sort, perm))
|
|
|
|
# 角色菜单绑定
|
|
cur.execute(f"INSERT INTO sys_role_menu (id,role_id,menu_id) SELECT REPLACE(UUID(),'-',''), '{gw_super_admin}', id FROM sys_menu WHERE system_id='{gw_sid}'")
|
|
cur.execute(f"INSERT INTO sys_role_menu (id,role_id,menu_id) SELECT REPLACE(UUID(),'-',''), '{gw_admin_role}', id FROM sys_menu WHERE system_id='{gw_sid}'")
|
|
|
|
# 放行接口
|
|
for sid in [test_sid, gw_sid]:
|
|
for method, path in [('GET','/zgapi/v1/admin/**'),('POST','/zgapi/v1/admin/**'),('PUT','/zgapi/v1/admin/**'),('DELETE','/zgapi/v1/admin/**'),('GET','/zgapi/v1/auth/**'),('POST','/zgapi/v1/auth/**'),('PUT','/zgapi/v1/auth/**')]:
|
|
cur.execute("INSERT INTO sys_api (id,system_id,api_path,api_method,api_name,status) VALUES (%s,%s,%s,%s,'放行接口',1)", (uid(), sid, path, method))
|
|
|
|
conn.commit()
|
|
|
|
# 验证
|
|
for tbl in ['sys_system','sys_user','sys_role','sys_menu','sys_api','sys_role_menu','sys_user_system','sys_user_role']:
|
|
cur.execute(f'SELECT COUNT(*) FROM {tbl}')
|
|
print(f'{tbl}: {cur.fetchone()[0]}')
|
|
|
|
cur.execute('SELECT id, username FROM sys_user LIMIT 1')
|
|
r = cur.fetchone()
|
|
print(f'管理员: {r[1]}, ID长度: {len(r[0])}')
|
|
cur.close(); conn.close()
|
|
print('QA DB INIT DONE')
|