员工花名册菜单修复-父级与授权.sql
1.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
-- 员工花名册菜单修复(已执行过旧版 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
);