springmvc实战技巧解析(十一)rbac模型菜单的递归
【摘要】
实体类
public class SysPermissionVO extends BaseEntity implements Serializable { /** * 权限 ID */ private Long id; /** * 父权限 ID (0为顶级菜单) */ pr...
实体类
-
public class SysPermissionVO extends BaseEntity implements Serializable {
-
-
-
/**
-
* 权限 ID
-
*/
-
private Long id;
-
-
/**
-
* 父权限 ID (0为顶级菜单)
-
*/
-
private Long parentId;
-
-
/**
-
* 权限名称
-
*/
-
private String name;
-
-
/**
-
* 授权标识符
-
*/
-
private String code;
-
-
/**
-
* 授权路径
-
*/
-
private String url;
-
-
/**
-
* 类型(1菜单,2按钮)
-
*/
-
private Integer type;
-
-
/**
-
* 图标
-
*/
-
private String icon;
-
-
/**
-
* 备注
-
*/
-
private String remark;
-
-
private String createDate;
-
-
private String updateDate;
-
-
/**
-
* 菜单顺序
-
*/
-
private String numOrder;
-
-
/**
-
* 系统id
-
*/
-
private String system;
-
-
private String createUser;
-
-
private String updateUser;
-
-
/**
-
* 菜单编号
-
*/
-
private String menuNumber;
-
-
private List<SysPermissionVO> childMenus;
-
}
递归方法
-
public class MenuTreeUtil {
-
-
/**
-
* 获取菜单树 获取顶层
-
*
-
* @param listSysPermissionVO
-
* @param applicationVO 应用信息
-
* @return
-
*/
-
public static SysPermissionVO getMenuTree(List<SysPermissionVO> listSysPermissionVO,
-
SysPermissionVO applicationVO) {
-
// 加入首层
-
List<SysPermissionVO> resultList = new ArrayList<>();
-
for (SysPermissionVO sysPermissionVO : listSysPermissionVO) {
-
if (Long.valueOf(0).equals(sysPermissionVO.getParentId())) {
-
List<SysPermissionVO> childTree = addChildMenu(sysPermissionVO, listSysPermissionVO);
-
sysPermissionVO.setChildMenus(childTree);
-
resultList.add(sysPermissionVO);
-
}
-
}
-
applicationVO.setChildMenus(resultList);
-
return applicationVO;
-
}
-
-
/**
-
* 递归方法
-
*
-
* @param sysPermissionVO
-
* @param listSysPermissionVO
-
* @return
-
*/
-
private static List<SysPermissionVO> addChildMenu(SysPermissionVO sysPermissionVO,
-
List<SysPermissionVO> listSysPermissionVO) {
-
List<SysPermissionVO> childList = new ArrayList<>();
-
for (SysPermissionVO permissionVO : listSysPermissionVO) {
-
if (sysPermissionVO.getId().equals(permissionVO.getParentId())) {
-
List<SysPermissionVO> childMenu = addChildMenu(permissionVO, listSysPermissionVO);
-
permissionVO.setChildMenus(childMenu);
-
childList.add(permissionVO);
-
}
-
}
-
return childList;
-
}
-
}
conteoller
-
public Result<SysPermissionVO> selectPermissionTree(
-
SysPermissionVO sysPermissionVO) {
-
Result<SysPermissionVO> resultVO = new Result<>();
-
// 按照序号排序
-
PageHelper.orderBy(sysPermissionVO.getNumOrder());
-
// 获取当前应用的所有
-
List<SysPermissionVO> resultListSysPermission = sysPermissionService.querySysPermissionAll(sysPermissionVO);
-
// 应用信息拼装
-
SysPermissionVO applicationVO = new SysPermissionVO();
-
applicationVO.setId(Long.valueOf(0));
-
applicationVO.setSystem(sysPermissionVO.getSystem());
-
// 获取树
-
SysPermissionVO resultMenu = MenuTreeUtil.getMenuTree(resultListSysPermission, applicationVO);
-
resultVO.setData(resultMenu);
-
// 分页总数
-
return resultVO;
-
}
文章来源: baocl.blog.csdn.net,作者:小黄鸡1992,版权归原作者所有,如需转载,请联系作者。
原文链接:baocl.blog.csdn.net/article/details/113385645
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)