33 lines
1.6 KiB
MySQL
33 lines
1.6 KiB
MySQL
|
|
-- =============================================================================
|
|||
|
|
-- 一次性迁移:物料“出库/借库需审批”开关的独立权限项
|
|||
|
|
-- 权限码 material_list:isApprovalRequired(操作级)
|
|||
|
|
-- 仅授予:SUPER_ADMIN(超管)、SUPERVISOR(主管)。其余角色不可见、不可修改。
|
|||
|
|
-- 幂等:重复执行安全(先收回“非主管/超管”的该权限,再确保主管/超管持有)。
|
|||
|
|
-- 执行: docker exec -i inventory_db psql -U test -d inventory_system < 本文件
|
|||
|
|
-- =============================================================================
|
|||
|
|
BEGIN;
|
|||
|
|
|
|||
|
|
-- 1) 注册权限元素(幂等)
|
|||
|
|
INSERT INTO sys_element (menu_code, name, code, element_type)
|
|||
|
|
SELECT 'material_list', '出库/借库需审批(修改)', 'material_list:isApprovalRequired', 'operation'
|
|||
|
|
WHERE NOT EXISTS (SELECT 1 FROM sys_element WHERE code = 'material_list:isApprovalRequired');
|
|||
|
|
|
|||
|
|
-- 2) 收回除主管/超管外所有角色的该权限(幂等)
|
|||
|
|
DELETE FROM sys_role_permission
|
|||
|
|
WHERE target_code = 'material_list:isApprovalRequired'
|
|||
|
|
AND type = 'element'
|
|||
|
|
AND role_code NOT IN ('SUPER_ADMIN', 'SUPERVISOR');
|
|||
|
|
|
|||
|
|
-- 3) 确保主管/超管持有(幂等)
|
|||
|
|
INSERT INTO sys_role_permission (role_code, target_code, type, company_name)
|
|||
|
|
SELECT v.role_code, 'material_list:isApprovalRequired', 'element', NULL
|
|||
|
|
FROM (VALUES ('SUPER_ADMIN'), ('SUPERVISOR')) AS v(role_code)
|
|||
|
|
WHERE NOT EXISTS (
|
|||
|
|
SELECT 1 FROM sys_role_permission r
|
|||
|
|
WHERE r.role_code = v.role_code
|
|||
|
|
AND r.target_code = 'material_list:isApprovalRequired'
|
|||
|
|
AND r.type = 'element'
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
COMMIT;
|