一丶数据库的设计
以下是需要的表:
1.人员表 2.角色表 3.菜单表 4.操作方法表(菜单的操作方法)
5.人员角色中间表 6.菜单操作方法中间表 7.菜单-操作方法-角色 中间表
数据库的字段:
人员表(SysPerson): ID 主键 Name 名称 PassWord 密码 CreateTime 时间
角色表(SysRole):ID 主键 Name 名称 Desc 描述 CreateTime 时间
菜单表(SysMenu):ID 主键 Name 名称 ParentId 上级菜单 CreateTime 时间
操作方法表(SysOperation):ID 主键 Name 名称 Function 方法 Iconic 图标 Remark 描述 CreateTime 时间
人员角色中间表(SysRoleSysPerson):SysPersonId 人员ID SysRoleId 角色ID
菜单操作方法中间表(SysMenuSysOperation):SysMenuId 菜单ID SysOperationId 操作方法ID
菜单-操作方法-角色中间表(SysMenuSysRoleSysOperation):Id 主键 SysMenuId 菜单 SysOperationId 操作方法 SysRoleId角色
二丶SQL语句测试
1.添加人员(Sysperson)
insert SysPerson(Name,Password,createTime) VALUES('pyx','123456',GETDATE())
SELECT Id,Name,Password,CreateTime from SysPerson
SELECT Id,Name,Password,CreateTime from SysPerson
2.添加角色(SysRole)
insert SysRole VALUES('超级管理员','具有全部的菜单和操作',GETDATE())
SELECT Id,Name,[Description] as [Desc],CreateTime from SysRole
SELECT Id,Name,[Description] as [Desc],CreateTime from SysRole
3.人员绑定角色 往SysRoleSysPerson绑定数据
INSERT SysRoleSysPerson VALUES('16072917555634820201f8ba5c925','1307311605187265267d33f281da6')//这两条数据是刚刚插入的人员和角色ID
查询人员对应的角色
SELECT SysPersonId,SysroleID,roles.Name as SysRoleName,person.Name as SysPersonName From SysRoleSysPerson sysroleperson LEFT JOIN SysPerson person ON person.Id=sysroleperson.SysPersonId LEFT JOIN SysRole roles on roles.Id=sysroleperson.SysRoleId
4.添加菜单(SysMenu)
insert SysMenu values('系统设置',NULL,GETDATE()) --当前返回的ID为 160728135905832558848862ae11d
insert SysMenu values('人员管理','160728135905832558848862ae11d',GETDATE())
查询新建的菜单
SELECT Id,Name,ParentId,CreateTime from SysMenu
5.添加操作方法(SysOperation)
insert SysOperation VALUES('创建','flexiCreate','btn btn-success',NULL,GETDATE())
insert SysOperation VALUES('修改','flexiEdit','btn btn-primary',NULL,GETDATE())
insert SysOperation VALUES('修改','flexiEdit','btn btn-primary',NULL,GETDATE())
查询新建的操作方法
select Id,Name,[Function],Iconic,Remark,CreateTime from SysOperation
6.菜单绑定操作方法(SysMenuSysOperation)
insert SysMenuSysOperation VALUES('160728135939064459621fd0eb6f1','1310181134390713796477e27c097') --人员管理-创建方法
insert SysMenuSysOperation VALUES('160728135939064459621fd0eb6f1','131018155411503738459acd560d4') --人员管理-修改方法
查询菜单对应的方法
7. 菜单-操作方法-角色 中间表(SysMenuSysRoleSysOperation)
当往这张表插入数据的时候,查询出当前角色 角色里面包含了哪些菜单 菜单包含了哪些操作方法
往里面添加一组数据:当前角色为超级管理员(也就是上面添加的角色)
首先默认给超级管理添加一些菜单和菜单对应的操作方法
--这个时候我们从 SysMenuSysOperation 查询出系统设置 没有对应的其他操作方法,所有就只有对应的一个菜单
INSERT SysMenuSysRoleSysOperation VALUES('160728135905832558848862ae11d',NULL,'1307311605187265267d33f281da6') --超管理员拥有查看系统设置权限
--这个时候我们从 SysMenuSysOperation 查询人员管理 管理拥有哪些操作方法 刚刚我们第六步就操作了 绑定了两个方法 创建和修改
INSERT SysMenuSysRoleSysOperation(SysMenuId,SysOperationID,SysRoleId) VALUES('160728135939064459621fd0eb6f1',NULL,'1307311605187265267d33f281da6')--超管理员拥有查看人员管理权限
INSERT SysMenuSysRoleSysOperation(SysMenuId,SysOperationID,SysRoleId) VALUES('160728135939064459621fd0eb6f1','1310181134390713796477e27c097','1307311605187265267d33f281da6')--超管理员拥有人员管理 创建权限
INSERT SysMenuSysRoleSysOperation(SysMenuId,SysOperationID,SysRoleId) VALUES('160728135939064459621fd0eb6f1','131018155411503738459acd560d4','1307311605187265267d33f281da6')--超管理员拥有人员管理 修改权限
到这个位置,一个简单的权限系统就配置好了。
现在我们获取 超级管理员角色的一级菜单
select sro.Id,sro.SysMenuId,sysm.Name,sro.SysOperationId from [dbo].[SysMenuSysRoleSysOperation] sro RIGHT join SysMenu sysm on sysm.Id=sro.SysMenuId where 1=1 and sro.SysOperationId is null(操作方法为空表示当前(
SysMenuSysRoleSysOperation)这张中间表里面的查看菜单权限存在) and sysm.ParentId is null(ParentId为NULL就表示为一级菜单) AND sro.SysRoleId='1307311605187265267d33f281da6'
当前角色的一级菜单
获取二级菜单
select sro.Id,sro.SysMenuId,sysm.Name,sro.SysOperationId from [dbo].[SysMenuSysRoleSysOperation] sro RIGHT join SysMenu sysm on sysm.Id=sro.SysMenuId where 1=1 and sro.SysOperationId is null and sysm.ParentId ='160728135905832558848862ae11d'(父菜单ID) AND sro.SysRoleId='1307311605187265267d33f281da6'
通过菜单和角色获取对应的操作方法
select op.* From SysMenuSysRoleSysOperation roleop RIGHT JOIN SysOperation op ON op.Id=SysOperationId WHERE 1=1 and roleop.SysMenuId='160728135939064459621fd0eb6f1' AND roleop.SysRoleId='1307311605187265267d33f281da6'
暂时就记录这些。。~~~~~~~~~~~~~