为角色添加权限---查询所有权限----(附件)

// 为角色添加权限
	@Override
	@Transactional
	public boolean permissionset(RoleVo roleVo) {//roleVo 中有roleid和menuids。   
		String menuIds = roleVo.getMenuIds();

		// 先删除这个角色已存在的权限映射记录
		RoleMenuRelExample roleMenuRelExample = new RoleMenuRelExample();
		RoleMenuRelExample.Criteria criteria0 = roleMenuRelExample.createCriteria();
		criteria0.andRoleIdEqualTo(roleVo.getRoleId());

		roleMenuRelMapper.deleteByExample(roleMenuRelExample);

		// 插入新的角色权限映射关系
		String[] menuIdArr = menuIds.split(",");

		boolean isSuccess = true;

		for (int i = 0; i < menuIdArr.length; i++) {
			String menuId = menuIdArr[i];

			// 1111111111111111111111111111111111111111111111
			// 保存:当前选中的menu A
			roleMenuRelExample.clear();
			RoleMenuRelExample.Criteria criteria = roleMenuRelExample.createCriteria();
			criteria.andRoleIdEqualTo(roleVo.getRoleId());
			criteria.andMenuIdEqualTo(Integer.valueOf(menuId));

			List<RoleMenuRel> roleMenuRels = roleMenuRelMapper.selectByExample(roleMenuRelExample);

			if (roleMenuRels == null || roleMenuRels.size() == 0) {
				RoleMenuRel rel = new RoleMenuRel();
				rel.setRoleId(roleVo.getRoleId());
				rel.setMenuId(Integer.valueOf(menuId));

				int count = roleMenuRelMapper.insert(rel);
				if (count == 0) {
					isSuccess = false;
				}
			}

			// 222222222222222222222222222222222
			// 如果A 的父id != 0 ,保存B

			// 由于前段 jstree 控件的 bug, 可能导致父级菜单 id 没上传的情况,需要判断
			// 只对二级菜单判断,判断其父级菜单映射关系是否入库,否则入库
			// 拿到父级菜单id
			Menu menu = menuMapper.selectByPrimaryKey(Integer.valueOf(menuId));

			if (menu.getParentId() != 0) { // 非顶级菜单,要保存上级菜单
				roleMenuRelExample.clear();
				RoleMenuRelExample.Criteria criteria2 = roleMenuRelExample.createCriteria();
				criteria2.andRoleIdEqualTo(roleVo.getRoleId());
				criteria2.andMenuIdEqualTo(menu.getParentId());

				List<RoleMenuRel> list = roleMenuRelMapper.selectByExample(roleMenuRelExample);
				if (list == null || list.size() == 0) { // 子集菜单的父菜单id不存在库中
					RoleMenuRel rel = new RoleMenuRel();
					rel.setRoleId(roleVo.getRoleId());
					rel.setMenuId(menu.getParentId());
					int count = roleMenuRelMapper.insert(rel);
					if (count == 0) {
						isSuccess = false;
					}
				}

				// 3333333333333333333333333333333
				// menu2是选中的上一层菜单
				Menu menu2 = menuMapper.selectByPrimaryKey(Integer.valueOf(menu.getParentId()));

				if (menu2.getParentId() != 0) { // 非顶级菜单
					roleMenuRelExample.clear();
					RoleMenuRelExample.Criteria criteria3 = roleMenuRelExample.createCriteria();
					criteria3.andRoleIdEqualTo(roleVo.getRoleId());
					criteria3.andMenuIdEqualTo(menu2.getParentId());

					List<RoleMenuRel> list2 = roleMenuRelMapper.selectByExample(roleMenuRelExample);
					if (list2 == null || list2.size() == 0) { // 子集菜单的父菜单id不存在库中
						RoleMenuRel rel = new RoleMenuRel();
						rel.setRoleId(roleVo.getRoleId());
						rel.setMenuId(menu2.getParentId());
						int count = roleMenuRelMapper.insert(rel);
						if (count == 0) {
							isSuccess = false;
						}
					}

					// 44444444444444444444444444444444
					// menu3是选中的上上一层菜单
					Menu menu3 = menuMapper.selectByPrimaryKey(Integer.valueOf(menu2.getParentId()));

					if (menu3.getParentId() != 0) { // 非顶级菜单
						roleMenuRelExample.clear();
						RoleMenuRelExample.Criteria criteria4 = roleMenuRelExample.createCriteria();
						criteria4.andRoleIdEqualTo(roleVo.getRoleId());
						criteria4.andMenuIdEqualTo(menu3.getParentId());

						List<RoleMenuRel> list3 = roleMenuRelMapper.selectByExample(roleMenuRelExample);
						if (list3 == null || list3.size() == 0) { // 子集菜单的父菜单id不存在库中
							RoleMenuRel rel = new RoleMenuRel();
							rel.setRoleId(roleVo.getRoleId());
							rel.setMenuId(menu3.getParentId());
							int count = roleMenuRelMapper.insert(rel);
							if (count == 0) {
								isSuccess = false;
							}
						}
					}
				}
			}
			// 改造处end
		}
		return isSuccess;
	}

以上是为角色添加权限。


引用处:https://blog.csdn.net/zhaoyaxiansheng/article/details/88222697


以下代码为 查询所有权限菜单,用于显示到jstree。

package com.dewxin.customer.center.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.dewxin.customer.center.common.pojo.JsTreeNode;
import com.dewxin.customer.center.common.pojo.JsTreeNodeState;
import com.dewxin.customer.center.dao.MenuMapper;
import com.dewxin.customer.center.dao.RoleMenuRelMapper;
import com.dewxin.customer.center.pojo.*;
import com.dewxin.customer.center.service.MenuService;

import java.util.ArrayList;
import java.util.List;

@Service
public class MenuServiceImpl implements MenuService {

    @Autowired
    private MenuMapper menuMapper;
    @Autowired
    private RoleMenuRelMapper roleMenuRelMapper;

    /**
     * 根据 parentId 返回 jstree 格式数据--系统
     *四层菜单
     * @return
     */
    @Override
    public List<JsTreeNode> findPermissionsetByRoleId(int roleId) {
        MenuExample example = new MenuExample();
        MenuExample.Criteria criteria = example.createCriteria();
        criteria.andParentIdEqualTo(0);

        List<Menu> list = menuMapper.selectByExample(example);

        List<JsTreeNode> nodes = new ArrayList<JsTreeNode>();
        for (Menu menu : list) {
            JsTreeNode node = new JsTreeNode();
            node.setId(menu.getMenuId());
            node.setText(menu.getName());

            // 判断是否有子节点
            example.clear();
            MenuExample.Criteria criteria2 = example.createCriteria();
            criteria2.andParentIdEqualTo(menu.getMenuId());
            List<Menu> subList = menuMapper.selectByExample(example);

            List<JsTreeNode> nodes2 = new ArrayList<JsTreeNode>();
            for (Menu menu2 : subList) {
                JsTreeNode node2 = new JsTreeNode();
                node2.setId(menu2.getMenuId());
                node2.setText(menu2.getName());


                // 第三层
                example.clear();
                MenuExample.Criteria criteria3 = example.createCriteria();
                criteria3.andParentIdEqualTo(menu2.getMenuId());
                List<Menu> list3 = menuMapper.selectByExample(example);

                List<JsTreeNode> nodes3 = new ArrayList<JsTreeNode>();
                for (Menu menu3 : list3) {
                    JsTreeNode node3 = new JsTreeNode();
                    node3.setId(menu3.getMenuId());
                    node3.setText(menu3.getName());

                    // 第四层start
                    example.clear();
                    MenuExample.Criteria criteria6 = example.createCriteria();
                    criteria6.andParentIdEqualTo(menu3.getMenuId());
                    List<Menu> list4 = menuMapper.selectByExample(example);

                    List<JsTreeNode> nodes4 = new ArrayList<JsTreeNode>();
                    for (Menu menu4 : list4) {
                        JsTreeNode node4 = new JsTreeNode();
                        node4.setId(menu4.getMenuId());
                        node4.setText(menu4.getName());

                        // 回显是否被选中
                        RoleMenuRelExample roleMenuRelExample = new RoleMenuRelExample();
                        RoleMenuRelExample.Criteria criteria7 = roleMenuRelExample.createCriteria();
                        criteria7.andRoleIdEqualTo(roleId);
                        criteria7.andMenuIdEqualTo(menu4.getMenuId());

                        List<RoleMenuRel> roleMenuRels4 = roleMenuRelMapper.selectByExample(roleMenuRelExample);

                        JsTreeNodeState state4 = new JsTreeNodeState();
                        if (roleMenuRels4 != null && roleMenuRels4.size() > 0) {
                            state4.setSelected(true);
                        } else {
                            state4.setSelected(false);
                        }
                        node4.setState(state4);

                        nodes4.add(node4);

                    }
                    node3.setChildren(nodes4);

                    // 第四层end

                    // 回显是否被选中
                    RoleMenuRelExample roleMenuRelExample = new RoleMenuRelExample();
                    RoleMenuRelExample.Criteria criteria4 = roleMenuRelExample.createCriteria();
                    criteria4.andRoleIdEqualTo(roleId);
                    criteria4.andMenuIdEqualTo(menu3.getMenuId());

                    List<RoleMenuRel> roleMenuRels3 = roleMenuRelMapper.selectByExample(roleMenuRelExample);

                    JsTreeNodeState state3 = new JsTreeNodeState();
                    if (roleMenuRels3 != null && roleMenuRels3.size() > 0) {
                        state3.setSelected(true);
                    } else {
                        state3.setSelected(false);
                    }
                    node3.setState(state3);

                    nodes3.add(node3);

                }
                node2.setChildren(nodes3);

                // 第三层end

                // 回显是否被选中
                RoleMenuRelExample roleMenuRelExample2 = new RoleMenuRelExample();
                RoleMenuRelExample.Criteria criteria5 = roleMenuRelExample2.createCriteria();
                criteria5.andRoleIdEqualTo(roleId);
                criteria5.andMenuIdEqualTo(menu2.getMenuId());

                List<RoleMenuRel> roleMenuRels2 = roleMenuRelMapper.selectByExample(roleMenuRelExample2);

                JsTreeNodeState state2 = new JsTreeNodeState();
                if (roleMenuRels2 != null && roleMenuRels2.size() > 0) {
                    state2.setSelected(true);
                } else {
                    state2.setSelected(false);
                }
                node2.setState(state2);

                nodes2.add(node2);

            }
            node.setChildren(nodes2);

            nodes.add(node);
        }
//      注释这部分用于两层菜单
//		for (Menu menu : list) {
//			JsTreeNode node = new JsTreeNode();
//			node.setId(menu.getMenuId());
//			node.setText(menu.getName());
//			
			RoleMenuRelExample.Criteria criteria1 = roleMenuRelExample.createCriteria();
			criteria1.andRoleIdEqualTo(roleId);
			criteria1.andMenuIdEqualTo(menu.getMenuId());

			List<RoleMenuRel> roleMenuRels = roleMenuRelMapper.selectByExample(roleMenuRelExample);

			JsTreeNodeState state = new JsTreeNodeState();
			if (roleMenuRels != null && roleMenuRels.size() > 0) {
				state.setSelected(true);
			} else {
				state.setSelected(false);
			}
			node.setState(state);
//			
//			// 判断是否有子节点
//			example.clear();
//			MenuExample.Criteria criteria2 = example.createCriteria();
//			criteria2.andParentIdEqualTo(menu.getMenuId());
//			List<Menu> subList = menuMapper.selectByExample(example);
//			
//			List<JsTreeNode> nodes2 = new ArrayList<JsTreeNode>();
//			for (Menu menu2 : subList) {
//				JsTreeNode node2 = new JsTreeNode();
//				node2.setId(menu2.getMenuId());
//				node2.setText(menu2.getName());
//				
//				// 回显是否被选中
//				RoleMenuRelExample roleMenuRelExample = new RoleMenuRelExample();
//				RoleMenuRelExample.Criteria criteria3 = roleMenuRelExample.createCriteria();
//				criteria3.andRoleIdEqualTo(roleId);
//				criteria3.andMenuIdEqualTo(menu2.getMenuId());
//				
//				List<RoleMenuRel> roleMenuRels2 = roleMenuRelMapper.selectByExample(roleMenuRelExample);
//				
//				JsTreeNodeState state2 = new JsTreeNodeState();
//				if (roleMenuRels2 != null && roleMenuRels2.size() > 0) {
//					state2.setSelected(true);
//				} else {
//					state2.setSelected(false);
//				}
//				node2.setState(state2);
//				
//				nodes2.add(node2);
//			}
//			node.setChildren(nodes2);
//			
//			nodes.add(node);
//		}
        return nodes;
    }

}

js部分:


<div id="container" class="margin-bottom-20px"></div>

<script type="text/javascript">

    $(function() {
        // 清空实例,jstree不会重新生成
//        $('#container').data('jstree', false).empty();
        var roleId = $('#roleId').val();
        $('#container').jstree({
            'plugins': ["checkbox"],
            'core' : {
                'data' : {
                    'url' : '/sys/role/manage/permissionset/tree?roleId=' + roleId,
                    'data': function (node) {
                        return { 'id': node.id };
                    }
                },
                'themes': {
                    'name': 'proton',
                    'responsive': true
                }
            }
        });

    });

    $('#submit').click(function(){
        var menuIds = $('#container').jstree().get_checked(); //获取所有选中的节点ID
        var roleId = $('#roleId').val();
        // ajax 提交
        $.ajax({
            type: "POST",
            async: true,
            url: "<%=context%>/sys/role/manage/permissionset/update?roleId=" + roleId + "&menuIds=" + menuIds,
            success: function (data) {
                var jsonData = $.parseJSON(JSON.stringify(data));
                var index = parent.layer.getFrameIndex(window.name);
                if (jsonData.status == 0) {
                    parent.$("#layer_status").val(0);
                } else {
                    parent.$("#layer_status").val(1);
                }
                parent.$("#layer_msg").val(jsonData.msg);
                parent.layer.close(index);
            }
        });
    });

</script>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值