20261028_qqflow_create_zhc_wm_merchant_accounts.sql 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. -- =====================================================================
  2. -- 为「四川智和诚」「湖北威马」商户创建 qqflow 流程管理员账号
  3. --
  4. -- 执行库:qqflow 审批引擎库(qqflowengine)
  5. -- 执行顺序:先执行本脚本,再在 wl-scrm 库执行
  6. -- wl-scrm-center/sql/20261028_wlscrm_bind_zhc_wm_qqflow_accounts.sql
  7. --
  8. -- 账号约定(两个脚本必须一致):
  9. -- 四川智和诚 username = zhc_flow,明文密码 = zhc123456
  10. -- 湖北威马 username = wm_flow ,明文密码 = wm123456
  11. --
  12. -- qqflow 密码使用 BCrypt 存储,哈希由下列命令生成(勿替换成明文):
  13. -- htpasswd -bnBC 10 "" 'zhc123456' | tr -d ':\n'
  14. -- htpasswd -bnBC 10 "" 'wm123456' | tr -d ':\n'
  15. --
  16. -- 说明:
  17. -- · qqflow 前端菜单看 sys_user.employee_type,必须为 flow_manager;
  18. -- · qqflow 后端接口 @PreAuthorize 看 sys_user_role → sys_role.role_code,
  19. -- 必须同时绑定 flow_manager 角色(本脚本会补齐);
  20. -- · 脚本幂等:重复执行会重置账号密码并补齐角色,不会重复插入。
  21. -- =====================================================================
  22. -- 执行前确认当前库:必须是 qqflowengine。
  23. SELECT DATABASE() AS current_database;
  24. -- -------------------------------------------------------------------
  25. -- 0) 公共准备:确保 flow_manager 角色存在且启用
  26. -- -------------------------------------------------------------------
  27. INSERT INTO sys_role (role_code, role_name, role_scope, parent_id, dept_id, status)
  28. SELECT 'flow_manager', '流程管理员', 'tenant', 0, 0, 1
  29. WHERE NOT EXISTS (
  30. SELECT 1 FROM sys_role
  31. WHERE role_code COLLATE utf8mb4_general_ci = 'flow_manager' COLLATE utf8mb4_general_ci
  32. );
  33. UPDATE sys_role
  34. SET status = 1
  35. WHERE role_code COLLATE utf8mb4_general_ci = 'flow_manager' COLLATE utf8mb4_general_ci;
  36. SET @flow_manager_role_id = (
  37. SELECT id FROM sys_role
  38. WHERE role_code COLLATE utf8mb4_general_ci = 'flow_manager' COLLATE utf8mb4_general_ci
  39. LIMIT 1
  40. );
  41. -- =====================================================================
  42. -- 1) 四川智和诚(tenancy_id = 119304923710091)
  43. -- =====================================================================
  44. SET @username = 'zhc_flow';
  45. SET @password_hash = '$2y$10$PffgaT28otYLtLyo5nftKOoQW8Rl9PekZKJDGVXnb9klH1LeoUcUa';
  46. SET @real_name = '四川智和诚流程管理员';
  47. -- 1.0 执行前检查:用户名是否已被占用
  48. -- 有结果时先确认是不是本次要重置的账号;如果是别人在用的账号,请换一个 username。
  49. SELECT id, username, real_name, employee_type, status
  50. FROM sys_user
  51. WHERE username COLLATE utf8mb4_general_ci = @username COLLATE utf8mb4_general_ci;
  52. -- 1.1 更新已有账号(仅限本脚本管理的账号)
  53. -- 只有 real_name 或 employee_type 对得上才更新,避免误改同名但无关的账号
  54. UPDATE sys_user
  55. SET password = @password_hash,
  56. real_name = @real_name,
  57. employee_type = 'flow_manager',
  58. status = 0,
  59. update_time = NOW()
  60. WHERE username COLLATE utf8mb4_general_ci = @username COLLATE utf8mb4_general_ci
  61. AND (real_name = @real_name OR employee_type = 'flow_manager');
  62. -- 1.2 不存在则创建
  63. -- 若 username 已被无关账号占用,这里会因唯一键失败而中断(第 1.0 步会先提示)
  64. INSERT INTO sys_user
  65. (username, password, real_name, dept_id, employee_type, status, wecom_remind_enabled)
  66. SELECT @username, @password_hash, @real_name, 0, 'flow_manager', 0, 0
  67. FROM DUAL
  68. WHERE NOT EXISTS (
  69. SELECT 1 FROM sys_user
  70. WHERE username COLLATE utf8mb4_general_ci = @username COLLATE utf8mb4_general_ci
  71. );
  72. -- 1.3 绑定 flow_manager 角色(后端接口鉴权使用)
  73. SET @user_id = (
  74. SELECT id FROM sys_user
  75. WHERE username COLLATE utf8mb4_general_ci = @username COLLATE utf8mb4_general_ci
  76. LIMIT 1
  77. );
  78. INSERT INTO sys_user_role (user_id, role_id)
  79. SELECT @user_id, @flow_manager_role_id
  80. WHERE @user_id IS NOT NULL
  81. AND @flow_manager_role_id IS NOT NULL
  82. AND NOT EXISTS (
  83. SELECT 1 FROM sys_user_role
  84. WHERE user_id = @user_id
  85. AND role_id = @flow_manager_role_id
  86. );
  87. -- =====================================================================
  88. -- 2) 湖北威马(tenancy_id = 119306205010001)
  89. -- =====================================================================
  90. SET @username = 'wm_flow';
  91. SET @password_hash = '$2y$10$9EIvGo/0AFwdrPzglk9OBuLXRzyfowiI4nzm8Gx1euh1ZDkN05vyq';
  92. SET @real_name = '湖北威马流程管理员';
  93. -- 2.0 执行前检查:用户名是否已被占用
  94. SELECT id, username, real_name, employee_type, status
  95. FROM sys_user
  96. WHERE username COLLATE utf8mb4_general_ci = @username COLLATE utf8mb4_general_ci;
  97. -- 2.1 更新已有账号(仅限本脚本管理的账号)
  98. UPDATE sys_user
  99. SET password = @password_hash,
  100. real_name = @real_name,
  101. employee_type = 'flow_manager',
  102. status = 0,
  103. update_time = NOW()
  104. WHERE username COLLATE utf8mb4_general_ci = @username COLLATE utf8mb4_general_ci
  105. AND (real_name = @real_name OR employee_type = 'flow_manager');
  106. -- 2.2 不存在则创建
  107. INSERT INTO sys_user
  108. (username, password, real_name, dept_id, employee_type, status, wecom_remind_enabled)
  109. SELECT @username, @password_hash, @real_name, 0, 'flow_manager', 0, 0
  110. FROM DUAL
  111. WHERE NOT EXISTS (
  112. SELECT 1 FROM sys_user
  113. WHERE username COLLATE utf8mb4_general_ci = @username COLLATE utf8mb4_general_ci
  114. );
  115. -- 2.3 绑定 flow_manager 角色
  116. SET @user_id = (
  117. SELECT id FROM sys_user
  118. WHERE username COLLATE utf8mb4_general_ci = @username COLLATE utf8mb4_general_ci
  119. LIMIT 1
  120. );
  121. INSERT INTO sys_user_role (user_id, role_id)
  122. SELECT @user_id, @flow_manager_role_id
  123. WHERE @user_id IS NOT NULL
  124. AND @flow_manager_role_id IS NOT NULL
  125. AND NOT EXISTS (
  126. SELECT 1 FROM sys_user_role
  127. WHERE user_id = @user_id
  128. AND role_id = @flow_manager_role_id
  129. );
  130. -- =====================================================================
  131. -- 3) 校验:应返回 2 行,employee_type 均为 flow_manager,
  132. -- role_code 均为 flow_manager,pwd_len=60、pwd_prefix=$2y$
  133. -- =====================================================================
  134. SELECT u.id AS user_id,
  135. u.username,
  136. u.employee_type,
  137. u.status AS user_status,
  138. CHAR_LENGTH(u.password) AS pwd_len,
  139. LEFT(u.password, 4) AS pwd_prefix,
  140. r.id AS role_id,
  141. r.role_code,
  142. r.role_name,
  143. r.status AS role_status
  144. FROM sys_user u
  145. LEFT JOIN sys_user_role ur ON ur.user_id = u.id
  146. LEFT JOIN sys_role r ON r.id = ur.role_id
  147. WHERE u.username COLLATE utf8mb4_general_ci IN ('zhc_flow', 'wm_flow')
  148. ORDER BY u.username;