HomePageManager.java 2.64 KB
Newer Older
张辰's avatar
张辰 committed
1 2
package com.tanpu.community.manager;

刘基明's avatar
刘基明 committed
3
import com.tanpu.community.api.beans.qo.FollowQo;
刘基明's avatar
刘基明 committed
4
import com.tanpu.community.api.beans.req.homepage.FollowRelReq;
刘基明's avatar
刘基明 committed
5 6
import com.tanpu.community.api.beans.req.homepage.QueryFollowReq;
import com.tanpu.community.api.beans.req.page.Page;
刘基明's avatar
刘基明 committed
7
import com.tanpu.community.api.enums.OperationTypeEnum;
刘基明's avatar
刘基明 committed
8
import com.tanpu.community.api.enums.QueryFollowTypeEnum;
刘基明's avatar
刘基明 committed
9
import com.tanpu.community.dao.entity.user.UserInfoEntity;
刘基明's avatar
刘基明 committed
10
import com.tanpu.community.service.FollowRelService;
刘基明's avatar
刘基明 committed
11
import com.tanpu.community.service.UserInfoService;
刘基明's avatar
刘基明 committed
12
import com.tanpu.community.util.ConvertUtil;
刘基明's avatar
刘基明 committed
13
import com.tanpu.community.util.PageUtils;
刘基明's avatar
刘基明 committed
14
import org.apache.commons.collections4.CollectionUtils;
张辰's avatar
张辰 committed
15 16 17
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

刘基明's avatar
刘基明 committed
18
import java.util.*;
刘基明's avatar
刘基明 committed
19
import java.util.stream.Collectors;
张辰's avatar
张辰 committed
20 21 22 23 24

@Service
public class HomePageManager {

    @Autowired
刘基明's avatar
刘基明 committed
25
    private FollowRelService followRelService;
张辰's avatar
张辰 committed
26 27


刘基明's avatar
刘基明 committed
28 29
    @Autowired
    private UserInfoService userInfoService;
刘基明's avatar
刘基明 committed
30

张辰's avatar
张辰 committed
31

刘基明's avatar
刘基明 committed
32
    //获取用户关注、粉丝列表
刘基明's avatar
刘基明 committed
33 34 35
    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());
刘基明's avatar
刘基明 committed
36 37 38
        List<FollowQo> followQos = new ArrayList<>();
        if (!CollectionUtils.isEmpty(userIds)) {
            List<UserInfoEntity> userInfos = userInfoService.queryUserByIds(userIds);
刘基明's avatar
刘基明 committed
39
            List<FollowQo> collect = userInfos.stream().map(ConvertUtil::userInfoEntity2FollowQo).collect(Collectors.toList());
刘基明's avatar
刘基明 committed
40 41 42
            followQos = judgeFollowed(collect, userId);

        }
刘基明's avatar
刘基明 committed
43
        //分页
刘基明's avatar
刘基明 committed
44
        return PageUtils.page(req.getPage(), followQos);
张辰's avatar
张辰 committed
45 46
    }

刘基明's avatar
刘基明 committed
47

刘基明's avatar
刘基明 committed
48
    //判断返回列表中的用户是否被当前用户关注
刘基明's avatar
刘基明 committed
49
    public List<FollowQo> judgeFollowed(List<FollowQo> followQos, String followerId) {
刘基明's avatar
刘基明 committed
50
        Set<String> idolSet = new HashSet<>(followRelService.queryFansByFollowerId(followerId));
刘基明's avatar
刘基明 committed
51 52
        return followQos.stream().map(o -> {
            if (idolSet.contains(o.getUserId())) {
刘基明's avatar
刘基明 committed
53 54 55 56 57 58 59
                o.setFollowed(true);
            }
            return o;
        }).collect(Collectors.toList());

    }

刘基明's avatar
刘基明 committed
60 61 62 63 64 65
    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);
        }
张辰's avatar
张辰 committed
66 67
    }
}