设备资源管理系统-角色管理
- 用户、角色、权限关系
权限:
a:仪器设备管理
b:设备校准检修
c:设备购置计划
d:
e:
.
.
.
角色与权限:
系统管理员:
a;b;c;d;e;f;g;h;i;j;k;
高级管理员:
a;b;c;d;e;i;j;k;
业务用户:
a;b;f;g;h;i;
结论:
1、用户与角色是多对多的关系
2、权限与角色是多对多的关系
3、角色在三者之间的关系中起到承上启下的作用
- 数据库设计
用户表:
用户ID 用户姓名 登录名 所属单位
402881e43 刘备 liubei 2(上海)
1 关羽 guanyu 1(北京)
2 张飞 zhangfei 1(北京)
用户与角色的关联表:
主键ID 用户ID 角色ID 备注
1 402881e43 1
2 1 2
3 1 1
角色表:
角色ID 角色名称
1 系统管理员
2 高级管理员
3 业务用户
4 普通用户
角色与权限关联表:
角色ID 权限code(集合) 备注
1 abcdefghijk
2 abcdeijk
3 abfghi
权限表:
权限code 权限名称 父级节点权限code 父级节点权限名称
a 仪器设备管理 drvie 技术设施维护管理
b 设备校准检修 drvie 技术设施维护管理
c 设备购置计划 drvie 技术设施维护管理
d 资料图纸管理 image 技术资料图纸管理
存放到Function.xml文件中文件形式,如图:
建立2张关联表(用户与角色的关联表,角色与权限的关联表)
- 角色管理首页
操作:
1、通过“角色类型”,查询数据字典,获取页面中的角色列表。
2、读取Function.xml文件中所有的权限信息,并显示在页面上。(使用dom4j读取)
部分代码:
String parentCode = "";
List<XmlObject> list = request.getAttribute("xmlList");
for(int i=0;i<list.size;i++){
XmlObject xmlObject = list.get(i);
if(parentCode.equal(xmlObject.getParentCode())){
System.out.println(xmlObject.getName());
}
//每次遍历先走else
else{
parentCode = xmlObject.getParentCode();
System.out.println(xmlObject.getParentName());
System.out.println(xmlObject.getName());
}
}
- 角色查询
操作:
权限分配:
1、从页面中获取roleid的参数,使用roleid查询角色权限关联表,获取当前角色所具有的权限。
2、读取Function.xml配置文件,获取系统所有的权限
3、匹配:当前角色具有的权限与系统所有的权限进行匹配:
如果匹配:则页面的复选框要选中
如果不匹配:则页面的复选框不选中
使用flag字段控制:如果flag=1,则表示页面复选框选中;如果flag=0,则表示页面复选框不选中。
用户分配:
1、从页面中获取roleid的参数,使用roleid查询用户角色关联表,获取当前角色所具有的用户。
2、从用户表获取所有的在职员工
3、匹配:当前角色下的用户与所有的在职用户进行匹配:
如果匹配:则页面中复选框要选中
如果不匹配:则页面中的复选框不选中
使用roleflag字段控制:如果roleflag=1,则表示页面的复选框选中,如果roleflag=0,则表示页面复选框不选中(能否使用一条SQL语句完成上述1,2,3的操作)
- 角色新增
操作:
1、从页面上获取roleid、选中的权限name=selectoper、选中的用户name=selectuser。
2、保存角色和权限的关联表
1)通过roleid查询角色权限关联表,
如果存在记录,执行update()的操作
如果不存在记录,执行save()的操作
3、保存角色和用户的关联表
1)通过roleid组织条件,删除用户角色关联表的所有匹配roleid的记录
2)组织新增的用户和当前角色,向用户角色关联表中新增记录。