Pārlūkot izejas kodu

增加联动统计功能

JiangChongBo 2 gadi atpakaļ
vecāks
revīzija
cdd29fd0bb

+ 41 - 5
src/main/java/com/caimei365/tools/listener/IpSaveListener.java

@@ -48,6 +48,8 @@ public class IpSaveListener implements RocketMQListener<String> {
         String saveName = params[3];
         IpSavePo ipSavePo = new IpSavePo();
         SearchFrequencyVo searchFrequencyVo=new SearchFrequencyVo();
+        String productFlag="";
+        String linkageFlag="";
         searchFrequencyVo.setPath(path);
         if (StringUtils.isNotBlank(param)) {
             ipSavePo.setParams(param);
@@ -81,6 +83,40 @@ public class IpSaveListener implements RocketMQListener<String> {
                             }
                         }
                     }
+                    if (s.contains("producFlag") && s.contains("=")) {
+                        String[] split1 = s.split("=");
+                        if (split1.length > 1) {
+                            String value = split1[1];
+                            try {
+                                String va = java.net.URLDecoder.decode(value, "UTF-8");
+                                //部分美国端口发送过来的参数需要二次解码(keyword已编码过)
+                                if (va.contains("%")) {
+                                    va = java.net.URLDecoder.decode(va, "UTF-8");
+                                }
+                                ipSavePo.setKeyWord(va);
+                                productFlag=va;
+                            } catch (UnsupportedEncodingException e) {
+                                e.printStackTrace();
+                            }
+                        }
+                    }
+                    if (s.contains("linkageFlag") && s.contains("=")) {
+                        String[] split1 = s.split("=");
+                        if (split1.length > 1) {
+                            String value = split1[1];
+                            try {
+                                String va = java.net.URLDecoder.decode(value, "UTF-8");
+                                //部分美国端口发送过来的参数需要二次解码(keyword已编码过)
+                                if (va.contains("%")) {
+                                    va = java.net.URLDecoder.decode(va, "UTF-8");
+                                }
+                                ipSavePo.setKeyWord(va);
+                                linkageFlag=va;
+                            } catch (UnsupportedEncodingException e) {
+                                e.printStackTrace();
+                            }
+                        }
+                    }
                 }
             }
         }
@@ -99,24 +135,24 @@ public class IpSaveListener implements RocketMQListener<String> {
         ipSavePo.setSaveTime(aLong);
         //根据来源统计关键词
         //首页搜索  fromSearch = 1
-        if(null !=searchFrequencyVo &&"/commodity/search/query/product".equals(searchFrequencyVo.getPath())){
+        if(null !=searchFrequencyVo &&StringUtils.isNotEmpty(productFlag)&&"1".equals(productFlag)&&"/commodity/search/query/product".equals(searchFrequencyVo.getPath())){
             searchFrequencyVo.setFromSearch(1);
             if(StringUtils.isNotBlank(searchFrequencyVo.getKeyword())){
-                productService.conKeyword(searchFrequencyVo.getFromSearch(),searchFrequencyVo.getPath(),searchFrequencyVo.getKeyword());
+                productService.conKeyword(searchFrequencyVo.getFromSearch(),searchFrequencyVo.getPath(),searchFrequencyVo.getKeyword(),linkageFlag);
             }
         }
         //信息中心搜索  fromSearch = 2
         if(null !=searchFrequencyVo &&"/commodity/search/query/article".equals(searchFrequencyVo.getPath())){
             searchFrequencyVo.setFromSearch(2);
             if(StringUtils.isNotBlank(searchFrequencyVo.getKeyword())){
-                productService.conKeyword(searchFrequencyVo.getFromSearch(),searchFrequencyVo.getPath(),searchFrequencyVo.getKeyword());
+                productService.conKeyword(searchFrequencyVo.getFromSearch(),searchFrequencyVo.getPath(),searchFrequencyVo.getKeyword(),linkageFlag);
             }
         }
         //美业资料搜索 fromSearch=3
         if(null !=searchFrequencyVo &&"/commodity/product/archive".equals(searchFrequencyVo.getPath())){
             searchFrequencyVo.setFromSearch(3);
             if(StringUtils.isNotBlank(searchFrequencyVo.getKeyword())){
-                productService.conKeyword(searchFrequencyVo.getFromSearch(),searchFrequencyVo.getPath(),searchFrequencyVo.getKeyword());
+                productService.conKeyword(searchFrequencyVo.getFromSearch(),searchFrequencyVo.getPath(),searchFrequencyVo.getKeyword(),linkageFlag);
             }
         }
 //        //供应商主页搜索 fromSearch=4 (2022.11.15暂时不考虑该关键词信息来源)
@@ -130,7 +166,7 @@ public class IpSaveListener implements RocketMQListener<String> {
         if(null !=searchFrequencyVo &&"/commodity/search/query/baike/keyword".equals(searchFrequencyVo.getPath())){
             searchFrequencyVo.setFromSearch(4);
             if(StringUtils.isNotBlank(searchFrequencyVo.getKeyword())){
-                productService.conKeyword(searchFrequencyVo.getFromSearch(),searchFrequencyVo.getPath(),searchFrequencyVo.getKeyword());
+                productService.conKeyword(searchFrequencyVo.getFromSearch(),searchFrequencyVo.getPath(),searchFrequencyVo.getKeyword(),linkageFlag);
             }
         }
         // 用户行为记录

+ 2 - 0
src/main/java/com/caimei365/tools/mapper/BaseMapper.java

@@ -91,4 +91,6 @@ public interface BaseMapper {
     void saveInfo(SearchFrequencyVo searchFrequencyVo);
 
     void upFrequencyById(Integer id,Integer frequency);
+    void uplinkageFrequencyById(Integer id,Integer linkageFrequency,Integer frequency,Integer delStatus);
+
 }

+ 4 - 0
src/main/java/com/caimei365/tools/model/po/SearchFrequencyVo.java

@@ -31,4 +31,8 @@ public class SearchFrequencyVo {
      * 0:未加入关键词库;1:已加入关键词库
      */
     private Integer trueStatus;
+    /**
+     * 联动搜索次数
+     */
+    private Integer linkageFrequency;
 }

+ 1 - 1
src/main/java/com/caimei365/tools/service/ProductService.java

@@ -9,5 +9,5 @@ import org.springframework.stereotype.Service;
  * @date : 2021/10/26
  */
 public interface ProductService {
-     void conKeyword(Integer fromType,String path,String keyword);
+     void conKeyword(Integer fromType,String path,String keyword,String linkageFlag);
     }

+ 14 - 3
src/main/java/com/caimei365/tools/service/impl/ProductServiceImpl.java

@@ -3,6 +3,7 @@ package com.caimei365.tools.service.impl;
 import com.caimei365.tools.mapper.BaseMapper;
 import com.caimei365.tools.model.po.SearchFrequencyVo;
 import com.caimei365.tools.service.ProductService;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -30,7 +31,7 @@ public class ProductServiceImpl implements ProductService {
      * @return
      */
     @Override
-    public void conKeyword(Integer fromType,String path,String keyword){
+    public void conKeyword(Integer fromType,String path,String keyword,String linkageFlag){
         Date date=new Date();
         SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         sd.format(date);
@@ -41,13 +42,23 @@ public class ProductServiceImpl implements ProductService {
         List<SearchFrequencyVo> searchFrequencyVoList = baseMapper.getInfoBykeyword(keyword,fromType);
         if(null!= searchFrequencyVoList && searchFrequencyVoList.size()>0){
             //存在 统计次数
-            Integer frequency= searchFrequencyVoList.get(0).getFrequency()+1;
-            baseMapper.upFrequencyById(searchFrequencyVoList.get(0).getId(),frequency);
+            //判断是否是关键词联动搜索
+            if(StringUtils.isNotEmpty(linkageFlag)&&"1".equals(linkageFlag)){
+                //联动次数加1,搜索次数重置,从新出现在关键词列表
+                Integer linkageFrequency=searchFrequencyVoList.get(0).getLinkageFrequency()+1;
+                Integer frequency=0;
+                Integer delStatus=1;
+                baseMapper.uplinkageFrequencyById(searchFrequencyVoList.get(0).getId(),linkageFrequency,frequency,delStatus);
+            }else{
+                Integer frequency= searchFrequencyVoList.get(0).getFrequency()+1;
+                baseMapper.upFrequencyById(searchFrequencyVoList.get(0).getId(),frequency);
+            }
         }else{
             //不存在 新增
             SearchFrequencyVo sea=new SearchFrequencyVo();
             sea.setKeyword(keyword);
             sea.setFrequency(1);
+            sea.setLinkageFrequency(0);
             sea.setPath(path);
             sea.setFromSearch(fromType);
             sea.setSearchTime(new java.sql.Timestamp(cal.getTime().getTime()));

+ 5 - 2
src/main/resources/mapper/BaseMapper.xml

@@ -119,9 +119,12 @@
     <update id="upFrequencyById">
         update cm_user_search_frequency set frequency=#{frequency} where id=#{id}
     </update>
+    <update id="uplinkageFrequencyById">
+        update cm_user_search_frequency set linkageFrequency=#{linkageFrequency}, frequency=#{frequency},delStatus=#{delStatus} where id=#{id}
+    </update>
     <insert id="saveInfo" parameterType="com.caimei365.tools.model.po.SearchFrequencyVo">
-        insert into cm_user_search_frequency(fromSearch,path,keyword,frequency,searchTime)
-        values (#{fromSearch},#{path},#{keyword},#{frequency},#{searchTime})
+        insert into cm_user_search_frequency(fromSearch,path,keyword,frequency,searchTime,linkageFrequency)
+        values (#{fromSearch},#{path},#{keyword},#{frequency},#{searchTime},#{linkageFrequency})
 
     </insert>
 </mapper>