feat: 新增电工 APP 账号开通与密码重置功能

- 新增后端重置密码接口及前端对应操作入口
- 新增补开电工 APP 账号的更新参数
- 新增 hasAccount 字段标识电工是否开通 APP 账号
- 新增数据库菜单及角色绑定支持密码重置权限
- 移除后台角色中错误的 WORKER 和 CUSTOMER 角色
This commit is contained in:
andyesfly committed 2026-10-11 15:07:45 +08:00
1 parent 6cf6a3d5b9
commit f8117e33b6
9 files changed
+164 -18

No files matched your search

@@ -0,0 +1,14 @@
-- 移除后台角色中的「共享电工(WORKER)」「客户(CUSTOMER)」
-- 背景:电工走 worker 表、客户走 customer_account 表,均为独立账号体系,
-- 不存在对应的 sys_user,因此这两个角色挂在后台「用户管理」中是语义错误
-- (选中后永远不会关联到任何后台用户)。后台角色仅保留 ADMIN / SALESMAN。
-- 影响:sys_user_role / sys_role_menu 通过外键 ON DELETE CASCADE 自动清理。
-- 幂等:按 role_code 删除;重复执行无副作用。
BEGIN;
DELETE FROM sys_role WHERE role_code IN ('WORKER', 'CUSTOMER');
-- 重置 sys_role 自增序列到当前最大 id,避免后续插入冲突
SELECT setval('sys_role_id_seq', COALESCE((SELECT MAX(id) FROM sys_role), 1), true);
COMMIT;
@@ -0,0 +1,30 @@
-- 电工登录密码维护
-- 背景:worker 表已有 password_hash,但后台「电工登记管理」仅有新增/编辑/审核/删除,
-- 无法为存量电工重置密码,也无法为当初未开通 APP 账号的电工补开账号。
-- 本次新增按钮权限 worker:reset-password,用于控制「重置密码」操作入口。
-- 幂等:菜单用 ON CONFLICT (id) DO UPDATE;角色绑定用 ON CONFLICT DO NOTHING。
-- 注意:菜单 id 57,避开 34-56(34/36/51 为菜单项,其余为按钮/子项)。
BEGIN;
INSERT INTO sys_menu (id, parent_id, menu_name, menu_path, component, icon, sort_order, menu_type, permission, visible) VALUES
(57, 3, '重置电工密码', NULL, NULL, NULL, 11, 3, 'worker:reset-password', 1)
ON CONFLICT (id) DO UPDATE SET
parent_id = EXCLUDED.parent_id,
menu_name = EXCLUDED.menu_name,
menu_path = EXCLUDED.menu_path,
component = EXCLUDED.component,
icon = EXCLUDED.icon,
sort_order = EXCLUDED.sort_order,
menu_type = EXCLUDED.menu_type,
permission = EXCLUDED.permission,
visible = EXCLUDED.visible;
-- 角色绑定:ADMIN(role_id=1)拥有 57
INSERT INTO sys_role_menu (role_id, menu_id) VALUES
(1, 57)
ON CONFLICT (role_id, menu_id) DO NOTHING;
-- 重置 sys_menu 自增序列,避免后续插入 id 冲突
SELECT setval('sys_menu_id_seq', 57, true);
COMMIT;