|
@@ -61,6 +61,7 @@ public class SearchProductServiceImpl implements SearchProductService {
|
|
|
|
|
|
@Autowired
|
|
|
private RedisService redisService;
|
|
|
+
|
|
|
/**
|
|
|
* 根据关键词搜索商品
|
|
|
*
|
|
@@ -605,26 +606,29 @@ public class SearchProductServiceImpl implements SearchProductService {
|
|
|
});
|
|
|
return productHotSearch;
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 统计关键词及次数
|
|
|
+ *
|
|
|
* @param fromType
|
|
|
* @param path
|
|
|
* @param keyword
|
|
|
* @return
|
|
|
*/
|
|
|
- public ResponseJson conKeyword(Integer fromType,String path,String keyword){
|
|
|
- Date date=new Date();
|
|
|
+ @Override
|
|
|
+ public ResponseJson conKeyword(Integer fromType, String path, String keyword) {
|
|
|
+ Date date = new Date();
|
|
|
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
sf.format(date);
|
|
|
//根据关键词和来源查询数据库是否存在(存在来源也相同时增加次数,存在但来源不同时和不存在则新增)
|
|
|
- List<SearchFrequencyVo> searchFrequencyVoList = searchFrequencyMapper.getInfoBykeyword(keyword,fromType);
|
|
|
- if(null!= searchFrequencyVoList && searchFrequencyVoList.size()>0){
|
|
|
+ List<SearchFrequencyVo> searchFrequencyVoList = searchFrequencyMapper.getInfoBykeyword(keyword, fromType);
|
|
|
+ if (null != searchFrequencyVoList && searchFrequencyVoList.size() > 0) {
|
|
|
//存在 统计次数
|
|
|
- Integer frequency= searchFrequencyVoList.get(0).getFrequency()+1;
|
|
|
- searchFrequencyMapper.upFrequencyById(searchFrequencyVoList.get(0).getId(),frequency);
|
|
|
- }else{
|
|
|
+ Integer frequency = searchFrequencyVoList.get(0).getFrequency() + 1;
|
|
|
+ searchFrequencyMapper.upFrequencyById(searchFrequencyVoList.get(0).getId(), frequency);
|
|
|
+ } else {
|
|
|
//不存在 新增
|
|
|
- SearchFrequencyVo sea=new SearchFrequencyVo();
|
|
|
+ SearchFrequencyVo sea = new SearchFrequencyVo();
|
|
|
sea.setKeyword(keyword);
|
|
|
sea.setFrequency(1);
|
|
|
sea.setPath(path);
|
|
@@ -638,44 +642,40 @@ public class SearchProductServiceImpl implements SearchProductService {
|
|
|
/**
|
|
|
* 获取已加入关键词库的关键词进行搜索联动
|
|
|
* 从redis获取,获取不到则去数据库获取
|
|
|
+ *
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public List<SearchKeywordyVo> getKeywordList(String keyword){
|
|
|
+ public List<SearchKeywordyVo> getKeywordList(String keyword) {
|
|
|
//先从reids中获取keyword值,不存在时在查询数据库
|
|
|
- List<SearchKeywordyVo> searchFrequencyVos=new ArrayList<>();
|
|
|
- if(redisService.getExpireTime(keyword)>0){
|
|
|
+ List<SearchKeywordyVo> searchFrequencyVos = new ArrayList<>();
|
|
|
+ if (redisService.getExpireTime(keyword) > 0) {
|
|
|
log.info("-------------获取redis中的数据--------------");
|
|
|
- searchFrequencyVos= com.alibaba.fastjson.JSONArray.parseArray(redisService.get(keyword).toString(),SearchKeywordyVo.class);
|
|
|
- }
|
|
|
- else{
|
|
|
+ searchFrequencyVos = com.alibaba.fastjson.JSONArray.parseArray(redisService.get(keyword).toString(), SearchKeywordyVo.class);
|
|
|
+ } else {
|
|
|
log.info("-------------获取数据库中的数据--------------");
|
|
|
searchFrequencyVos = searchFrequencyMapper.getKeywordList(keyword);
|
|
|
}
|
|
|
return searchFrequencyVos;
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* redis缓存关键词(把所有的关键词整合到一个字符串中)
|
|
|
* 用时从redis取出转成list集合返回给前端进行联动
|
|
|
*/
|
|
|
- public void conKeyWord(){
|
|
|
+ @Override
|
|
|
+ public void conKeyWord() {
|
|
|
List<SearchKeywordyVo> keywordList = searchFrequencyMapper.getKeywordList(null);
|
|
|
- for (SearchKeywordyVo searchFrequency:keywordList) {
|
|
|
- String str=searchFrequency.getKeyword();
|
|
|
- String key="";
|
|
|
- for(int i=0;i<str.length();i++){
|
|
|
- key+=str.charAt(i);
|
|
|
+ for (SearchKeywordyVo searchFrequency : keywordList) {
|
|
|
+ String str = searchFrequency.getKeyword();
|
|
|
+ String key = "";
|
|
|
+ for (int i = 0; i < str.length(); i++) {
|
|
|
+ key += str.charAt(i);
|
|
|
List<SearchKeywordyVo> searchFrequencyVos = searchFrequencyMapper.getvalueList(key);
|
|
|
- String keyword = com.alibaba.fastjson.JSONObject.toJSONString(searchFrequencyVos);//有值的字段才转
|
|
|
- redisService.set(key,keyword,60L * 60 * 24 * 30);
|
|
|
+ //有值的字段才转
|
|
|
+ String keyword = com.alibaba.fastjson.JSONObject.toJSONString(searchFrequencyVos);
|
|
|
+ redisService.set(key, keyword, 60L * 60 * 24 * 30);
|
|
|
}
|
|
|
}
|
|
|
- System.out.println(redisService.getExpireTime("恩"));
|
|
|
- System.out.println(redisService.get("恩"));
|
|
|
- System.out.println(redisService.getExpireTime("光"));
|
|
|
- System.out.println(redisService.get("光"));
|
|
|
-// System.out.println(redisService.getExpireTime("keyword"));
|
|
|
-// String key=redisService.get("keyword").toString();
|
|
|
-// System.out.println(key);
|
|
|
}
|
|
|
}
|