// 第一步:获取关注的用户列表
// 第二步:根据关注用户的id查询关注用户的基本信息
// 第三步:将关注用户按关注分组进行分类
public List<FollowingGroup> getUserFollowings(Long userId){
//获得所有的关注列表的id存进list中
List<UserFollowing> list = userFollowingDao.getUserFollowings(userId);
Set<Long> followingIdSet = list.stream().map(UserFollowing::getFollowingId).collect(Collectors.toSet());
List<UserInfo> userInfoList = new ArrayList<>();
if(followingIdSet.size() > 0){
userInfoList = userService.getUserInfoByUserIds(followingIdSet);
}
//获取所有关注的up主的基本信息
for(UserFollowing userFollowing : list){
for(UserInfo userInfo : userInfoList){
if(userFollowing.getFollowingId().equals(userInfo.getUserId())){
userFollowing.setUserInfo(userInfo);
}
}
}
//匹配上述两个list中的userId字段,使得每个userFollowing变量里都可以储存对应的userInfo。
List<FollowingGroup> groupList = followingGroupService.getByUserId(userId);
FollowingGroup allGroup = new FollowingGroup();
//allGroup用于存放2号用户的全部关注分组(包括系统的0,1,2分组和自定义分组),作为一个整体加入最后返回前端的result。
allGroup.setName(UserConstant.USER_FOLLOWING_GROUP_ALL_NAME);
allGroup.setFollowingUserInfoList(userInfoList);
List<FollowingGroup> result = new ArrayList<>();
result.add(allGroup);
//然后再分别以不同类型的分组为整体,加入result。具体的实现也是通过两个for循环,
// 匹配表t_user_following的groupId字段和t_following_group的id字段。
for(FollowingGroup group : groupList){
List<UserInfo> infoList = new ArrayList<>();
for(UserFollowing userFollowing : list){
if(group.getId().equals(userFollowing.getGroupId())){
infoList.add(userFollowing.getUserInfo());
}
}
group.setFollowingUserInfoList(infoList);
result.add(group);
}
//最后返回的result里的分组信息(记住group里还包含了userInfoList),
// 逻辑上可能有以下几项:result[0]是全部关注分组,result[1]是特别关注分组,
// result[2]默默关注分组, result[3]系统默认分组, result[4]用户自定义分组(可以有多个)。
return result;
}
获取用户关注API
最新推荐文章于 2024-08-13 16:15:07 发布