flowchart LR A[UniqueNO<br/>NName=tree] -->|取 No 作为 NodeID| B[Tree.NodeID] B --> C[listTreeForPermission<br/>返回 id=NodeID] C --> D[zTree id / pId<br/>树结构展示]
flowchart LR A[分配 NodeID] --> B[插入 ObjectRegister<br/>ObjectID=MAX+1] B --> C[Tree.ObjectID = ObjectID] C --> D[listTreeForPermission<br/>返回 objectId] D --> E[前端勾选提交 objectIds] E --> F[STPermission 写入]
勾选 MES 节点时把 sysMenuId 加入 permissionMesMenuIds;取消勾选时清理对应按钮态。
7.3 保存
savePermission 收集并提交:
收集方法
字段
collectPermissionObjectIds()
objectIds(勾选节点的 objectId,不是 id)
collectMesMenuIdsForSave()
mesMenuIds
collectMesButtonMenuIdsForSave()
mesButtonMenuIds
collectOperationPermissionsForSave()
operationPermissions
collectOperationReplaceObjectIdsForSave()
operationReplaceObjectIds
连同 roleIds、mode 一并 POST 到 /eosrole/permission/save。
8. 验证 SQL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
-- NodeID 与 ObjectID 对照 SELECT t.NodeID, RTRIM(t.NodeCaption) AS MenuCaption, t.ParentID, t.ObjectID AS TreeObjectID, o.ObjectID AS RegObjectID, o.TypeID, o.OwnerID FROM messys.dbo.Tree t LEFTJOIN messys.dbo.ObjectRegister o ON o.OwnerID = t.NodeID ORDERBY t.NodeID;
-- UniqueNO 当前序列 SELECT NName, NoFROM messys.dbo.UniqueNO WHERE NName ='tree';
SELECT r.OID AS RoleOID, r.UserName AS RoleName, p.ObjectID, o.[Object] AS ObjectName, o.TypeID, t.NodeID, RTRIM(t.NodeCaption) AS MenuCaption, p.Oprate, p.Permission FROM mesdata.dbo.STUsers r JOIN mesdata.dbo.STPermission p ON p.UserID = r.OID JOIN messys.dbo.ObjectRegister o ON p.ObjectID = o.ObjectID LEFTJOIN messys.dbo.Tree t ON o.OwnerID = t.NodeID WHERE r.OID =@RoleOID AND r.uGroup =1 AND o.TypeID =7-- 菜单/目录 ORDERBY t.NodeID, p.Oprate;
SELECT u.UserName AS UserName, r.UserName AS RoleName, RTRIM(t.NodeCaption) AS MenuCaption, p.Oprate, p.Permission FROM mesdata.dbo.STUsers u JOIN mesdata.dbo.STUserGroup ug ON ug.UserID = u.OID JOIN mesdata.dbo.STUsers r ON ug.GroupID = r.OID AND r.uGroup =1 JOIN mesdata.dbo.STPermission p ON p.UserID = r.OID JOIN messys.dbo.ObjectRegister o ON p.ObjectID = o.ObjectID AND o.TypeID =7 JOIN messys.dbo.Tree t ON o.OwnerID = t.NodeID WHERE u.OID =@UserOID AND u.uGroup =0 AND p.Oprate = N'执行'-- 菜单可见通常对应「执行」 ORDERBY r.UserName, t.NodeID;
4.3 统计各角色的菜单授权数量
1 2 3 4 5 6 7 8 9 10 11
SELECT r.OID, r.UserName AS RoleName, COUNT(DISTINCT p.ObjectID) AS MenuObjectCount, COUNT(*) AS PermissionRowCount FROM mesdata.dbo.STUsers r JOIN mesdata.dbo.STPermission p ON p.UserID = r.OID JOIN messys.dbo.ObjectRegister o ON p.ObjectID = o.ObjectID AND o.TypeID =7 WHERE r.uGroup =1 GROUPBY r.OID, r.UserName ORDERBY MenuObjectCount DESC;
SELECTDISTINCT r.OID, r.UserName AS RoleName, RTRIM(t.NodeCaption) AS MenuCaption, p.Oprate FROM messys.dbo.Tree t JOIN messys.dbo.ObjectRegister o ON o.OwnerID = t.NodeID AND o.TypeID =7 JOIN mesdata.dbo.STPermission p ON p.ObjectID = o.ObjectID JOIN mesdata.dbo.STUsers r ON p.UserID = r.OID AND r.uGroup =1 WHERE t.NodeID =@MenuNodeID ORDERBY r.UserName, p.Oprate;
4.5 对比 EOS 角色与 MES 角色(不含菜单)
1 2 3 4 5 6 7 8 9 10 11
SELECT sr.role_id, sr.role_name AS MesRoleName, sr.eos_role_id, er.UserName AS EosRoleName, er.OID AS EosRoleOID FROM mesdata.dbo.sys_role sr LEFTJOIN mesdata.dbo.STUsers er ON sr.eos_role_id = er.OID AND er.uGroup =1 WHERE sr.eos_role_id ISNOTNULL ORDERBY sr.role_id;
4.6 检查菜单节点是否已在 ObjectRegister 注册
1 2 3 4 5 6 7 8 9
SELECT t.NodeID, RTRIM(t.NodeCaption) AS MenuCaption, t.ObjectID, o.ObjectID AS RegObjectID, o.TypeID FROM messys.dbo.Tree t LEFTJOIN messys.dbo.ObjectRegister o ON o.OwnerID = t.NodeID ORDERBY t.NodeID;
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.