Blame view

项目文档相关/sql/2026-04-03/员工花名册菜单修复-父级与授权.sql 1.32 KB
db9c79c0   “wangming”   feat: punch-based...
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、菜单不显示时用)
  -- 原因常见有两类:
  -- 1F_ParentId 仍为占位符 REPLACE_WITH_ORG_PARENT_F_ID,树里挂不上「组织机构」
  -- 2BASE_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
  );