员工花名册菜单修复-父级与授权.sql 1.32 KB
-- 员工花名册菜单修复(已执行过旧版 SQL、菜单不显示时用)
-- 原因常见有两类:
-- 1)F_ParentId 仍为占位符 REPLACE_WITH_ORG_PARENT_F_ID,树里挂不上「组织机构」
-- 2)BASE_AUTHORIZE 无记录(@SourceModuleId 未替换导致 INSERT 子查询为空)
--
-- 本脚本:把父级改成与「用户管理」同级,并补全与用户管理相同的角色模块授权。

SET @ModuleId = 'employee-roster-lq';

SELECT F_ParentId INTO @ParentId
FROM BASE_MODULE
WHERE F_FullName = '用户管理' AND F_Type = 2 AND F_DeleteMark IS NULL
LIMIT 1;

SELECT F_Id INTO @SourceModuleId
FROM BASE_MODULE
WHERE F_FullName = '用户管理' AND F_Type = 2 AND F_DeleteMark IS NULL
LIMIT 1;

UPDATE BASE_MODULE
SET F_ParentId = @ParentId
WHERE F_Id = @ModuleId;

INSERT INTO BASE_AUTHORIZE (
  F_Id, F_ItemType, F_ItemId, F_ObjectType, F_ObjectId, F_SortCode, F_CreatorTime, F_CreatorUserId
)
SELECT REPLACE(UUID(), '-', ''), 'module', @ModuleId, 'Role', t.F_ObjectId, 1, NOW(), 'admin'
FROM (
  SELECT DISTINCT F_ObjectId
  FROM BASE_AUTHORIZE
  WHERE F_ItemId = @SourceModuleId AND F_ItemType = 'module' AND F_ObjectType = 'Role'
) t
WHERE NOT EXISTS (
  SELECT 1 FROM BASE_AUTHORIZE b
  WHERE b.F_ItemId = @ModuleId AND b.F_ItemType = 'module'
    AND b.F_ObjectType = 'Role' AND b.F_ObjectId = t.F_ObjectId
);