/**
*
* @Description 首页搜索
* @param articleTitles 文章标题
* @param pageNumber 当前页码
* @param pageSize 每页显示条数
* @return Map 返回状态与文章列表
* Create at: 2019-04-10 08:55:49
* @author: ZhangPeng
* Revision:
* 2019-04-10 08:55:49 - first revision by ZhangPeng
*
*/
@PostMapping("searchArticle")
public Map<String,Object> searchArticle(String articleTitles,Integer pageNumber,Integer pageSize){
Map<String,Object> retMap = new HashMap<String,Object>();
try {
//将搜索关键字存入redis
if(null != redisUtil.get("hotSearch")) {
TreeMap<String,Integer> treeMap = (TreeMap<String,Integer>)redisUtil.get("hotSearch");
if(treeMap.containsKey(articleTitles)) {
treeMap.put(articleTitles, treeMap.get(articleTitles)+1);
}else {
treeMap.put(articleTitles,1);
}
redisUtil.set("hotSearch", treeMap,60L*60*24*30);
} else {
TreeMap<String,Integer> treeMap = new TreeMap<String,Integer>();
if(treeMap.containsKey(articleTitles)) {
treeMap.put(articleTitles, treeMap.get(articleTitles)+1);
}else {
treeMap.put(articleTitles,1);
}
redisUtil.set("hotSearch", treeMap,60L*60*24*30);
}
Article article = new Article();
article.setArticleTitle(articleTitles);
retMap.put("articleList", articleService.getPage(article, pageNumber, pageSize));
retMap.put("status", 1);
} catch (Exception e) {
e.printStackTrace();
retMap.put("status", 0);
}
return retMap;
}
/**
*
* @Description 热门搜索
* @return
* Create at: 2019-04-13 09:28:05
* @author: ZhangPeng
* Revision:
* 2019-04-13 09:28:05 - first revision by ZhangPeng
*
*/
@PostMapping("hotSearch")
public Map<String,Object>hotSearch(){
Map<String,Object> retMap = new HashMap<String,Object>();
try {
// 降序比较器
Comparator<Map.Entry<String, Integer>> valueComparator = new Comparator<Map.Entry<String,Integer>>() {
@Override
public int compare(Entry<String, Integer> o1,Entry<String, Integer> o2) {
// TODO Auto-generated method stub
return o2.getValue().compareTo(o1.getValue());
}
};
TreeMap<String,Integer> treeMap = (TreeMap<String,Integer>)redisUtil.get("hotSearch");
List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String,Integer>>(treeMap.entrySet());
Collections.sort(list,valueComparator);
retMap.put("hotSearch", list);
retMap.put("status", 1);
} catch (Exception e) {
retMap.put("status", 0);
e.printStackTrace();
}
return retMap;
}
简陋!简陋!简陋!不堪入目的代码,至于为啥要用treemap,只是因为我天真的认为treemap的排序是按照value来的,结果被现实狠狠的打脸,它是根据key来排序的,其中从redis中重新取出map的时候强制转换类型会报Type safety: Unchecked cast from Object to TreeMap<String,Integer>警告,不知为何,希望哪位大佬看到这段蹩脚的代码能帮忙解开小弟的疑惑,万分感谢,哎,赶进度,没时间仔细研究,再留一坑;;;;;;