-- ===================================================================== -- 为「五菱新事业」商户创建 qqflow 流程管理员账号 -- -- 执行库:qqflow 审批引擎库(qqflowengine) -- 执行顺序:先执行本脚本,再在 wl-scrm 库执行 -- wl-scrm-center/sql/20261030_wlscrm_bind_wlxsy_qqflow_account.sql -- -- 账号约定(两个脚本必须一致): -- 五菱新事业 username = wlxsy_flow,明文密码 = wlxsy123456 -- -- qqflow 密码使用 BCrypt 存储,哈希由下列命令生成(勿替换成明文): -- htpasswd -bnBC 10 "" 'wlxsy123456' | tr -d ':\n' -- -- 说明: -- · qqflow 前端菜单看 sys_user.employee_type,必须为 flow_manager; -- · qqflow 后端接口 @PreAuthorize 看 sys_user_role → sys_role.role_code, -- 必须同时绑定 flow_manager 角色(本脚本会补齐); -- · 脚本幂等:重复执行会重置账号密码并补齐角色,不会重复插入。 -- ===================================================================== -- 执行前确认当前库:必须是 qqflowengine。 SELECT DATABASE() AS current_database; -- ------------------------------------------------------------------- -- 0) 公共准备:确保 flow_manager 角色存在且启用 -- ------------------------------------------------------------------- INSERT INTO sys_role (role_code, role_name, role_scope, parent_id, dept_id, status) SELECT 'flow_manager', '流程管理员', 'tenant', 0, 0, 1 WHERE NOT EXISTS ( SELECT 1 FROM sys_role WHERE role_code COLLATE utf8mb4_general_ci = 'flow_manager' COLLATE utf8mb4_general_ci ); UPDATE sys_role SET status = 1 WHERE role_code COLLATE utf8mb4_general_ci = 'flow_manager' COLLATE utf8mb4_general_ci; SET @flow_manager_role_id = ( SELECT id FROM sys_role WHERE role_code COLLATE utf8mb4_general_ci = 'flow_manager' COLLATE utf8mb4_general_ci LIMIT 1 ); -- ===================================================================== -- 1) 五菱新事业(tenancy_id = 118216101210041) -- ===================================================================== SET @username = 'wlxsy_flow'; SET @password_hash = '$2y$10$2IxmPKN7vqGy4tW32jxFYeMixOBZls4NEiAnz/WDfpUwoiezWp9n.'; SET @real_name = '五菱新事业流程管理员'; -- 1.0 执行前检查:用户名是否已被占用 -- 有结果时先确认是不是本次要重置的账号;如果是别人在用的账号,请换一个 username。 SELECT id, username, real_name, employee_type, status FROM sys_user WHERE username COLLATE utf8mb4_general_ci = @username COLLATE utf8mb4_general_ci; -- 1.1 更新已有账号(仅限本脚本管理的账号) -- 只有 real_name 或 employee_type 对得上才更新,避免误改同名但无关的账号 UPDATE sys_user SET password = @password_hash, real_name = @real_name, employee_type = 'flow_manager', status = 0, update_time = NOW() WHERE username COLLATE utf8mb4_general_ci = @username COLLATE utf8mb4_general_ci AND (real_name = @real_name OR employee_type = 'flow_manager'); -- 1.2 不存在则创建 -- 若 username 已被无关账号占用,这里会因唯一键失败而中断(第 1.0 步会先提示) INSERT INTO sys_user (username, password, real_name, dept_id, employee_type, status, wecom_remind_enabled) SELECT @username, @password_hash, @real_name, 0, 'flow_manager', 0, 0 FROM DUAL WHERE NOT EXISTS ( SELECT 1 FROM sys_user WHERE username COLLATE utf8mb4_general_ci = @username COLLATE utf8mb4_general_ci ); -- 1.3 绑定 flow_manager 角色(后端接口鉴权使用) SET @user_id = ( SELECT id FROM sys_user WHERE username COLLATE utf8mb4_general_ci = @username COLLATE utf8mb4_general_ci LIMIT 1 ); INSERT INTO sys_user_role (user_id, role_id) SELECT @user_id, @flow_manager_role_id WHERE @user_id IS NOT NULL AND @flow_manager_role_id IS NOT NULL AND NOT EXISTS ( SELECT 1 FROM sys_user_role WHERE user_id = @user_id AND role_id = @flow_manager_role_id ); -- ===================================================================== -- 2) 校验:应返回 1 行,employee_type 为 flow_manager, -- role_code 为 flow_manager,pwd_len=60、pwd_prefix=$2y$ -- ===================================================================== SELECT u.id AS user_id, u.username, u.employee_type, u.status AS user_status, CHAR_LENGTH(u.password) AS pwd_len, LEFT(u.password, 4) AS pwd_prefix, r.id AS role_id, r.role_code, r.role_name, r.status AS role_status FROM sys_user u LEFT JOIN sys_user_role ur ON ur.user_id = u.id LEFT JOIN sys_role r ON r.id = ur.role_id WHERE u.username COLLATE utf8mb4_general_ci = 'wlxsy_flow' ORDER BY u.username;