获取文章下所有用户ID列表

原创
05/28 14:24
阅读数 37

场景:发布一篇文章,文章设置部门权限,获取这篇文章下拥有权限的用户ID列表

/**
* 获取文章下所有用户ID列表
* @param id 文章ID
* @return
*/
public List<Integer> getNewInfoUserIdList2(Integer id) {
	//根据Id获取文章详细
	Info info = infoDao.getInfoById(id);
	if(null==info || null==info.getId()){  return new ArrayList<>(); }
	//预存文章下的所有人
	List<Integer> userIdList = new ArrayList<Integer>();
	//判断文章是否指定权限
	if (StringUtil.isNotBlank(info.getBranchIds())) {
		//获取文章下的指定部门
		List<Integer> branchIdList = infoDao.getInfoAuthBranchIdList(info.getId());
		//获取部门下的所有用户
		if(null!=branchIdList && branchIdList.size()>0){
			userIdList = getBrachUserIdLoopId(branchIdList,userIdList);
		}
	} else {
		//没有指定权限,获取文章下所有用户
		userIdList.addAll(userDao.getInnerUserIdList(Paramers.USER_ROLE_IN, null));
	}
	if(null!=userIdList && userIdList.size()>0){
		//去除List中重复的用户值
		userIdList = removeDuplicate(userIdList);
	}
	return userIdList;
}


/**
* 获取部门下的用户
* @param branchIdList 部门ID列表
* @param userIdList 预存用户ID列表
* @return
*/
public List<Integer> getBrachUserIdLoopId(List<Integer> branchIdList,List<Integer> userIdList){
	for (Integer branchId : branchIdList) {
		//获取部门下的所有用户
		userIdList.addAll(userDao.getInnerUserIdList(Paramers.USER_ROLE_IN, branchId));
		//查询当前部门是否存在子部门
		List<Integer> branchIdTempList = branchDao.getBranchIdByPid(branchId);
		if(null!=branchIdTempList && branchIdTempList.size()>0){
			getBrachUserIdLoopId(branchIdTempList,userIdList);
		}
	}
	return  userIdList;
}

/**
* 去掉List中重复的值
* @param list
* @return
*/
public List<Integer>  removeDuplicate(List<Integer> list) {
	HashSet h = new HashSet(list);
	list.clear();
	list.addAll(h);
	return  list;
}

 

展开阅读全文
amp
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部