1.实体类
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; }
2.递归方法
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; } }
3.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; }