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

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

[java]  view plain  copy
  1. @Override  
  2. public UserRespVo login(UserVo user) {  
  3.     if(null != user){//如果传入的用户不为空  
  4.         String userId = user.getUserid();  
  5.         String password = user.getPassword();  
  6.         //根据用户id查询用户  
  7.         UserPo userPo = userPoMapper.selectByPrimaryKey(userId);  
  8.         if(null != userPo){  
  9.             //如果存在该用户,对比密码看是否匹配  
  10.             String resultpassword = userPo.getPassword();  
  11.             if(resultpassword.equals(password)){  
  12.                 //如果密码匹配,查询用户的菜单  
  13.                 List<MenuPo> resultUserPoMenuList = userPoMapper.selectUserMenu(userPo.getUserid());  
  14.                 List<MenuVo> resultUserVoMenuList = new ArrayList<MenuVo>();  
  15.                 //将查询的结果po转为vo  
  16.                 for (MenuPo menuPo : resultUserPoMenuList) {  
  17.                     MenuVo menuVo = new MenuVo();  
  18.                     BeanUtils.copyProperties(menuPo, menuVo);  
  19.                     resultUserVoMenuList.add(menuVo);  
  20.                 }  
  21.                 //根据一级菜单id查询所有的菜单  
  22.                 List<MenuVo> userMenuVos = new ArrayList<MenuVo>();  
  23.                 for (MenuVo menuVo : resultUserVoMenuList) {  
  24.                     //这里需要的是一级菜单的id,对于没有父菜单id的就是一级菜单  
  25.                     if(StringUtils.isBlank(menuVo.getMenuparent())){  
  26.                         List<MenuVo> iterateMenus = iterateMenus(resultUserVoMenuList, menuVo.getMenuid());  
  27.                         menuVo.setMenuVo(iterateMenus);  
  28.                         userMenuVos.add(menuVo);  
  29.                     }  
  30.                 }  
  31.                 UserRespVo userRespVo = new UserRespVo();  
  32.                 userRespVo.setErrMsg("登录成功");  
  33.                 userRespVo.setStatusCode("1");  
  34.                 userRespVo.setMenus(userMenuVos);  
  35.                 userRespVo.setUserId(userPo.getUserid());  
  36.                 userRespVo.setUserName(userPo.getUsername());  
  37.                 logger.info(userPo.getUserid()+":登录成功");  
  38.                 return userRespVo;  
  39.             }else{  
  40.                 //如果密码不匹配  
  41.                 UserRespVo userRespVo = new UserRespVo();  
  42.                 userRespVo.setErrMsg("密码错误");  
  43.                 userRespVo.setStatusCode("0");  
  44.                 logger.info(userPo.getUserid()+":密码错误,登录失败");  
  45.                 return userRespVo;  
  46.             }  
  47.         }else{  
  48.             UserRespVo userRespVo = new UserRespVo();  
  49.             userRespVo.setErrMsg("不存在该用户");  
  50.             userRespVo.setStatusCode("0");  
  51.             logger.info("不存在该用户,登录失败");  
  52.             return userRespVo;  
  53.         }  
  54.     }  
  55.     UserRespVo userRespVo = new UserRespVo();  
  56.     userRespVo.setErrMsg("用户名和密码不能为空");  
  57.     userRespVo.setStatusCode("0");  
  58.     logger.info("用户名和密码不能为空");  
  59.     return userRespVo;  
  60. }  
[java]  view plain  copy
  1. //多级菜单查询方法  
  2.     public List<MenuVo> iterateMenus(List<MenuVo> menuVoList,String pid){  
  3.         List<MenuVo> result = new ArrayList<MenuVo>();  
  4.         for (MenuVo menuVo : menuVoList) {  
  5.             String menuid = menuVo.getMenuid();//获取菜单的id  
  6.             String parentid = menuVo.getMenuparent();//获取菜单的父id  
  7.             if(StringUtils.isNotBlank(parentid)){  
  8.                 if(parentid.equals(pid)){  
  9.                     List<MenuVo> iterateMenu = iterateMenus(menuVoList,menuid);  
  10.                     menuVo.setMenuVo(iterateMenu);  
  11.                     result.add(menuVo);  
  12.                 }  
  13.             }  
  14.         }  
  15.         return result;  
  16.     }  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值