ThemeService.java 8.18 KB
Newer Older
刘基明's avatar
刘基明 committed
1 2
package com.tanpu.community.service;

刘基明's avatar
刘基明 committed
3
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
刘基明's avatar
刘基明 committed
4
import com.tanpu.common.exception.BizException;
刘基明's avatar
刘基明 committed
5
import com.tanpu.common.uuid.UuidGenHelper;
刘基明's avatar
刘基明 committed
6
import com.tanpu.community.api.enums.DeleteTagEnum;
刘基明's avatar
刘基明 committed
7
import com.tanpu.community.dao.entity.community.ThemeEntity;
刘基明's avatar
刘基明 committed
8
import com.tanpu.community.dao.mapper.community.ThemeMapper;
刘基明's avatar
刘基明 committed
9
import org.apache.commons.lang3.StringUtils;
刘基明's avatar
刘基明 committed
10
import org.springframework.beans.factory.annotation.Autowired;
刘基明's avatar
刘基明 committed
11
import org.springframework.stereotype.Service;
刘基明's avatar
刘基明 committed
12
import org.springframework.transaction.annotation.Transactional;
刘基明's avatar
刘基明 committed
13

刘基明's avatar
刘基明 committed
14
import javax.annotation.Resource;
刘基明's avatar
刘基明 committed
15
import java.util.Collections;
刘基明's avatar
刘基明 committed
16
import java.util.List;
刘基明's avatar
刘基明 committed
17 18
import java.util.Set;
import java.util.stream.Collectors;
刘基明's avatar
刘基明 committed
19

刘基明's avatar
刘基明 committed
20 21 22
@Service
public class ThemeService {

刘基明's avatar
刘基明 committed
23
    @Resource
刘基明's avatar
刘基明 committed
24
    private ThemeMapper themeMapper;
刘基明's avatar
刘基明 committed
25

刘基明's avatar
刘基明 committed
26 27 28
    @Autowired
    private UuidGenHelper uuidGenHelper;

刘基明's avatar
刘基明 committed
29
    @Transactional
刘基明's avatar
刘基明 committed
30
    public void insertTheme(ThemeEntity themeEntity) {
刘基明's avatar
刘基明 committed
31
        themeEntity.setThemeId(uuidGenHelper.getUuidStr());
刘基明's avatar
刘基明 committed
32 33 34
        themeMapper.insert(themeEntity);
    }

刘基明's avatar
刘基明 committed
35 36 37 38 39 40
    @Transactional
    public void update(ThemeEntity themeEntity,String themeId) {
        themeEntity.setThemeId(themeId);
        themeMapper.updateById(themeEntity);
    }

刘基明's avatar
刘基明 committed
41
    //根据id返回主题详情
刘基明's avatar
刘基明 committed
42
    public ThemeEntity queryByThemeId(String themeId) {
刘基明's avatar
刘基明 committed
43 44 45 46
        return themeMapper.selectOne(new LambdaQueryWrapper<ThemeEntity>()
                .eq(ThemeEntity::getThemeId,themeId));
    }

刘基明's avatar
刘基明 committed
47
    public List<ThemeEntity> queryThemesByUserId(String userId) {
刘基明's avatar
刘基明 committed
48 49
        return themeMapper.selectList(new LambdaQueryWrapper<ThemeEntity>()
                .eq(ThemeEntity::getAuthorId,userId)
刘基明's avatar
刘基明 committed
50 51 52 53
                .eq(ThemeEntity::getDeleteTag,DeleteTagEnum.NOT_DELETED.getCode())
                .orderByDesc(ThemeEntity::getId));
    }

刘基明's avatar
刘基明 committed
54
    public List<ThemeEntity> queryThemesByUserId(String userId, String lastId, Integer pageSize) {
刘基明's avatar
刘基明 committed
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
        LambdaQueryWrapper<ThemeEntity> queryWrapper = new LambdaQueryWrapper<ThemeEntity>()
                .eq(ThemeEntity::getAuthorId, userId)
                .eq(ThemeEntity::getDeleteTag, DeleteTagEnum.NOT_DELETED.getCode())
                .orderByDesc(ThemeEntity::getId);
        if (StringUtils.isNotEmpty(lastId)) {
            ThemeEntity lastEntity = queryByThemeId(lastId);
            if (lastEntity==null) throw new BizException("主题未找到,id:"+lastId);
            queryWrapper.lt(ThemeEntity::getUpdateTime, lastEntity.getCreateTime());
        }
        if (pageSize!=null){
            queryWrapper.last("limit "+pageSize);
        }
        return themeMapper.selectList(queryWrapper);
    }

    //根据ids返回主题详情
    public List<ThemeEntity> queryByThemeIds(List<String> themeIds, String lastId,Integer pageSize) {
        LambdaQueryWrapper<ThemeEntity> queryWrapper = new LambdaQueryWrapper<ThemeEntity>()
                .in(ThemeEntity::getThemeId, themeIds)
                .eq(ThemeEntity::getDeleteTag, DeleteTagEnum.NOT_DELETED.getCode());
        if (StringUtils.isNotEmpty(lastId)) {
            ThemeEntity lastEntity = queryByThemeId(lastId);
            if (lastEntity==null) throw new BizException("主题未找到,id:"+lastId);
            queryWrapper.lt(ThemeEntity::getUpdateTime, lastEntity.getCreateTime());
        }
        if (pageSize!=null){
            queryWrapper.last("limit "+pageSize);
        }
        return themeMapper.selectList(queryWrapper);
刘基明's avatar
刘基明 committed
84 85 86 87
    }

    //根据ids返回主题详情
    public List<ThemeEntity> queryByThemeIds(List<String> themeIds) {
刘基明's avatar
刘基明 committed
88 89 90 91 92
        LambdaQueryWrapper<ThemeEntity> queryWrapper = new LambdaQueryWrapper<ThemeEntity>()
                .in(ThemeEntity::getThemeId, themeIds)
                .eq(ThemeEntity::getDeleteTag, DeleteTagEnum.NOT_DELETED.getCode());

        return themeMapper.selectList(queryWrapper);
刘基明's avatar
刘基明 committed
93 94
    }

刘基明's avatar
刘基明 committed
95 96
    //分页倒叙lastId之前的主题
    public List<ThemeEntity> selectAll(String lastId,Integer pageSize) {
刘基明's avatar
刘基明 committed
97 98 99
        LambdaQueryWrapper<ThemeEntity> queryWrapper = new LambdaQueryWrapper<ThemeEntity>();


刘基明's avatar
刘基明 committed
100 101 102
        if (StringUtils.isNotEmpty(lastId)) {
            ThemeEntity lastEntity = queryByThemeId(lastId);
            if (lastEntity==null) throw new BizException("主题未找到,id:"+lastId);
刘基明's avatar
刘基明 committed
103
            queryWrapper.lt(ThemeEntity::getUpdateTime, lastEntity.getCreateTime());
刘基明's avatar
刘基明 committed
104
        }
刘基明's avatar
刘基明 committed
105

刘基明's avatar
刘基明 committed
106
        queryWrapper.last("limit "+pageSize);
刘基明's avatar
刘基明 committed
107
        queryWrapper.orderByDesc(ThemeEntity::getId);
刘基明's avatar
刘基明 committed
108 109
        queryWrapper.orderByDesc(ThemeEntity::getCreateTime);
        queryWrapper.eq(ThemeEntity::getDeleteTag,DeleteTagEnum.NOT_DELETED.getCode());
刘基明's avatar
刘基明 committed
110 111 112 113
        return themeMapper.selectList(queryWrapper);
    }


刘基明's avatar
刘基明 committed
114 115 116 117 118 119 120
    /**
     * 根据条件查询主题
     * @param topidId 话题Id
     * @param lastId 查询此主题Id之前的主题
     * @param pageSize 查询数量
     * @return
     */
刘基明's avatar
刘基明 committed
121
    public List<ThemeEntity> queryByTopic(String topidId, String lastId, Integer pageSize) {
刘基明's avatar
刘基明 committed
122 123 124
        LambdaQueryWrapper<ThemeEntity> queryWrapper = new LambdaQueryWrapper<ThemeEntity>()
                .eq(ThemeEntity::getTopicId, topidId);
        if (StringUtils.isNotEmpty(lastId)) {
刘基明's avatar
刘基明 committed
125
            ThemeEntity lastEntity = queryByThemeId(lastId);
刘基明's avatar
刘基明 committed
126
            if (lastEntity==null) throw new BizException("主题未找到,id:"+lastId);
刘基明's avatar
刘基明 committed
127
            queryWrapper.lt(ThemeEntity::getUpdateTime, lastEntity.getCreateTime());
刘基明's avatar
刘基明 committed
128 129 130 131
        }
        if (pageSize!=null){
            queryWrapper.last("limit "+pageSize);
        }
刘基明's avatar
刘基明 committed
132 133
        queryWrapper.orderByDesc(ThemeEntity::getCreateTime);
        queryWrapper.eq(ThemeEntity::getDeleteTag,DeleteTagEnum.NOT_DELETED.getCode());
刘基明's avatar
刘基明 committed
134
        return themeMapper.selectList(queryWrapper);
刘基明's avatar
刘基明 committed
135
    }
刘基明's avatar
刘基明 committed
136

刘基明's avatar
刘基明 committed
137 138
    //根据话题查询所有的主题Id
    public List<String> queryThemeIdsByTopic(String topidId) {
刘基明's avatar
刘基明 committed
139 140 141
        if(StringUtils.isEmpty(topidId)){
            return Collections.emptyList();
        }
刘基明's avatar
刘基明 committed
142 143 144 145 146 147
        LambdaQueryWrapper<ThemeEntity> queryWrapper = new LambdaQueryWrapper<ThemeEntity>()
                .eq(ThemeEntity::getTopicId, topidId);
        queryWrapper.select(ThemeEntity::getThemeId);
        return themeMapper.selectList(queryWrapper).stream().map(ThemeEntity::getThemeId).collect(Collectors.toList());
    }

刘基明's avatar
刘基明 committed
148 149

    //关注的主题列表
刘基明's avatar
刘基明 committed
150
    public List<ThemeEntity> queryByUserIds(List<String> userIds, String lastId, Integer pageSize) {
刘基明's avatar
刘基明 committed
151
        LambdaQueryWrapper<ThemeEntity> queryWrapper = new LambdaQueryWrapper<ThemeEntity>()
刘基明's avatar
刘基明 committed
152
                .in(ThemeEntity::getAuthorId, userIds);
刘基明's avatar
刘基明 committed
153
        if (StringUtils.isNotEmpty(lastId)) {
刘基明's avatar
刘基明 committed
154
            ThemeEntity lastEntity = queryByThemeId(lastId);
刘基明's avatar
刘基明 committed
155
            if (lastEntity==null) throw new BizException("主题未找到,id:"+lastId);
刘基明's avatar
刘基明 committed
156
            queryWrapper.lt(ThemeEntity::getUpdateTime, lastEntity.getCreateTime());
刘基明's avatar
刘基明 committed
157 158
        }
        queryWrapper.last("limit "+pageSize);
刘基明's avatar
刘基明 committed
159 160
        queryWrapper.orderByDesc(ThemeEntity::getCreateTime);
        queryWrapper.eq(ThemeEntity::getDeleteTag,DeleteTagEnum.NOT_DELETED.getCode());
刘基明's avatar
刘基明 committed
161
        return themeMapper.selectList(queryWrapper);
刘基明's avatar
刘基明 committed
162 163 164

    }

刘基明's avatar
刘基明 committed
165 166

    //查询对应话题的发表用户集合
刘基明's avatar
刘基明 committed
167
    public Set<String> getPostUserCount(List<String> themeIds) {
刘基明's avatar
刘基明 committed
168 169 170 171
        return themeMapper.selectBatchIds(themeIds).stream()
                .map(ThemeEntity::getAuthorId)
                .collect(Collectors.toSet());
    }
刘基明's avatar
刘基明 committed
172 173 174

    public Integer getForwardCountById(String themeId) {
        return themeMapper.selectCount(new LambdaQueryWrapper<ThemeEntity>()
刘基明's avatar
刘基明 committed
175
                .eq(ThemeEntity::getThemeId, themeId)
刘基明's avatar
刘基明 committed
176 177
                .eq(ThemeEntity::getDeleteTag, DeleteTagEnum.NOT_DELETED));
    }
刘基明's avatar
刘基明 committed
178 179 180 181 182 183 184

    public Integer getForwardCountByUser(String themeId,String userId) {
        return themeMapper.selectCount(new LambdaQueryWrapper<ThemeEntity>()
                .eq(ThemeEntity::getFormerThemeId, themeId)
                .eq(ThemeEntity::getAuthorId, userId)
                .eq(ThemeEntity::getDeleteTag, DeleteTagEnum.NOT_DELETED));
    }
刘基明's avatar
刘基明 committed
185

刘基明's avatar
刘基明 committed
186
    @Transactional
刘基明's avatar
刘基明 committed
187
    public void deleteById(String themeId) {
刘基明's avatar
刘基明 committed
188 189
        ThemeEntity themeEntity = themeMapper.selectOne(new LambdaQueryWrapper<ThemeEntity>()
                .eq(ThemeEntity::getThemeId, themeId));
刘基明's avatar
刘基明 committed
190 191 192 193 194 195
        if (themeEntity==null){
            throw new BizException("主题未找到,id:"+themeId);
        }
        themeEntity.setDeleteTag(DeleteTagEnum.DELETED.getCode());
        themeMapper.updateById(themeEntity);
    }
刘基明's avatar
刘基明 committed
196 197


刘基明's avatar
刘基明 committed
198
}