Commit f9c8837a by 段启岩

话题锁定

parent 65a63e13
......@@ -9,7 +9,6 @@ import cn.meteor.beyondclouds.modules.post.enums.PostErrorCode;
import cn.meteor.beyondclouds.modules.post.exception.PostServiceException;
import cn.meteor.beyondclouds.modules.post.mapper.PostMapper;
import cn.meteor.beyondclouds.modules.post.service.IPostService;
import cn.meteor.beyondclouds.modules.post.vo.PostVO;
import cn.meteor.beyondclouds.modules.project.exception.ProjectServiceException;
import cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService;
import cn.meteor.beyondclouds.modules.topic.entity.Topic;
......@@ -136,6 +135,22 @@ public class PostServiceImpl extends ServiceImpl<PostMapper, Post> implements IP
List<String> topicNames = TopicUtils.parseTopics(post.getContent());
if (!CollectionUtils.isEmpty(topicNames)) {
List<Topic> topics = topicService.queryAndCreateByTopicNames(topicNames, post.getUserId());
List<String> unLockedTopicNames = topics.stream()
.map(Topic::getTopicName)
.collect(Collectors.toList());
// 筛选出被锁定的话题
List<String> lockedTopics = topicNames
.stream()
.filter(topicName -> !unLockedTopicNames.contains(topicName))
.collect(Collectors.toList());
// 从动态中删除被锁定的话题
if (!CollectionUtils.isEmpty(lockedTopics)) {
post.setContent(TopicUtils.clearLockedTopics(postContent, lockedTopics));
updateById(post);
}
List<String> topicIds = topics.stream().map(Topic::getTopicId).collect(Collectors.toList());
// 关联话题和动态
......
......@@ -139,8 +139,13 @@ public class TopicApi {
if (bindingResult.hasErrors()) {
return Response.fieldError(bindingResult.getFieldError());
}
PageDTO<UserFollowDTO> page = topicService.getTopicsFollower(pageForm.getPage(), pageForm.getSize(), topicId);
PageDTO<UserFollowDTO> page;
try {
page = topicService.getTopicsFollower(pageForm.getPage(), pageForm.getSize(), topicId);
return Response.success(page);
} catch (TopicServiceException e) {
return Response.error(e);
}
}
......
......@@ -47,6 +47,8 @@ public class Topic implements Serializable {
@ApiModelProperty(value = "被引用次数")
private Integer referenceCount;
private Integer status;
private Date createTime;
private Date updateTime;
......
......@@ -11,6 +11,7 @@
FROM topic t, search_degree sd
WHERE t.topic_id = sd.item_id
AND sd.item_type = 'TOPIC'
AND t.status = 0
ORDER BY sd.degree DESC
</select>
......
......@@ -73,7 +73,7 @@ public interface ITopicService extends IService<Topic> {
* @param topicId
* @return
*/
PageDTO<UserFollowDTO> getTopicsFollower(Integer page, Integer size, String topicId);
PageDTO<UserFollowDTO> getTopicsFollower(Integer page, Integer size, String topicId) throws TopicServiceException;
/**
* 获取用户的话题分页
......
......@@ -35,6 +35,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import net.sf.jsqlparser.statement.select.Top;
import org.elasticsearch.common.recycler.Recycler;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -140,6 +141,7 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
IPage<Topic> page = new Page<>(pageNumber, pageSize);
QueryWrapper<Topic> topicQueryWrapper = new QueryWrapper<>();
topicQueryWrapper.like("topic_name", keywords);
topicQueryWrapper.eq("status", 0);
IPage<Topic> topicPage = page(page, topicQueryWrapper);
// 更新话题的搜索量
......@@ -211,6 +213,7 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
//2. 获取话题
QueryWrapper<Topic> topicQueryWrapper = new QueryWrapper<>();
topicQueryWrapper.eq(topicAccessWay.getFieldName(), identification);
topicQueryWrapper.eq("status", 0);
topic = getOne(topicQueryWrapper);
// 找不到该话题,抛出业务异常
......@@ -246,7 +249,11 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
public void followTopic(String userId, String topicId) throws TopicServiceException {
//1. 获取话题
Topic topic = getById(topicId);
QueryWrapper<Topic> topicQueryWrapper = new QueryWrapper<>();
topicQueryWrapper.eq("topic_id", topicId);
topicQueryWrapper.eq("status", 0);
Topic topic = getOne(topicQueryWrapper);
//2. 找不到该话题,抛出业务异常
if (topic == null) {
......@@ -307,8 +314,15 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
}
@Override
public PageDTO<UserFollowDTO> getTopicsFollower(Integer pageNumber, Integer pageSize, String topicId) {
public PageDTO<UserFollowDTO> getTopicsFollower(Integer pageNumber, Integer pageSize, String topicId) throws TopicServiceException {
QueryWrapper<Topic> topicQueryWrapper = new QueryWrapper<>();
topicQueryWrapper.eq("status", 0);
topicQueryWrapper.eq("topic_id", topicId);
Topic topic = getOne(topicQueryWrapper);
if (null == topic) {
throw new TopicServiceException(TopicErrorCode.TOPIC_NOT_EXISTS);
}
// 1. 通过话题id获取该话题所有关注着
// 设置分页信息
IPage<TopicFollow> page = new Page<>(pageNumber, pageSize);
......@@ -383,6 +397,7 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
public PageDTO<TopicDTO> getTopicPage(Integer pageNumber, Integer pageSize) {
IPage<Topic> page = new Page<>(pageNumber, pageSize);
QueryWrapper<Topic> topicQueryWrapper = new QueryWrapper<>();
topicQueryWrapper.eq("status", 0);
topicQueryWrapper.orderByDesc("create_time");
return toPageDTO(page(page, topicQueryWrapper));
}
......@@ -455,6 +470,7 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
IPage<Topic> page = new Page<>(pageNumber, pageSize);
QueryWrapper<Topic> topicQueryWrapper = new QueryWrapper<>();
topicQueryWrapper.eq("status", 0);
topicQueryWrapper.orderByDesc("reference_count");
return toPageDTO(page(page, topicQueryWrapper));
......@@ -469,6 +485,7 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
//2. 判断该话题是否存在
QueryWrapper<Topic> topicQueryWrapper = new QueryWrapper<>();
topicQueryWrapper.eq("topic_name",topicName);
topicQueryWrapper.eq("status",0);
Topic topic=getOne(topicQueryWrapper);
if (topic == null) {
throw new TopicServiceException(TopicErrorCode.TOPIC_NOT_EXISTS);
......@@ -542,12 +559,14 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
topics.add(topic);
});
return topics;
// 过滤掉被锁定的话题
List<Topic> topicList = topics.stream().filter((topic -> topic.getStatus() == 0)).collect(Collectors.toList());
return topicList;
}
@Override
public PageDTO<TopicDTO> getHotSearchTopics(Integer pageNumber, Integer pageSize) {
IPage<Topic> topicPage = topicMapper.selectHotSearchPage(new Page<Topic>(pageNumber, pageSize));
IPage<Topic> topicPage = topicMapper.selectHotSearchPage(new Page<>(pageNumber, pageSize));
return toPageDTO(topicPage);
}
......
......@@ -53,6 +53,20 @@ public class TopicUtils {
public static void main(String[] args) {
System.out.println(TopicUtils.parseTopics("#哈哈哈#今#哈哈哈#天你吃饭了吗#吃了#######"));
System.out.println(TopicUtils.encodeTopic("#哈哈哈#今#哈哈哈#天你吃饭了吗#吃了#######哈哈#a#b"));
System.out.println(TopicUtils.clearLockedTopics("#哈哈哈#今#哈哈哈#天你吃饭了吗#吃了#######哈哈#a#b", List.of("哈哈哈")));
}
/**
* 删除被锁定的话题
* @param content
* @param lockedTopics
* @return
*/
public static String clearLockedTopics(String content, List<String> lockedTopics) {
String newContent = content;
for (String topicName: lockedTopics) {
newContent = newContent.replace("#" + topicName + "#", "");
}
return encodeTopic(newContent);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment