栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SSM酒店管理系统项目Day10

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SSM酒店管理系统项目Day10

文章目录

14. 完善系统管理页面

14.1 完善用户管理页面中的分配角色按钮

14.1.1 修改roleManager.jsp14.1.2 查询菜单树(TreeUtil.java类已引入)14.1.3 保存角色菜单关系 14.2 根据当前登陆用户查询首页菜单
建议配合视频学习食用(7-4~7-7):
https://www.bilibili.com/video/BV1rr4y1F7Y2?p=1

14. 完善系统管理页面 14.1 完善用户管理页面中的分配角色按钮

14.1.1 修改roleManager.jsp

1.在行工具栏区域添加分配菜单按钮

 分配菜单

2.添加分配菜单弹出层

         
          

3.引入css与js

    <%-- 引入dtree.css --%>
    
    <%-- 引入dtreefont.css --%>
    
   layui.extend({
        dtree:"${pageContext.request.contextPath}/statics/layui_ext/dtree/dtree",
    }).use(['form', 'table', 'laydate', 'jquery','layer','dtree'], function () {
        var $ = layui.jquery,
            form = layui.form,
            laydate = layui.laydate,
            layer = layui.layer,
            dtree = layui.dtree,
            table = layui.table;

4.监听表格行工具栏事件

        //监听表格行工具栏事件
        table.on("tool(currentTableFilter)",function (obj) {
            switch (obj.event) {
                case 'edit':
                    openUpdateWindow(obj.data);
                    break;
                case 'delete':
                    deleteById(obj.data);
                case 'grantMenu':
                    grantMenu(obj.data);
                    break;
            }
        });

5.添加function

         
        function grantMenu(data) {
            mainIndex = layer.open({
                type:1,
                title:"分配["+data.roleName+"]的菜单",
                area: ["400px", "550px"],//窗口宽高
                content: $("#selectRoleMenuDiv"),//引用的内容窗口
                btn: ['确认', '取消'],
                yes: function(index, layero){
                    //获取复选框的选中值
                    var params = dtree.getCheckbarNodesParam("roleTree");
                    //判断是否选中
                    if(params.length>0){
                        layer./confirm/i("确定要分配这些菜单吗?",{icon:3,title:"提示"},function (index) {
                            //定义集合,保存选中的值
                            var idArr = [];
                            //循环遍历
                            for (let i = 0; i < params.length; i++) {
                                idArr.push(params[i].nodeId);//nodeId是选中的节点值
                            }
                            //将数组转换成字符串
                            var ids = idArr.join(",");
                            //发送请求
                            $.post("/admin/role/saveRolePermission",{"permissionIds":ids,"roleId":data.id},function(result){
                                if(result.success){
                                    layer.alert(result.message,{icon:1});
                                }else{
                                    layer.alert(result.message,{icon:2});
                                }
                            },"json");

                            //关闭分配菜单窗口
                            layer.close(mainIndex);
                        });

                    }else{
                        layer.msg("请选择要分配的菜单");
                    }

                },
                btn2: function(index, layero){
                    //关闭当前窗口
                    layer.close(index);
                },
                success:function () {
                    //初始化树形组件
                    dtree.render({
                        elem: "#roleTree",
                        url: "/admin/role/initMenuTree?roleId="+data.id,
                        dataStyle: "layuiStyle",  //使用layui风格的数据格式
                        dataFormat: "list",  //配置data的风格为list
                        response:{message:"msg",statusCode:0},  //修改response中返回数据的定义
                        checkbar: true,
                        checkbarType: "all" // 默认就是all,其他的值为: no-all  p-casc   self  only
                    });
                }
            });
        }


14.1.2 查询菜单树(TreeUtil.java类已引入)

1.数据层
PermissionMapper.java

    
    List findPermissionByRoleId(Integer roleId);

    
    List findPermissionById(List currentRolePermissions);

   

PermissionMapper.xml

    
        select * from sys_permission where id in
        
            #{roleId}
        
    

   

2.业务层
PermissionService.java

    
    List findPermissionByRoleId(Integer roleId);


    
    List findPermissionById(List currentRolePermissions);

   

PermissionServiceImpl.java

    public List findPermissionByRoleId(Integer roleId) {
        return permissionMapper.findPermissionByRoleId(roleId);
    }

    public List findPermissionById(List currentRolePermissions) {
        return permissionMapper.findPermissionById(currentRolePermissions);
    }

   

3.控制层 RoleController.java

   
    @RequestMapping("/initMenuTree")
    public DataGridViewResult initMenuTree(Integer roleId){
        //调用查询所有菜单权限列表的方法
        List permissionList = permissionService.findPermissionList(null);
        //调用根据角色ID查询菜单列表的方法(角色权限列表集合)
        List currentRolePermissionIds = permissionService.findPermissionByRoleId(roleId);
        //创建集合保存菜单信息
        List currentPermissions = new ArrayList();
        //判断角色权限列表集合是否存在数据
        if(currentRolePermissionIds!=null && currentRolePermissionIds.size()>0){
            //如果角色权限列表集合中存在数据,则需要根据权限菜单ID查询详细信息
            currentPermissions = permissionService.findPermissionById(currentRolePermissionIds);
        }

        //创建菜单节点集合
        List treeNodes = new ArrayList();
        //循环遍历权限菜单列表
        for (Permission permission : permissionList) {
            //定义变量,标识是否选中
            String checkArr = "0";//0表示复选框不选中,1表示选中复选框
            //内层循环遍历当前角色拥有的权限菜单
            //循环比较的原因:比较两个集合中的数据是否有相同的,有相同的表示当前角色拥有这个权限
            for (Permission currentPermission : currentPermissions) {
                //比较两个集合中权限菜单id是否相同,相同则选择
                if(permission.getId() == currentPermission.getId()){
                    checkArr = "1";
                    break;
                }
            }
            //定义变量,标识菜单是否展开
            Boolean spread = (permission.getSpread()==null || permission.getSpread()==1) ? true : false;
            treeNodes.add(new TreeNode(permission.getId(),permission.getPid(),permission.getTitle(),spread,checkArr));
        }
        return new DataGridViewResult(treeNodes);
    }
14.1.3 保存角色菜单关系

1.数据层
RoleMapper.java

    
    @Insert("insert into sys_role_permission(rid,pid) values(#{roleId},#{pid})")
    int saveRolePermission(@Param("pid") Integer permissionId, @Param("roleId") Integer roleId);

    
    @Delete("delete from sys_role_permission where rid = #{roleId}")
    void deleteRolePermissionByRoleId(Integer roleId);

2.业务层
RoleService.java

    
    boolean saveRolePermission(String permissionIds, Integer roleId);

RoleServiceImpl.java

   
    public boolean saveRolePermission(String permissionIds, Integer roleId) {
        try {
            //删除原有的角色菜单关系
            roleMapper.deleteRolePermissionByRoleId(roleId);
            //将权限菜单字符串拆分成数组
            String[] ids = permissionIds.split(",");
            int count = 0;
            //循环添加角色菜单关系
            for (int i = 0; i < ids.length; i++) {
                count =  roleMapper.saveRolePermission(Integer.valueOf(ids[i]),roleId);
            }
            return true;
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }

        return false;
    }

3.控制层 RoleController.java

    
    @RequestMapping("/saveRolePermission")
    public String saveRolePermission(String permissionIds,Integer roleId){
        Map map = new HashMap();
        if(roleService.saveRolePermission(permissionIds,roleId)){
            map.put(SystemConstants.SUCCESS,true);
            map.put(SystemConstants.MESSAGE,"菜单分配成功");
        }else{
            map.put(SystemConstants.SUCCESS,false);
            map.put(SystemConstants.MESSAGE,"菜单分配失败");
        }
        return JSON.toJSONString(map);
    }
14.2 根据当前登陆用户查询首页菜单

1.数据层
PermissionMapper.java

    
    List findPermissionListByUserId(@Param("userId") Integer userId, @Param("type") String type);

PermissionMapper.xml

    

2.业务层
PermissionService.java

    
    List findPermissionListByUserId(Integer userId, String type);

PermissionServiceImpl.java

    public List findPermissionListByUserId(Integer userId, String type) {
        return permissionMapper.findPermissionListByUserId(userId,type);
    }

3.控制层 MenuController.java

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/715786.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号