docs(sql): add production waste-output menu migration.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
301df76c65
commit
5ec7537b92
2 files changed
+190
-470
No files matched your search
@@ -0,0 +1,166 @@
|
||||
-- 生产管理:废弃物管理(独立页面 + 独立权限码)
|
||||
-- 幂等:可重复执行
|
||||
-- 授权:已有【生产管理】PRM 下任一有效子菜单的角色 → 授予本 C/F,并补授 PRM 祖先
|
||||
|
||||
SET @tenant_no = CONVERT('zkxw' USING utf8mb4) COLLATE utf8mb4_unicode_ci;
|
||||
SET @prm_id = CONVERT('PRM00000000000000000000000000001' USING utf8mb4) COLLATE utf8mb4_unicode_ci;
|
||||
SET @menu_c = CONVERT('95300000000000000000000000000001' USING utf8mb4) COLLATE utf8mb4_unicode_ci;
|
||||
SET @menu_f = CONVERT('95300000000000000000000000000002' USING utf8mb4) COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- 1) C 菜单
|
||||
INSERT INTO sys_menu (
|
||||
id, menu_name, parent_id, menu_type, path, component, perms,
|
||||
is_frame, visible, status, tenant_no, order_num, remark,
|
||||
create_by, create_dept_id, create_time, update_by, update_time, del_flag
|
||||
)
|
||||
SELECT
|
||||
@menu_c,
|
||||
'废弃物管理',
|
||||
@prm_id,
|
||||
'C',
|
||||
'waste-output',
|
||||
'/production/waste-output/index',
|
||||
'production:waste-output:list',
|
||||
1, '1', '1', @tenant_no, 8,
|
||||
'生产看板:任务步骤废弃物产出只读汇总',
|
||||
NULL, '', NOW(), NULL, NOW(), 0
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_menu m
|
||||
WHERE m.id COLLATE utf8mb4_unicode_ci = @menu_c
|
||||
);
|
||||
|
||||
UPDATE sys_menu
|
||||
SET
|
||||
menu_name = '废弃物管理',
|
||||
parent_id = @prm_id,
|
||||
menu_type = 'C',
|
||||
path = 'waste-output',
|
||||
component = '/production/waste-output/index',
|
||||
perms = 'production:waste-output:list',
|
||||
visible = '1',
|
||||
status = '1',
|
||||
order_num = 8,
|
||||
remark = '生产看板:任务步骤废弃物产出只读汇总',
|
||||
del_flag = 0,
|
||||
update_time = NOW()
|
||||
WHERE id COLLATE utf8mb4_unicode_ci = @menu_c;
|
||||
|
||||
-- 2) F 按钮
|
||||
INSERT INTO sys_menu (
|
||||
id, menu_name, parent_id, menu_type, path, component, perms,
|
||||
is_frame, visible, status, tenant_no, order_num, remark,
|
||||
create_by, create_dept_id, create_time, update_by, update_time, del_flag
|
||||
)
|
||||
SELECT
|
||||
@menu_f,
|
||||
'废弃物查询',
|
||||
@menu_c,
|
||||
'F',
|
||||
'',
|
||||
'',
|
||||
'production:waste-output:list',
|
||||
1, '0', '1', @tenant_no, 1,
|
||||
'生产侧废弃物列表查询',
|
||||
NULL, '', NOW(), NULL, NOW(), 0
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_menu m
|
||||
WHERE m.id COLLATE utf8mb4_unicode_ci = @menu_f
|
||||
);
|
||||
|
||||
UPDATE sys_menu
|
||||
SET
|
||||
menu_name = '废弃物查询',
|
||||
parent_id = @menu_c,
|
||||
menu_type = 'F',
|
||||
path = '',
|
||||
component = '',
|
||||
perms = 'production:waste-output:list',
|
||||
visible = '0',
|
||||
status = '1',
|
||||
order_num = 1,
|
||||
remark = '生产侧废弃物列表查询',
|
||||
del_flag = 0,
|
||||
update_time = NOW()
|
||||
WHERE id COLLATE utf8mb4_unicode_ci = @menu_f;
|
||||
|
||||
-- 3) 目标角色:已有 PRM 下任一有效子菜单授权
|
||||
-- MySQL 5.7:UPDATE 目标表不可在同句 FROM/EXISTS 中直接引用自身,须用派生表
|
||||
|
||||
-- 3a) 恢复软删的 PRM / C / F 授权
|
||||
UPDATE sys_role_menu rm
|
||||
INNER JOIN sys_role r
|
||||
ON r.id COLLATE utf8mb4_unicode_ci = rm.role_id COLLATE utf8mb4_unicode_ci
|
||||
AND r.del_flag = 0
|
||||
AND r.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no
|
||||
INNER JOIN (
|
||||
SELECT DISTINCT rm2.role_id AS role_id
|
||||
FROM sys_role_menu rm2
|
||||
INNER JOIN sys_menu m2
|
||||
ON m2.id COLLATE utf8mb4_unicode_ci = rm2.menu_id COLLATE utf8mb4_unicode_ci
|
||||
AND m2.del_flag = 0
|
||||
AND m2.parent_id COLLATE utf8mb4_unicode_ci = @prm_id
|
||||
WHERE rm2.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no
|
||||
AND rm2.del_flag = 0
|
||||
) eligible
|
||||
ON eligible.role_id COLLATE utf8mb4_unicode_ci = r.id COLLATE utf8mb4_unicode_ci
|
||||
SET
|
||||
rm.del_flag = 0,
|
||||
rm.update_time = NOW(),
|
||||
rm.remark = 'grant production waste-output to PRM roles'
|
||||
WHERE rm.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no
|
||||
AND rm.del_flag = 1
|
||||
AND rm.menu_id COLLATE utf8mb4_unicode_ci IN (@prm_id, @menu_c, @menu_f);
|
||||
|
||||
-- 3b) 插入缺失授权(PRM + C + F)
|
||||
INSERT INTO sys_role_menu (
|
||||
id, role_id, menu_id, tenant_no, order_num, remark,
|
||||
create_by, create_dept_id, create_time, update_by, update_time, del_flag
|
||||
)
|
||||
SELECT
|
||||
UPPER(MD5(CONCAT(src.role_id, '|', src.menu_id))),
|
||||
src.role_id,
|
||||
src.menu_id,
|
||||
@tenant_no,
|
||||
0,
|
||||
'grant production waste-output to PRM roles',
|
||||
'admin',
|
||||
'',
|
||||
NOW(),
|
||||
NULL,
|
||||
NOW(),
|
||||
0
|
||||
FROM (
|
||||
SELECT
|
||||
r.id AS role_id,
|
||||
x.menu_id AS menu_id
|
||||
FROM sys_role r
|
||||
INNER JOIN (
|
||||
SELECT @prm_id AS menu_id
|
||||
UNION ALL SELECT @menu_c
|
||||
UNION ALL SELECT @menu_f
|
||||
) x
|
||||
INNER JOIN (
|
||||
SELECT DISTINCT rm2.role_id AS role_id
|
||||
FROM sys_role_menu rm2
|
||||
INNER JOIN sys_menu m2
|
||||
ON m2.id COLLATE utf8mb4_unicode_ci = rm2.menu_id COLLATE utf8mb4_unicode_ci
|
||||
AND m2.del_flag = 0
|
||||
AND m2.parent_id COLLATE utf8mb4_unicode_ci = @prm_id
|
||||
WHERE rm2.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no
|
||||
AND rm2.del_flag = 0
|
||||
) eligible
|
||||
ON eligible.role_id COLLATE utf8mb4_unicode_ci = r.id COLLATE utf8mb4_unicode_ci
|
||||
INNER JOIN sys_menu m
|
||||
ON m.id COLLATE utf8mb4_unicode_ci = x.menu_id
|
||||
AND m.del_flag = 0
|
||||
WHERE r.del_flag = 0
|
||||
AND r.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no
|
||||
) src
|
||||
LEFT JOIN sys_role_menu existing
|
||||
ON existing.role_id COLLATE utf8mb4_unicode_ci = src.role_id COLLATE utf8mb4_unicode_ci
|
||||
AND existing.menu_id COLLATE utf8mb4_unicode_ci = src.menu_id COLLATE utf8mb4_unicode_ci
|
||||
AND existing.tenant_no COLLATE utf8mb4_unicode_ci = @tenant_no
|
||||
AND existing.del_flag = 0
|
||||
WHERE existing.id IS NULL;
|
||||
Reference in new issue
Block a user