TopicService.java 2.2 KB
package com.tanpu.community.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.tanpu.common.uuid.UuidGenHelper;
import com.tanpu.community.api.enums.StatusEnum;
import com.tanpu.community.dao.entity.community.TopicEntity;
import com.tanpu.community.dao.mapper.community.TopicMapper;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;


@Service
@EnableCaching
public class TopicService {

    @Resource
    private TopicMapper topicMapper;

    @Autowired
    private UuidGenHelper uuidGenHelper;

    public List<TopicEntity> queryAll() {
        List<TopicEntity> retList = new ArrayList<>();

        Long lastId = 0L;
        while (true) {
            List<TopicEntity> tmpList = topicMapper.selectGtIdPageable(lastId, 100);
            if (tmpList.isEmpty()) {
                break;
            }
            retList.addAll(tmpList);
            lastId = tmpList.stream().map(TopicEntity::getId).max(Long::compareTo).get();
        }
        return retList;
    }



    public TopicEntity queryById(String topicId) {
        return topicMapper.selectOne(new LambdaQueryWrapper<TopicEntity>()
                .eq(TopicEntity::getTopicId, topicId)
                .eq(TopicEntity::getIsConceal, StatusEnum.FALSE)
                .eq(TopicEntity::getDeleteTag, StatusEnum.FALSE));
    }

    // 根据话题id查询title,(包括已删除)
    public String queryTitleById(String topicId) {
        TopicEntity topicEntity = topicMapper.selectOne(new LambdaQueryWrapper<TopicEntity>()
                .eq(TopicEntity::getTopicId, topicId));
        return topicEntity!=null?topicEntity.getTopicTitle():null;
    }

    public List<TopicEntity> queryByIds(List<String> topicIds) {
        if (CollectionUtils.isEmpty(topicIds)) {
            return Collections.emptyList();
        }
        return topicMapper.selectList(new LambdaQueryWrapper<TopicEntity>().in(TopicEntity::getTopicId, topicIds));
    }

}