无限极构建权限树

/**
	 * 	建一个listTemp供循环用(注意这是类似同一人在两公司供职的情景)
	 */
	public static List<Permission> formartWholeTree(List<Permission> wholePermissions) {
		List<Permission> lev1s = wholePermissions.stream().filter(i->i.getParentId()==0).sorted((a,b)->a.getSortNum()-b.getSortNum()).collect(Collectors.toList());
		List<Permission> listTemp = new ArrayList<Permission>();
		wholePermissions.stream().forEach(e->listTemp.add(e)); // 元素两边供职
		while(listTemp.size()>0) {
			Permission t = listTemp.remove(0);
			removeIds.add(t.getId());
			for(Permission p: wholePermissions) {
				if(p.getParentId()==t.getId()) {
                      t.getChilds().add(p); } } } return lev1s; }

  构建路由跟上面基本一致:

/**
	 * 	构建用户的权限路由
	 * @param userRouters
	 * @return
	 */
	public static List<Permission> buildRouter(List<Permission> userRouters) {
		List<Permission> listTemp = new ArrayList<Permission>();
		userRouters.stream().forEach(e->listTemp.add(e)); // 元素两边供职
		while(listTemp.size()>0) {
			Permission t = listTemp.remove(0);
			for(Permission p: userRouters) {
				if(p.getParentId()==t.getId()) {
					t.getChilds().add(p);
				}
			}
		}
		List<Integer> ids = userRouters.stream().map(i->i.getId()).collect(Collectors.toList());
		return userRouters.stream().filter(i->!ids.contains(i.getParentId())).collect(Collectors.toList());
	}

  

posted @ 2020-09-19 14:59  trump2  阅读(179)  评论(0)    收藏  举报