实体类
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;
}