(java后台)用户权限的多级菜单遍历方法
2015-12-28 14:18
549 查看
很多用户登录后根据用户的标识查询该用户角色所对应的菜单
@Override
public 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转为vo
for (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;
}
@Override
public 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转为vo
for (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();//获取菜单的id String parentid = menuVo.getMenuparent();//获取菜单的父id if(StringUtils.isNotBlank(parentid)){ if(parentid.equals(pid)){ List<MenuVo> iterateMenu = iterateMenus(menuVoList,menuid); menuVo.setMenuVo(iterateMenu); result.add(menuVo); } } } return result; }
相关文章推荐
- Spring中Quartz的配置
- Spring注解
- Eclipse中使用SVN插件Subclipse - 提交、更新、解决冲突、合并
- 【thinking in java】读书笔记(一)
- Java [Leetcode 70]Climbing Stairs
- Android开发之 Windows环境下通过Eclipse创建的第一个安卓应用程序(图文详细步骤)
- 轻量级JavaEE企业应用实战(十八)
- Java实现仿Windows计算器
- 从头认识java-15.2 Collection的常用方法(2)-注意点
- java后台读取properties中的配置文件
- JAVA_DES 加密 解密 生成随机密钥
- java类加载的先后顺序
- spring多数据源实现
- Kafka生产者消费者java示例(包含Avro序列化)
- java.lang.IllegalStateException: Already using output stream分析及处理办法
- java配置文件之xml和properties简单读取实例
- 25个Java机器学习工具和库
- 探讨Spring框架使用真相
- Java 8 Lambda 表达式学习心得总结
- 35 个 Java 代码性能优化总结