权限的目的
是为了让不同的用户可以操作系统中不同资源
直接点说就是不同的用户可以看到左侧不同的菜单
**思考:**我们想一个用户对应多个菜单
然后一个菜单可以对应多个用户
其实这就是user与menu的多对多的关系
思路:
1、菜单不同的原因在于,利用不同menuid进行查询,原本默认查询的是所有菜单,是通过-1去查的;
2、menuid由来:是登录用户id查询中间表数据所得来的
MenuDao
package com.yq.dao;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.yq.entity.TreeNode;
import com.yq.util.JsonBaseDao;
import com.yq.util.JsonUtils;
import com.yq.util.PageBean;
import com.yq.util.StringUtils;
/**
* 1.查询数据库所以数据用于easyui的tree树形展示(但是直接得来的数据格式easyui不识别)
* 2.递归查询节点集合,形成父节点关系,具备层次结构
* 3.转格式
* @author 陌陌
*
*/
public class MenuDao extends JsonBaseDao{
/**
* List<TreeNode>加上ObjectMapper可以转换成easyui控件识别的json串
* @param map
* @param pageBean
* @return
* @throws SQLException
* @throws IllegalAccessException
* @throws InstantiationException
*/
public List<TreeNode> listTreeNode(Map<String, String[]> map,PageBean pageBean) throws InstantiationException, IllegalAccessException, SQLException{
List<Map<String, Object>> listMenu=this.listMenuAuth(map, pageBean);
List<TreeNode> listTreeNode=new ArrayList<TreeNode>();
this.listMapToTreeNode(listMenu, listTreeNode);
return listTreeNode;
}
/**
* 按照不同用户登陆能够访问不同菜单
* @param map
* @param pageBean
* @return
* @throws InstantiationException
* @throws IllegalAccessException
* @throws SQLException
*/
public List<Map<String, Object>> listMenuAuth(Map<String, String[]> map,PageBean pageBean) throws InstantiationException, IllegalAccessException, SQLException{
String sql="select * from t_easyui_menu where true";
String id=JsonUtils.getParamVal(map, "Menuid");
if(StringUtils.isNotBlank(id)) {
// 原生节点的id当作子节点父id进行查询
sql +=" and menuid in ("+id+")";
}else {
sql +=" and menuid=000";
}
return super.executeQuery(sql, pageBean);
}
/**
* List<Map<String, Object>>
* ->[{Menuid:001,Menuname:学生管理,children:[]},{Menuid:001,Menuname:学生管理}]
* 接下来需要递归查询子节点的集合存入当前节点
*
* @param map
* @param pageBean
* @retu