-- =============================================
|
-- 考勤规则:导入按钮权限点
|
--
|
-- 背景:新增 /hrm/attendance/rule/import 与 /get-import-template 两个接口,
|
-- 权限码 hrm:attendance-rule:import 在 system_menu 中不存在,
|
-- 会导致非超级管理员调用时 403。
|
--
|
-- 做法:补一个 type=3 的按钮权限点(不显示在侧栏),并授权给所有现有启用角色,
|
-- 与既有「考勤规则查询/新增/修改/删除/导出」的授权范围保持一致。
|
--
|
-- 动态 id(MAX(id)+1),可重复执行(幂等)。
|
-- =============================================
|
SET NAMES utf8mb4;
|
|
-- 1. 定位父菜单:考勤规则(优先按 path,兜底按既有权限码反查)
|
SET @hrm := (SELECT id FROM `system_menu` WHERE `path` IN ('hrm','/hrm') AND `deleted`=b'0' LIMIT 1);
|
SET @att := (SELECT id FROM `system_menu` WHERE `path`='attendance' AND `parent_id`=@hrm AND `deleted`=b'0' LIMIT 1);
|
SET @att_rule := (SELECT `parent_id` FROM `system_menu`
|
WHERE `permission`='hrm:attendance-rule:query' AND `deleted`=b'0' LIMIT 1);
|
SET @att_rule := IFNULL(@att_rule,
|
(SELECT id FROM `system_menu` WHERE `path`='rule' AND `parent_id`=@att AND `deleted`=b'0' LIMIT 1));
|
|
-- 2. 插入权限点
|
SET @perm_exists := (SELECT COUNT(*) FROM `system_menu` WHERE `permission`='hrm:attendance-rule:import');
|
SET @import_menu_id := IFNULL((SELECT MAX(id) FROM `system_menu`), 0) + 1;
|
|
INSERT INTO `system_menu` (`id`,`name`,`permission`,`type`,`sort`,`parent_id`,`path`,`icon`,`component`,
|
`component_name`,`status`,`visible`,`keep_alive`,`always_show`,
|
`creator`,`create_time`,`updater`,`update_time`,`deleted`)
|
SELECT @import_menu_id, '考勤规则导入', 'hrm:attendance-rule:import', 3, 6, @att_rule, '', '', '', NULL,
|
0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
|
FROM DUAL
|
WHERE @perm_exists = 0 AND @att_rule IS NOT NULL;
|
|
-- 3. 授权给所有现有启用角色
|
SET @menu_id := (SELECT id FROM `system_menu` WHERE `permission`='hrm:attendance-rule:import' AND `deleted`=b'0' LIMIT 1);
|
|
INSERT INTO `system_role_menu` (`role_id`,`menu_id`,`creator`,`create_time`,`updater`,`update_time`,`deleted`)
|
SELECT r.`id`, @menu_id, '1', NOW(), '1', NOW(), b'0'
|
FROM `system_role` r
|
WHERE @menu_id IS NOT NULL
|
AND r.`deleted` = b'0'
|
AND r.`status` = 0
|
AND NOT EXISTS (SELECT 1 FROM `system_role_menu` rm
|
WHERE rm.`role_id` = r.`id` AND rm.`menu_id` = @menu_id AND rm.`deleted` = b'0');
|
|
-- 4. 核对
|
SELECT id, name, permission, type, parent_id FROM `system_menu`
|
WHERE permission = 'hrm:attendance-rule:import';
|
|
SELECT r.id AS role_id, r.name AS role_name, rm.menu_id
|
FROM `system_role` r
|
LEFT JOIN `system_role_menu` rm ON rm.role_id = r.id AND rm.menu_id = @menu_id AND rm.deleted = b'0'
|
WHERE r.deleted = b'0' AND r.status = 0;
|
|
SELECT 'hrm:attendance-rule:import 权限点初始化完成' AS result;
|