Commit 019c4952 by 段启岩

热搜话题加热度

parent c3b87d00
......@@ -4,6 +4,8 @@ import cn.meteor.beyondclouds.core.queue.message.DataItemType;
import cn.meteor.beyondclouds.modules.search.entity.SearchDegree;
import cn.meteor.beyondclouds.modules.search.mapper.SearchDegreeMapper;
import cn.meteor.beyondclouds.modules.search.service.ISearchDegreeService;
import cn.meteor.beyondclouds.modules.search.util.TopicScoreUtils;
import cn.meteor.beyondclouds.util.TopicUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
......@@ -39,7 +41,7 @@ public class SearchDegreeServiceImpl extends ServiceImpl<SearchDegreeMapper, Sea
String itemId = searchDegree.getItemId();
if (stringSearchDegreeMap.containsKey(itemId)) {
SearchDegree finalSearchDegree = stringSearchDegreeMap.get(itemId);
finalSearchDegree.setDegree(finalSearchDegree.getDegree() + searchDegree.getDegree());
finalSearchDegree.setDegree(TopicScoreUtils.setScale(finalSearchDegree.getDegree() + searchDegree.getDegree()));
updateById(finalSearchDegree);
} else {
save(searchDegree);
......
......@@ -13,4 +13,8 @@ public class TopicScoreUtils {
double score = keywordLen / topicLen;
return new BigDecimal(score).setScale(2, RoundingMode.DOWN).doubleValue();
}
public static double setScale(double value) {
return new BigDecimal(value).setScale(2, RoundingMode.DOWN).doubleValue();
}
}
......@@ -24,6 +24,8 @@ public class TopicDTO {
private String cover;
private Double degree;
private String topicDescrption;
private Integer referenceCount;
......
package cn.meteor.beyondclouds.modules.topic.mapper;
import cn.meteor.beyondclouds.modules.post.entity.Post;
import cn.meteor.beyondclouds.modules.topic.dto.TopicDTO;
import cn.meteor.beyondclouds.modules.topic.entity.Topic;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
......@@ -35,7 +36,7 @@ public interface TopicMapper extends BaseMapper<Topic> {
* @param topicPage
* @return
*/
IPage<Topic> selectHotSearchPage(Page<Topic> topicPage);
IPage<TopicDTO> selectHotSearchPage(Page<Topic> topicPage);
/**
* 搜索话题下的所有动态
......
......@@ -6,8 +6,9 @@
select * from topic where topic_name like CONCAT('%',#{keywords},'%')
</select>
<select id="selectHotSearchPage" resultType="cn.meteor.beyondclouds.modules.topic.entity.Topic">
SELECT t.*
<select id="selectHotSearchPage" resultType="cn.meteor.beyondclouds.modules.topic.dto.TopicDTO">
SELECT t.*,
sd.degree `degree`
FROM topic t, search_degree sd
WHERE t.topic_id = sd.item_id
AND sd.item_type = 'TOPIC'
......
......@@ -567,8 +567,29 @@ public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements
@Override
public PageDTO<TopicDTO> getHotSearchTopics(Integer pageNumber, Integer pageSize) {
IPage<Topic> topicPage = topicMapper.selectHotSearchPage(new Page<>(pageNumber, pageSize));
return toPageDTO(topicPage);
IPage<TopicDTO> topicPage = topicMapper.selectHotSearchPage(new Page<>(pageNumber, pageSize));
List<TopicDTO> topicList = topicPage.getRecords();
if (SubjectUtils.isAuthenticated()) {
Set<String> followedTopicIds = topicFollowService.getFollowedTopicIds();
topicList.forEach(topic -> {
TopicDTO topicDTO = new TopicDTO();
BeanUtils.copyProperties(topic, topicDTO);
topicDTO.setFollowedTopic(followedTopicIds.contains(topic.getTopicId()));
});
} else {
topicList.forEach(topic -> {
TopicDTO topicDTO = new TopicDTO();
BeanUtils.copyProperties(topic, topicDTO);
topicDTO.setFollowedTopic(false);
});
}
PageDTO<TopicDTO> pageDTO = new PageDTO<>();
PageUtils.copyMeta(topicPage, pageDTO);
pageDTO.setDataList(topicList);
return pageDTO;
}
@Override
......
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