Java全栈开发---Java ERP系统开发:商业ERP(十四)ERP系统的权限分配

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!
public List getRoles() {

return roles;

}

public void setRoles(List roles) {

this.roles = roles;

}

(4 )修改emp.hbm.xml

在这里插入图片描述

3、角色权限设置

(1)需求分析

在这里插入图片描述

(2)tree控件(树形结构)
a、在wabapp下创建roleMenuSet.html文件

在当前文件夹当中引入roleMenuSet.js

在这里插入图片描述

b、在wabapp下的js下创建roleMenuSet.js文件

在这里插入图片描述

认识tree控件

在这里插入图片描述

(3)代码实现
01、Tree控件显示菜单
1)在emp_entity构建实体类tree

在这里插入图片描述

package com.itzheng.erp.entity;

import java.util.List;

/*

  • 树形菜单数据实体

*/

public class Tree {

/*

  • id:节点ID,对加载远程数据很重要。

  • text:显示节点文本。

  • checked:表示该节点是否被选中。

  • children:一个节点数组声明了若干节点。

*/

private String id;// 菜单ID

private String text;// 菜单名称

private boolean checked;// 是否被选中

private List children;// 被选中

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getText() {

return text;

}

public void setText(String text) {

this.text = text;

}

public boolean isChecked() {

return checked;

}

public void setChecked(boolean checked) {

this.checked = checked;

}

public List getChildren() {if (null == children) {

if (null == children) {

//确保调用添加二级菜单出现空指针异常

children = new ArrayList();

}

return children;

}

public void setChildren(List children) {

this.children = children;

}

@Override

public String toString() {

return “Tree [id=” + id + “, text=” + text + “, checked=” + checked + “, children=” + children + “]”;

}

}

2)业务层实现

在IRoleBiz下添加方法,并在RoleBiz实现类当中实现该方法

在这里插入图片描述

IRoleBiz

package com.itzheng.erp.biz.impl;

import java.util.ArrayList;

import java.util.List;

import com.itzheng.erp.biz.IRoleBiz;

import com.itzheng.erp.dao.IMenuDao;

import com.itzheng.erp.dao.IRoleDao;

import com.itzheng.erp.entity.Menu;

import com.itzheng.erp.entity.Role;

import com.itzheng.erp.entity.Tree;

/**

  • 角色业务逻辑类

  • @author Administrator

*/

public class RoleBiz extends BaseBiz implements IRoleBiz {

private IRoleDao roleDao;

private IMenuDao menuDao;

public void setMenuDao(IMenuDao menuDao) {

this.menuDao = menuDao;

}

public void setRoleDao(IRoleDao roleDao) {

this.roleDao = roleDao;

setBaseDao(roleDao);

}

@Override

public List readRoleMenus() {

List treeList = new ArrayList();

//查询出所有的菜单

Menu root = menuDao.get(“0”);

Tree t1 = null;

Tree t2 = null;

//一级菜单

for(Menu m:root.getMenus()) {

t1 = new Tree();

t1.setId(m.getMenuid());

t1.setText(m.getMenuname());

//二级菜单

for(Menu m2 : m.getMenus()) {

t2 = new Tree();

t2.setId(m2.getMenuid());

t2.setText(m2.getMenuname());

t1.getChildren().add(t2);

}

treeList.add(t1);

}

return treeList;

}

}

设置对应的配置文件applicationContext_biz.xml

在这里插入图片描述

3)Action实现RoleAction

在这里插入图片描述

package com.itzheng.erp.action;

import java.util.List;

import com.alibaba.fastjson.JSON;

import com.itzheng.erp.biz.IRoleBiz;

import com.itzheng.erp.entity.Role;

import com.itzheng.erp.entity.Tree;

/**

  • 角色Action

  • @author Administrator

*/

public class RoleAction extends BaseAction {

private IRoleBiz roleBiz;

public void setRoleBiz(IRoleBiz roleBiz) {

this.roleBiz = roleBiz;

setBaseBiz(roleBiz);

}

/*

  • 获取角色菜单权限

*/

public void readRoleMenus() {

List menus = roleBiz.readRoleMenus();

write(JSON.toJSONString(menus));

}

}

4)修改readRoleMenu.js

在这里插入图片描述

$(function(){

$(‘#tree’).tree({

url:‘role_readRoleMenus’,

animate:true,

checkbox:true

})

});

5)访问页面

http://localhost:8080/erp/roleMenuSet.html

在这里插入图片描述

02、设置菜单参数设置选中与未选中
1)修改IRoleBiz和RoleBiz

IRoleBiz

在这里插入图片描述

RoleBiz

在这里插入图片描述

//查询出所有的菜单

Menu root = menuDao.get(“0”);

Tree t1 = null;

Tree t2 = null;

//一级菜单

for(Menu m:root.getMenus()) {

t1 = new Tree();

t1.setId(m.getMenuid());

t1.setText(m.getMenuname());

//二级菜单

for(Menu m2 : m.getMenus()) {

t2 = new Tree();

t2.setId(m2.getMenuid());

t2.setText(m2.getMenuname());

//如果角色下包含有这个权限菜单,让其勾选

if(roleMenus.contains(m2)) {

t2.setChecked(true);

}

t1.getChildren().add(t2);

}

treeList.add(t1);

}

2)修改RoleAction

在这里插入图片描述

/*

  • 获取角色菜单权限

*/

public void readRoleMenus() {

List menus = roleBiz.readRoleMenus(getId());

write(JSON.toJSONString(menus));

}

3)修改roleMenuSet.js

在这里插入图片描述

$(function(){

$(‘#tree’).tree({

url:‘role_readRoleMenus?id=1’,

animate:true,

checkbox:true

})

});

再次访问

在这里插入图片描述

03、级联显示角色菜单
1)修改roleMenuSet.html

在这里插入图片描述

角色权限设置

href=“ui/themes/default/easyui.css”>

    2)修改roleMenuSet.js

    在这里插入图片描述

    $(function(){

    $(‘#tree’).tree({

    animate:true,

    checkbox:true

    })

    $(‘#grid’).datagrid({

    url:‘role_list’,

    columns:[[

    {field:‘uuid’,title:‘编号’,width:‘100’},

    {field:‘name’,title:‘名称’,width:‘100’}

    ]],

    singleSelect:true,

    onClickRow:function(rowIndex,rowData){

    $(‘#tree’).tree({

    url:‘role_readRoleMenus?id=’+rowData.uuid,

    animate:true,

    checkbox:true

    })

    }

    })

    });

    04、角色菜单提交保存
    1)修改IRoleBiz和RoleBiz

    IRoleBiz

    在这里插入图片描述

    package com.itzheng.erp.biz;

    import java.util.List;

    import com.itzheng.erp.entity.Role;

    import com.itzheng.erp.entity.Tree;

    /**

    • 角色业务逻辑层接口

    • @author Administrator

    */

    public interface IRoleBiz extends IBaseBiz{

    //获取角色菜单权限

    //uuid 角色编号

    List readRoleMenus(Long uuid);

    /*

    • 更新角色权限

    • uuid角色编号

    • checkedStr 勾选中的菜单ID字符串,以逗号分隔

    */

    public void updateRoleMenus(Long uuid,String checkedStr);

    }

    RoleBiz

    在这里插入图片描述

    /*

    • 更新角色权限

    • uuid角色编号

    • checkedStr 勾选中的菜单ID字符串,以逗号分隔

    */

    public void updateRoleMenus(Long uuid,String checkedStr) {

    //得到角色信息,进入持久化状态,后的对对象的操作都会保存到数据库当中

    Role role = roleDao.get(uuid);

    //清除角色下的菜单权限(delete from role_menu where roleuuid=?)

    role.setMenus(new ArrayList

    ());

    String[] ids = checkedStr.split(“,”);

    Menu menu = null;

    for (String id : ids) {

    menu = menuDao.get(id);

    //保存角色下的菜单权限:insert into role_menu

    role.getMenus().add(menu);

    }

    }

    2)修改RoleAction

    在这里插入图片描述

    private String checkedStr;//勾选中的菜单ID字符串,以逗号分隔

    public String getCheckedStr() {

    return checkedStr;

    }

    public void setCheckedStr(String checkedStr) {

    this.checkedStr = checkedStr;

    }

    /*

    • 更新角色权限

    • uuid角色编号

    • checkedStr 勾选中的菜单ID字符串,以逗号分隔

    */

    public void updateRoleMenus() {

    try {

    roleBiz.updateRoleMenus(getId(), checkedStr);

    write(ajaxReturn(true, “更新成功”));

    } catch (Exception e) {

    write(ajaxReturn(false, “更新失败”));

    // TODO: handle exception

    e.printStackTrace();

    }

    }

    3)roleMenuSet.html

    在这里插入图片描述

    角色权限设置

    href=“ui/themes/default/easyui.css”>

      保存

      3)roleMenuSet.js

      在这里插入图片描述

      $(‘#btnSave’).bind(‘click’,function(){

      var nodes = $(‘#tree’).tree(‘getChecked’);

      var ids = new Array();

      $.each(nodes,function(i, node){

      ids.push(node.id);

      });

      //[1,2,3,4] => “1,2,3,4”

      var checkedStr = ids.join(‘,’);//把数组里的每个元都拼接上逗号

      //构建提交数据

      var formdata = {};

      //id赋值

      formdata.id= $(‘#grid’).datagrid(‘getSelected’).uuid;

      //选中的菜单ID

      formdata.checkedStr=checkedStr;

      //alert(JSON.stringify(formdata));

      $.ajax({

      url: ‘role_updateRoleMenus’,

      data:formdata,

      type:‘post’,

      dataType: ‘json’,

      success:function(rtn){

      $.messager.alert(‘提示’,rtn.message,‘info’);

      }

      });

      });

      4、用户角色设置

      (1)需求分析

      一个用户可以指定多个角色,实现思路与角色权限设置相同

      (2)代码实现
      1)业务层实现
      a、修改IEmpBiz和EmpBiz

      IEmpBiz

      在这里插入图片描述

      EmpBiz

      在这里插入图片描述

      EmpBiz

      在这里插入图片描述

      // 获取用户角色权限

      public List readEmpRoles(Long uuid) {

      List treeList = new ArrayList();

      //获取用户信息

      Emp emp = empDao.get(uuid);

      //获取用户下的角色列表

      List empRoles = emp.getRoles();

      //获取所有的角色列表

      List rolesList = roleDao.getList(null, null, null);

      Tree t1 = null;

      for(Role role : rolesList) {

      t1 = new Tree();

      //转换为String类型

      t1.setId(String.valueOf( role.getUuid()));

      t1.setText(role.getName());

      //判断其是否需要选中,用户是否拥有这个角色

      if(empRoles.contains(role)) {

      t1.setChecked(true);

      }

      treeList.add(t1);

      }

      return treeList;

      }

      // 更新用户角色

      public void updateEmpRoles(Long uuid, String checkedStr) {

      Emp emp = empDao.get(uuid);

      //清空该用户下的所有角色

      emp.setRoles(new ArrayList());

      String[] ids = checkedStr.split(“,”);

      最后

      即使是面试跳槽,那也是一个学习的过程。只有全面的复习,才能让我们更好的充实自己,武装自己,为自己的面试之路不再坎坷!今天就给大家分享一个Github上全面的Java面试题大全,就是这份面试大全助我拿下大厂Offer,月薪提至30K!

      我也是第一时间分享出来给大家,希望可以帮助大家都能去往自己心仪的大厂!为金三银四做准备!
      一共有20个知识点专题,分别是:

      Dubbo面试专题

      JVM面试专题

      这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

      Java并发面试专题

      这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

      Kafka面试专题

      这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

      MongDB面试专题

      这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

      MyBatis面试专题

      这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

      MySQL面试专题

      这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

      Netty面试专题

      这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

      RabbitMQ面试专题

      这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

      Redis面试专题

      这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

      Spring Cloud面试专题

      这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

      SpringBoot面试专题

      这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

      zookeeper面试专题

      这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

      常见面试算法题汇总专题

      这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

      计算机网络基础专题

      这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

      设计模式专题

      这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南
      《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!
      不再坎坷!今天就给大家分享一个Github上全面的Java面试题大全,就是这份面试大全助我拿下大厂Offer,月薪提至30K!

      我也是第一时间分享出来给大家,希望可以帮助大家都能去往自己心仪的大厂!为金三银四做准备!
      一共有20个知识点专题,分别是:

      Dubbo面试专题

      [外链图片转存中…(img-zbKiuI1b-1714679033677)]

      JVM面试专题

      [外链图片转存中…(img-ly4WV6ha-1714679033678)]

      Java并发面试专题

      [外链图片转存中…(img-nqQUPf3h-1714679033678)]

      Kafka面试专题

      [外链图片转存中…(img-AAXqmwTw-1714679033678)]

      MongDB面试专题

      [外链图片转存中…(img-9XtO6c9X-1714679033678)]

      MyBatis面试专题

      [外链图片转存中…(img-PmyPReuX-1714679033679)]

      MySQL面试专题

      [外链图片转存中…(img-49rHwhXf-1714679033679)]

      Netty面试专题

      [外链图片转存中…(img-7oqjt25v-1714679033679)]

      RabbitMQ面试专题

      [外链图片转存中…(img-MYrr1Br7-1714679033679)]

      Redis面试专题

      [外链图片转存中…(img-jZ2sccz4-1714679033680)]

      Spring Cloud面试专题

      [外链图片转存中…(img-tS67FZKr-1714679033680)]

      SpringBoot面试专题

      [外链图片转存中…(img-XM2j3p5l-1714679033680)]

      zookeeper面试专题

      [外链图片转存中…(img-LZg8BoRo-1714679033680)]

      常见面试算法题汇总专题

      [外链图片转存中…(img-nSqbgtvA-1714679033680)]

      计算机网络基础专题

      [外链图片转存中…(img-xmX1YrE0-1714679033681)]

      设计模式专题

      [外链图片转存中…(img-m9uemHug-1714679033681)]
      《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值