Просмотр исходного кода

关键词1.0版本功能开发
1.新加关键词redis缓存
2.查询关键词时添加排序逻辑

JiangChongBo 2 лет назад
Родитель
Сommit
34d9526013

+ 3 - 0
src/main/java/com/caimei/modules/product/dao/KeywordFrequencyDao.java

@@ -1,6 +1,7 @@
 package com.caimei.modules.product.dao;
 
 import com.caimei.modules.product.entity.SearchFrequency;
+import com.caimei.modules.product.entity.SearchFrequencyVo;
 import com.thinkgem.jeesite.common.persistence.CrudDao;
 import com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao;
 import org.apache.ibatis.annotations.Param;
@@ -21,4 +22,6 @@ public interface KeywordFrequencyDao extends CrudDao<SearchFrequency> {
 
     int update(SearchFrequency searchFrequency);
     List<SearchFrequency> getInfoByIdList(@Param("idList") int[] idList);
+
+    List<SearchFrequencyVo> getKeywordList();
 }

+ 49 - 0
src/main/java/com/caimei/modules/product/entity/SearchFrequencyVo.java

@@ -0,0 +1,49 @@
+package com.caimei.modules.product.entity;
+
+import com.thinkgem.jeesite.common.persistence.DataEntity;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.sql.Timestamp;
+
+/**
+ * 用于redis缓存(list和json互转)
+ */
+@Data
+public class SearchFrequencyVo{
+       private Integer id ;
+    /**
+     * 数据来源(1:首页;2:信息中心)
+     */
+    private Integer fromSearch   ;
+    /**
+     * 接口路径
+     */
+    private String  path;
+    /**
+     * 关键词
+     */
+    private String  keyword ;
+    /**
+     * 关键词出现次数
+     */
+    private Integer  frequency ;
+    /**
+     * 搜索时间
+     */
+    private Timestamp searchTime ;
+    /**
+     * 0:未加入关键词库;1:已加入关键词库
+     */
+    private Integer trueStatus;
+
+    /**
+     * 0:已删除;1未删除
+     */
+    private Integer delStatus;
+    /**
+     *  区分是关键词界面还是关键词库界面 (1关键词;2关键词库)
+     */
+    private Integer status;
+
+}

+ 24 - 3
src/main/java/com/caimei/modules/product/service/KeywordFrequencyService.java

@@ -1,12 +1,16 @@
 package com.caimei.modules.product.service;
 
+import com.alibaba.fastjson.JSONObject;
 import com.caimei.modules.order.entity.CmAuthorizedConsignment;
 import com.caimei.modules.product.dao.KeywordFrequencyDao;
 import com.caimei.modules.product.entity.HomeProduct;
 import com.caimei.modules.product.entity.SearchFrequency;
+import com.caimei.modules.product.entity.SearchFrequencyVo;
+import com.caimei.redis.RedisService;
 import com.thinkgem.jeesite.common.persistence.DataEntity;
 import com.thinkgem.jeesite.common.persistence.Page;
 import com.thinkgem.jeesite.common.service.CrudService;
+import net.sf.json.JSONArray;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -14,8 +18,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
 
 @Service
 @Transactional(readOnly = true)
@@ -23,7 +26,8 @@ public class KeywordFrequencyService extends CrudService<KeywordFrequencyDao, Se
 
    @Autowired
    private KeywordFrequencyDao keywordFrequencyDao;
-
+    @Autowired
+    private RedisService redisService;
 
 //   public Page<SearchFrequency> getKeyInfo(Page<SearchFrequency> searchFrequency,SearchFrequency search){
 //       DataEntity entity= new DataEntity();
@@ -55,6 +59,8 @@ public class KeywordFrequencyService extends CrudService<KeywordFrequencyDao, Se
         String[]  idList=ids.split(",");
         int[] array = Arrays.asList(idList).stream().mapToInt(Integer::parseInt).toArray();
         keywordFrequencyDao.addKeyWordList(array);
+        //保存后重置关键词redis缓存
+        cacheKeyWord();
 //        String[]  idList=ids.split(",");
 //        int[] array = Arrays.asList(idList).stream().mapToInt(Integer::parseInt).toArray();
 //        for (int i=0; i<array.length;i++){
@@ -96,4 +102,19 @@ public class KeywordFrequencyService extends CrudService<KeywordFrequencyDao, Se
             }
         }
     }
+
+    /**
+     * redis缓存关键词(把所有的关键词整合到一个字符串中)
+     * 用时从redis取出转成list集合返回给前端进行联动
+     */
+    public void cacheKeyWord(){
+        //获取已加入关键词库有效的关键词进行缓存
+        List<SearchFrequencyVo> keywordList = keywordFrequencyDao.getKeywordList();
+        String keyword = JSONObject.toJSONString(keywordList);//有值的字段才转
+//        String keyword =JSONArray.fromObject(keywordList).toString();//所有字段属性都转
+        redisService.set("keyword",keyword,60L * 60 * 24 * 30);
+//        System.out.println(redisService.getExpireTime("keyword"));
+//        String key=redisService.get("keyword").toString();
+//        System.out.println(key);
+    }
 }

+ 4 - 0
src/main/java/com/caimei/modules/product/web/KeywordFrequencyController.java

@@ -170,6 +170,8 @@ public class KeywordFrequencyController extends BaseController {
             searchFrequency.setId(searchFrequency.getKeyId().toString());
         }
         keywordFrequencyService.save(searchFrequency);
+        //保存后重置关键词redis缓存
+        keywordFrequencyService.cacheKeyWord();
         addMessage(redirectAttributes, "保存成功");
         //编辑
         if(null !=searchFrequency.getStatus()&&1==searchFrequency.getStatus()){
@@ -279,6 +281,8 @@ public class KeywordFrequencyController extends BaseController {
             }
             //保存文件数据
             keywordFrequencyService.importKeyword(searchFrequencyList);
+            //保存后重置关键词redis缓存
+            keywordFrequencyService.cacheKeyWord();
         } catch (IOException  e) {//| ParseException
             e.printStackTrace();
         }

+ 16 - 0
src/main/resources/mappings/modules/product/SearchFrequencyMapper.xml

@@ -19,6 +19,12 @@
              <if test="fromSearch != null">
                  AND fromSearch = #{fromSearch}
              </if>
+             <if test="trueStatus == 0">
+                 order by  frequency desc
+             </if>
+             <if test="trueStatus == 1">
+                 order by  searchTime desc
+             </if>
          </select>
 
     <select id="getSearchFrom" resultType="java.lang.String">
@@ -87,4 +93,14 @@
             #{reId,jdbcType=INTEGER}
         </foreach>
     </select>
+
+
+    <select id="getKeywordList" resultType="com.caimei.modules.product.entity.SearchFrequencyVo">
+        select
+            keyword
+        from cm_user_search_frequency
+        where trueStatus=1
+          and   delStatus=1
+          and keyword is not null
+    </select>
 </mapper>