fix(menu): 修复菜单管理编辑无法保存与新增 500 - 根因一:MenuService create/update 以 snake_case 列名作 Sequelize 写入键而实体属性为 camelCase,导致写入被静默忽略(更新假成功)或 NOT NULL 报错(新增 500),改为 camelCase 属性名;根因二:sys_menu 列默认值指向历史遗留重复序列 sys_menu_id_seq1 且未推进,新增菜单 id 冲突,生产库已一次性 setval 同步(max(id)=64,并核对 sys_role/sys_user 序列),db_seed.sql 全部 setval 改为 pg_get_serial_sequence() 形式兼容不同环境序列名;接口与浏览器端到端验证通过(新增→改名→持久化→清理)
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
This commit is contained in:
1 parent
44fc9a1d54
commit
7ff2405634
5 files changed
+72
-17
No files matched your search
@@ -43,7 +43,7 @@ ON CONFLICT (id) DO UPDATE SET
|
||||
DELETE FROM sys_role WHERE role_code IN ('WORKER', 'CUSTOMER');
|
||||
|
||||
-- 重置 sys_role 自增序列
|
||||
SELECT setval('sys_role_id_seq', 2, true);
|
||||
SELECT setval(pg_get_serial_sequence('sys_role', 'id'), GREATEST((SELECT MAX(id) FROM sys_role), 2), true);
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- 2. 初始菜单(顶级菜单,显式指定 id:1-6,系统管理/运营派单为目录类型 menu_type=1,其余为 menu_type=2)
|
||||
@@ -185,7 +185,7 @@ ON CONFLICT (id) DO UPDATE SET
|
||||
visible = EXCLUDED.visible;
|
||||
|
||||
-- 重置 sys_menu 自增序列
|
||||
SELECT setval('sys_menu_id_seq', 50, true);
|
||||
SELECT setval(pg_get_serial_sequence('sys_menu', 'id'), GREATEST((SELECT MAX(id) FROM sys_menu), 50), true);
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- 3. 初始字典(sys_dict 无业务唯一键,清空重建以支持幂等执行)
|
||||
@@ -252,7 +252,7 @@ ON CONFLICT (id) DO UPDATE SET
|
||||
status = EXCLUDED.status;
|
||||
|
||||
-- 重置 sys_user 自增序列
|
||||
SELECT setval('sys_user_id_seq', 1, true);
|
||||
SELECT setval(pg_get_serial_sequence('sys_user', 'id'), GREATEST((SELECT MAX(id) FROM sys_user), 1), true);
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- 5. 用户-角色绑定:admin → ADMIN
|
||||
@@ -328,7 +328,7 @@ INSERT INTO sys_role_menu (role_id, menu_id) VALUES
|
||||
ON CONFLICT (role_id, menu_id) DO NOTHING;
|
||||
|
||||
-- 重置 sys_menu 自增序列(覆盖到 61)
|
||||
SELECT setval('sys_menu_id_seq', 61, true);
|
||||
SELECT setval(pg_get_serial_sequence('sys_menu', 'id'), GREATEST((SELECT MAX(id) FROM sys_menu), 61), true);
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- 8a. 设备监控下的智电改造线路台账菜单(id=61,挂设备监控 parent_id=4)
|
||||
@@ -386,7 +386,7 @@ INSERT INTO sys_role_menu (role_id, menu_id) VALUES
|
||||
ON CONFLICT (role_id, menu_id) DO NOTHING;
|
||||
|
||||
-- 重置 sys_menu 自增序列
|
||||
SELECT setval('sys_menu_id_seq', 57, true);
|
||||
SELECT setval(pg_get_serial_sequence('sys_menu', 'id'), GREATEST((SELECT MAX(id) FROM sys_menu), 57), true);
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- 10. 通知规则扫描任务种子(sys_job,按 job_key 幂等)
|
||||
@@ -521,7 +521,7 @@ INSERT INTO sys_role_menu (role_id, menu_id) VALUES
|
||||
ON CONFLICT (role_id, menu_id) DO NOTHING;
|
||||
|
||||
-- 重置 sys_menu 自增序列(覆盖到 62)
|
||||
SELECT setval('sys_menu_id_seq', GREATEST((SELECT MAX(id) FROM sys_menu), 62), true);
|
||||
SELECT setval(pg_get_serial_sequence('sys_menu', 'id'), GREATEST((SELECT MAX(id) FROM sys_menu), 62), true);
|
||||
|
||||
-- 智电网关同步任务种子(sys_job,按 job_key 幂等;默认每 10 分钟)
|
||||
INSERT INTO sys_job (job_key, job_name, cron_expression, params, retry_times, retry_interval, status, remark) VALUES
|
||||
@@ -574,7 +574,7 @@ INSERT INTO sys_role_menu (role_id, menu_id) VALUES
|
||||
ON CONFLICT (role_id, menu_id) DO NOTHING;
|
||||
|
||||
-- 重置 sys_menu 自增序列(覆盖到 64)
|
||||
SELECT setval('sys_menu_id_seq', GREATEST((SELECT MAX(id) FROM sys_menu), 64), true);
|
||||
SELECT setval(pg_get_serial_sequence('sys_menu', 'id'), GREATEST((SELECT MAX(id) FROM sys_menu), 64), true);
|
||||
|
||||
COMMIT;
|
||||
|
||||
|
||||
Reference in new issue
Block a user