浏览代码

关键词1.0版本功能开发
关键词联动优化

JiangChongBo 2 年之前
父节点
当前提交
f3e4cf708a

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

@@ -16,6 +16,8 @@ public interface KeywordFrequencyDao extends CrudDao<SearchFrequency> {
     List<String> getSearchFrom();
     void addKeyWordList(@Param("idList") int[] idList);
 
+    List<SearchFrequency> getvalueListByIds(@Param("idList") int[] idList);
+
     void delKeyWordById(@Param("id") Integer id);
 
     int insert(SearchFrequency searchFrequency);

+ 14 - 8
src/main/java/com/caimei/modules/product/service/KeywordFrequencyService.java

@@ -61,7 +61,8 @@ public class KeywordFrequencyService extends CrudService<KeywordFrequencyDao, Se
         keywordFrequencyDao.addKeyWordList(array);
         //保存后重置关键词redis缓存
         cacheKeyWord();
-        conKeyWord();
+        List<SearchFrequency> searchFrequencyVos = keywordFrequencyDao.getvalueListByIds(array);
+        conKeyWord(searchFrequencyVos);
 //        String[]  idList=ids.split(",");
 //        int[] array = Arrays.asList(idList).stream().mapToInt(Integer::parseInt).toArray();
 //        for (int i=0; i<array.length;i++){
@@ -122,13 +123,18 @@ public class KeywordFrequencyService extends CrudService<KeywordFrequencyDao, Se
      * redis缓存关键词(把所有的关键词整合到一个字符串中)
      * 用时从redis取出转成list集合返回给前端进行联动
      */
-    public void conKeyWord(){
-        List<SearchFrequencyVo> keywordList = keywordFrequencyDao.getKeywordList();
-        keywordList.stream().forEach(SearchFrequencyVo ->{
-            List<SearchFrequencyVo> searchFrequencyVos = keywordFrequencyDao.getvalueList(SearchFrequencyVo.getKeyword());
-            String keyword = JSONObject.toJSONString(searchFrequencyVos);//有值的字段才转
-            redisService.set(SearchFrequencyVo.getKeyword(),keyword,60L * 60 * 24 * 30);
-        });
+    public void conKeyWord(List<SearchFrequency> list){
+        List<SearchFrequency> keywordList = list;
+        for (SearchFrequency searchFrequency:keywordList) {
+            String str=searchFrequency.getKeyword();
+            String key="";
+            for(int i=0;i<str.length();i++){
+                key+=str.charAt(i);
+                List<SearchFrequencyVo> searchFrequencyVos = keywordFrequencyDao.getvalueList(key);
+                String keyword = JSONObject.toJSONString(searchFrequencyVos);//有值的字段才转
+                redisService.set(key,keyword,60L * 60 * 24 * 30);
+            }
+        }
 //        System.out.println(redisService.getExpireTime("keyword"));
 //        String key=redisService.get("keyword").toString();
 //        System.out.println(key);

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

@@ -5,6 +5,7 @@ import com.caimei.modules.order.entity.CmAuthorizedConsignment;
 import com.caimei.modules.order.entity.CmDiscernReceipt;
 import com.caimei.modules.order.utils.OrderUtil;
 import com.caimei.modules.product.entity.SearchFrequency;
+import com.caimei.modules.product.entity.SearchFrequencyVo;
 import com.caimei.modules.product.service.KeywordFrequencyService;
 import com.github.pagehelper.PageInfo;
 import com.thinkgem.jeesite.common.config.Global;
@@ -170,9 +171,13 @@ public class KeywordFrequencyController extends BaseController {
             searchFrequency.setId(searchFrequency.getKeyId().toString());
         }
         keywordFrequencyService.save(searchFrequency);
-        //保存后重置关键词redis缓存
-        keywordFrequencyService.cacheKeyWord();
-        keywordFrequencyService.conKeyWord();
+        if(searchFrequency.getStatus()==2){
+            //保存后重置关键词redis缓存
+            keywordFrequencyService.cacheKeyWord();
+            List<SearchFrequency> list=new ArrayList<>();
+            list.add(searchFrequency);
+            keywordFrequencyService.conKeyWord(list);
+        }
         addMessage(redirectAttributes, "保存成功");
         //编辑
         if(null !=searchFrequency.getStatus()&&1==searchFrequency.getStatus()){
@@ -284,7 +289,7 @@ public class KeywordFrequencyController extends BaseController {
             keywordFrequencyService.importKeyword(searchFrequencyList);
             //保存后重置关键词redis缓存
             keywordFrequencyService.cacheKeyWord();
-            keywordFrequencyService.conKeyWord();
+            keywordFrequencyService.conKeyWord(searchFrequencyList);
         } catch (IOException  e) {//| ParseException
             e.printStackTrace();
         }

+ 13 - 1
src/main/resources/mappings/modules/product/SearchFrequencyMapper.xml

@@ -65,6 +65,18 @@
             #{reId,jdbcType=INTEGER}
         </foreach>
     </update>
+    <select id="getvalueListByIds" resultType="com.caimei.modules.product.entity.SearchFrequency">
+        select
+        keyword
+        from cm_user_search_frequency
+        where trueStatus=1
+        and   delStatus=1
+        and keyword is not null
+        and id in
+        <foreach collection="idList" open="(" separator="," close=")" item="reId">
+            #{reId,jdbcType=INTEGER}
+        </foreach>
+    </select>
     <update id="delKeyWordById" parameterType="java.lang.Integer">
         update cm_user_search_frequency set delStatus=0
         where id =#{id}
@@ -111,7 +123,7 @@
           and   delStatus=1
           and keyword is not null
         <if test="keyword != null and keyword != ''">
-            and keyword like concat('%', #{keyword},'%')
+            and keyword like concat(#{keyword},'%')
         </if>
     </select>
 </mapper>