(java后台)用户权限的多级菜单遍历方法

来源:互联网 发布:传奇盛世的战旗数据 编辑:程序博客网 时间:2024/04/28 00:44

很多用户登录后根据用户的标识查询该用户角色所对应的菜单

@Overridepublic UserRespVo login(UserVo user) {if(null != user){//如果传入的用户不为空String userId = user.getUserid();String password = user.getPassword();//根据用户id查询用户UserPo userPo = userPoMapper.selectByPrimaryKey(userId);if(null != userPo){//如果存在该用户,对比密码看是否匹配String resultpassword = userPo.getPassword();if(resultpassword.equals(password)){//如果密码匹配,查询用户的菜单List<MenuPo> resultUserPoMenuList = userPoMapper.selectUserMenu(userPo.getUserid());List<MenuVo> resultUserVoMenuList = new ArrayList<MenuVo>();//将查询的结果po转为vofor (MenuPo menuPo : resultUserPoMenuList) {MenuVo menuVo = new MenuVo();BeanUtils.copyProperties(menuPo, menuVo);resultUserVoMenuList.add(menuVo);}//根据一级菜单id查询所有的菜单List<MenuVo> userMenuVos = new ArrayList<MenuVo>();for (MenuVo menuVo : resultUserVoMenuList) {//这里需要的是一级菜单的id,对于没有父菜单id的就是一级菜单if(StringUtils.isBlank(menuVo.getMenuparent())){List<MenuVo> iterateMenus = iterateMenus(resultUserVoMenuList, menuVo.getMenuid());menuVo.setMenuVo(iterateMenus);userMenuVos.add(menuVo);}}UserRespVo userRespVo = new UserRespVo();userRespVo.setErrMsg("登录成功");userRespVo.setStatusCode("1");userRespVo.setMenus(userMenuVos);userRespVo.setUserId(userPo.getUserid());userRespVo.setUserName(userPo.getUsername());logger.info(userPo.getUserid()+":登录成功");return userRespVo;}else{//如果密码不匹配UserRespVo userRespVo = new UserRespVo();userRespVo.setErrMsg("密码错误");userRespVo.setStatusCode("0");logger.info(userPo.getUserid()+":密码错误,登录失败");return userRespVo;}}else{UserRespVo userRespVo = new UserRespVo();userRespVo.setErrMsg("不存在该用户");userRespVo.setStatusCode("0");logger.info("不存在该用户,登录失败");return userRespVo;}}UserRespVo userRespVo = new UserRespVo();userRespVo.setErrMsg("用户名和密码不能为空");userRespVo.setStatusCode("0");logger.info("用户名和密码不能为空");return userRespVo;}
//多级菜单查询方法public List<MenuVo> iterateMenus(List<MenuVo> menuVoList,String pid){List<MenuVo> result = new ArrayList<MenuVo>();for (MenuVo menuVo : menuVoList) {String menuid = menuVo.getMenuid();//获取菜单的idString parentid = menuVo.getMenuparent();//获取菜单的父idif(StringUtils.isNotBlank(parentid)){if(parentid.equals(pid)){List<MenuVo> iterateMenu = iterateMenus(menuVoList,menuid);menuVo.setMenuVo(iterateMenu);result.add(menuVo);}}}return result;}



0 0
原创粉丝点击