设备资源管理系统-角色管理

设备资源管理系统-角色管理

  • 用户、角色、权限关系

  

  权限:

      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)组织新增的用户和当前角色,向用户角色关联表中新增记录。

原文地址:https://www.cnblogs.com/yangml/p/3819133.html