java 二级菜单实现

查询数据库所有菜单项

@Override
	public List queryMenuListByUserCode(String userCode) {
		List menuList = new ArrayList();
		String sql = "select * from fpd.T_INTRA_MENU m where m.status=1 "
				+ "and m.code in (select rm.menu_Code from fpd.T_INTRA_ROLE_MENU rm "
				+ "where rm.role_code in (select ur.role_code from fpd.T_INTRA_USER_ROLE ur"
				+ " where ur.USER_CODE= ? )) order by m.order_no desc";
		 Object[] paramArr = new Object[]{userCode};
		 List> queryList = jdbcTemplate.queryForList(sql, paramArr);
	        if (!CollectionUtils.isEmpty(queryList)) {
	            for (Map map : queryList) {
	            	IntraMenu model = new IntraMenu();
	            	model.setId(((BigDecimal)map.get("ID")).longValue());
	            	model.setCode(map.get("CODE").toString());
	            	if(map.get("P_CODE")!=null){
	            		model.setpCode(map.get("P_CODE").toString());
	            	}
	            	model.setRankLevel(((BigDecimal)map.get("RANK_LEVEL")).intValue());
	            	model.setName(map.get("NAME").toString());
	            	if(map.get("URL")!=null){
	            		model.setURL(map.get("URL").toString());
	            	}
	            	model.setOrderNo(((BigDecimal)map.get("ORDER_NO")).intValue());
	            	menuList.add(model);
	            }
	        }
	        return menuList;
	}

树形处理

    @RequestMapping(value = "/main")
      public ModelAndView loginSuccess(HttpServletRequest request, HttpServletResponse response) {
          String loginName = request.getParameter("loginName");
          ModelAndView mv = new ModelAndView("intra/login/main");
          String name = FPDUtils.getUserCode();
          mv.addObject("name", name);
          List menuList = intraBaseQueryService.queryMenuListByUserCode(loginName);
          List pMenuList = new ArrayList();
          MultiMap multiMap = new MultiHashMap();
          if(CollectionUtils.isNotEmpty(menuList)){
              for(IntraMenu menu:menuList){
                  if(menu.getRankLevel()==2){
                      String menuCode="",menuName="";
                      menuCode = menu.getpCode();//找父节点
                      //根据父节点编码找相应的名称
                      IntraMenu pMenu = intraBaseQueryService.queryByMenuCode(menuCode);
                      if(pMenu!=null){
                          menuName = pMenu.getName();
                          multiMap.put(menuCode+"@"+menuName, menu);
                      }else{
                          logger.error("父节点编码:"+menuCode+"不存在");
                      }
                  }else{
                      menu.setCode(menu.getCode()+"@"+menu.getName());
                      pMenuList.add(menu);
                  }
              }
          }
          Set keySet =  multiMap.keySet();
          List list = new ArrayList();
          
          for(IntraMenu menu:pMenuList){
              for(Iterator iterator =keySet.iterator();iterator.hasNext();){
                String mapKey = iterator.next();
                if(menu.getCode().equals(mapKey)){
                    IntraTreeMenu intraTreeMenu = new IntraTreeMenu();
                    List children = (List) multiMap.get(mapKey);
                    intraTreeMenu.setCode(mapKey.split("@")[0]);
                       intraTreeMenu.setName(mapKey.split("@")[1]);
                       intraTreeMenu.setChildren(children);
                       list.add(intraTreeMenu);
                   }
          }
          }
          
          mv.addObject("menuList", list);
          return mv;
      }

前端处理

 

 

 

 

 

你可能感兴趣的:(java)