package com.tanpu.community.manager; import com.tanpu.community.api.beans.qo.FollowQo; import com.tanpu.community.api.beans.req.homepage.FollowRelReq; import com.tanpu.community.api.beans.req.homepage.QueryFollowReq; import com.tanpu.community.api.beans.req.page.Page; import com.tanpu.community.api.enums.OperationTypeEnum; import com.tanpu.community.api.enums.QueryFollowTypeEnum; import com.tanpu.community.dao.entity.user.UserInfoEntity; import com.tanpu.community.service.FollowRelService; import com.tanpu.community.service.UserInfoService; import com.tanpu.community.util.ConvertUtil; import com.tanpu.community.util.PageUtils; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; import java.util.stream.Collectors; @Service public class HomePageManager { @Autowired private FollowRelService followRelService; @Autowired private UserInfoService userInfoService; //获取用户关注、粉丝列表 public Page<FollowQo> queryFollow(QueryFollowReq req, String userId) { List<String> userIds = QueryFollowTypeEnum.QUERY_FANS.getCode().equals(req.getQueryType()) ? followRelService.queryFansByIdolId(req.getUserId()) : followRelService.queryFansByFollowerId(req.getUserId()); List<FollowQo> followQos = new ArrayList<>(); if (!CollectionUtils.isEmpty(userIds)) { List<UserInfoEntity> userInfos = userInfoService.queryUserByIds(userIds); List<FollowQo> collect = userInfos.stream().map(ConvertUtil::userInfoEntity2FollowQo).collect(Collectors.toList()); followQos = judgeFollowed(collect, userId); } //分页 return PageUtils.page(req.getPage(), followQos); } //判断返回列表中的用户是否被当前用户关注 public List<FollowQo> judgeFollowed(List<FollowQo> followQos, String followerId) { Set<String> idolSet = new HashSet<>(followRelService.queryFansByFollowerId(followerId)); return followQos.stream().map(o -> { if (idolSet.contains(o.getUserId())) { o.setFollowed(true); } return o; }).collect(Collectors.toList()); } public void addFollowRel(FollowRelReq req, String followerId) { if (OperationTypeEnum.CONFIRM.getCode().equals(req.getType())) { followRelService.addFollowRel(req.getFollowUserId(), followerId); } else if (OperationTypeEnum.CANCEL.getCode().equals(req.getType())) { followRelService.deleteFollowRel(req.getFollowUserId(), followerId); } } }