Bläddra i källkod

标签库增加联动搜索V1.2

kaick 1 år sedan
förälder
incheckning
e6693073fb

+ 12 - 1
src/main/java/com/caimei365/manager/controller/caimei/keyword/KeyWordApi.java

@@ -46,6 +46,17 @@ public class KeyWordApi {
         return keyWordService.getKeyWordList(keyword, searchTimeCode, fromSearch, beginTime, endTime, labelStatus, pageNum, pageSize);
     }
 
+    /**
+     * 标签库是否支持联动搜索
+     *
+     * @param id
+     * @return
+     */
+    @GetMapping("/findLinkageStatus")
+    public ResponseJson findLinkageStatus(String id) {
+        return keyWordService.findLinkageStatus(id);
+    }
+
     /**
      * 加入标签库
      *
@@ -87,7 +98,7 @@ public class KeyWordApi {
      * @return
      */
     @GetMapping("/insert/label")
-    public ResponseJson insertLabel(String keyword) {
+    public ResponseJson insertLabel(KeyWord keyword) {
         return keyWordService.insertLabel(keyword);
     }
 

+ 5 - 0
src/main/java/com/caimei365/manager/dao/KeyWordDao.java

@@ -4,6 +4,7 @@ import com.caimei365.manager.entity.caimei.KeyWord;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author zzj
@@ -24,5 +25,9 @@ public interface KeyWordDao {
 
     Integer findKeywordExist(String keyword);
 
+    Map<String, String> findLinkageStatus(String id);
+
     void updateDelFlag(String id);
+
+    void updateCmUserSearchFrequency(KeyWord keyWord);
 }

+ 7 - 1
src/main/java/com/caimei365/manager/entity/caimei/KeyWord.java

@@ -3,6 +3,7 @@ package com.caimei365.manager.entity.caimei;
 import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
 import lombok.Data;
+import lombok.experimental.Accessors;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
@@ -11,6 +12,7 @@ import java.util.Date;
 /**
  * @author zzj
  */
+@Accessors(chain  = true )
 @Data
 public class KeyWord implements Serializable {
     private static final long serialVersionUID = 1L;
@@ -35,7 +37,11 @@ public class KeyWord implements Serializable {
      */
     @ExcelIgnore
     private Integer frequency;
-
+    /**
+     * 联动搜索状态:0未启用,1已启用
+     */
+    @ExcelIgnore
+    private Integer linkageStatus;
     /**
      * 添加到标签库的时间
      */

+ 4 - 1
src/main/java/com/caimei365/manager/service/caimei/KeyWordService.java

@@ -12,13 +12,16 @@ import java.util.List;
 public interface KeyWordService {
     ResponseJson<PaginationVo<KeyWord>> getKeyWordList(String keyWord, Integer searchTimeCode, Integer fromSearch, String beginTime, String endTime, Integer labelStatus, int pageNum, int pageSize);
 
+    ResponseJson findLinkageStatus(String id);
+
     ResponseJson joinLabel(String id);
 
     ResponseJson<PaginationVo<KeyWord>> getRecommendList(String keyword, String beginTime, String endTime, Integer pageNum, Integer pageSize);
 
     ResponseJson ignoreLabel(String id);
 
-    ResponseJson insertLabel(String keyword);
+    ResponseJson insertLabel(KeyWord keyWord);
 
     ResponseJson deleteLabel(String id);
+
 }

+ 43 - 7
src/main/java/com/caimei365/manager/service/caimei/impl/KeyWordServiceImpl.java

@@ -1,7 +1,7 @@
 package com.caimei365.manager.service.caimei.impl;
 
 import cn.hutool.core.lang.Assert;
-import com.alibaba.excel.util.StringUtils;
+import com.caimei.utils.StringUtils;
 import com.caimei365.manager.dao.KeyWordDao;
 import com.caimei365.manager.entity.PaginationVo;
 import com.caimei365.manager.entity.ResponseJson;
@@ -47,6 +47,37 @@ public class KeyWordServiceImpl implements KeyWordService {
         return ResponseJson.success(pageData);
     }
 
+    @Override
+    public ResponseJson findLinkageStatus(String id) {
+        Map<String, String> linkageMap = keyWordDao.findLinkageStatus(id);
+        String linkageText = "";
+        if (null == linkageMap || null == linkageMap.get("product")) {
+            linkageText += ",商品";
+        }
+        if (null == linkageMap || null == linkageMap.get("cm_product_archive")) {
+            linkageText += ",美业资料";
+        }
+        if (null == linkageMap || null == linkageMap.get("info")) {
+            linkageText += ",信息平台";
+        }
+        if (null == linkageMap || null == linkageMap.get("cm_baike_product")) {
+            linkageText += ",采美百科";
+        }
+        int linkageStatus = "".equals(linkageText) ? 1 : 0;
+        keyWordDao.updateCmUserSearchFrequency(new KeyWord()
+                .setId(Integer.valueOf(id))
+                .setLinkageStatus(linkageStatus));
+
+        if ("".equals(linkageText)) {
+            linkageText = "关联成功";
+        } else {
+            linkageText = "该标签需关联上" + linkageText.substring(1) + "后才可开启";
+        }
+        return ResponseJson.success(linkageText, linkageStatus);
+
+    }
+
+
     @Override
     public ResponseJson joinLabel(String id) {
         Assert.notBlank(id);
@@ -90,13 +121,18 @@ public class KeyWordServiceImpl implements KeyWordService {
     }
 
     @Override
-    public ResponseJson insertLabel(String keyword) {
-        Integer keywordExist = keyWordDao.findKeywordExist(keyword);
-        if (null == keywordExist) {
-            keyWordDao.insertLabel(keyword);
-            return ResponseJson.success();
+    public ResponseJson insertLabel(KeyWord keyWord) {
+        if (keyWord.getId() == null) {
+            Integer keywordExist = keyWordDao.findKeywordExist(keyWord.getKeyword());
+            if (null == keywordExist) {
+                keyWordDao.insertLabel(keyWord.getKeyword());
+                return ResponseJson.success();
+            } else {
+                return ResponseJson.success("关键词已存在");
+            }
         } else {
-            return ResponseJson.success("关键词已存在");
+            keyWordDao.updateCmUserSearchFrequency(keyWord);
+            return ResponseJson.success();
         }
     }
 

+ 2 - 1
src/main/resources/mapper/CmShopLabelDao.xml

@@ -47,7 +47,8 @@
         where relevanceId = #{relevanceId}
     </update>
     <select id="shopLabelList" resultType="com.caimei365.manager.entity.caimei.CmShopLabel">
-        SELECT csl.*, cusf.keyword, cusf.frequency, cusf.searchTime, cusf.fromSearch
+        SELECT csl.*, cusf.keyword, cusf.frequency,
+        cusf.linkageStatus, cusf.searchTime, cusf.fromSearch
         FROM cm_shop_label csl
         LEFT JOIN cm_user_search_frequency cusf ON csl.keywordId = cusf.id
         <where>

+ 52 - 5
src/main/resources/mapper/KeyWordDao.xml

@@ -2,13 +2,13 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.caimei365.manager.dao.KeyWordDao">
     <insert id="insertLabel">
-        insert into cm_user_search_frequency(fromSearch, keyword, frequency, trueStatus, addTime)
-        values (1, #{keyword}, 0, 1, now())
+        insert into cm_user_search_frequency(fromSearch, keyword, frequency, trueStatus, addTime,linkageStatus)
+        values (1, #{keyword}, 0, 1, now(),#{linkageStatus})
     </insert>
 
     <insert id="insertLabelByExcel">
-        insert into cm_user_search_frequency(fromSearch, keyword, frequency, trueStatus, addTime)
-        values (3, #{keyword}, 0, 1, now())
+        insert into cm_user_search_frequency(fromSearch, keyword, frequency, trueStatus, addTime,linkageStatus)
+        values (3, #{keyword}, 0, 1, now(),#{linkageStatus})
     </insert>
 
     <update id="updateLabelStatus">
@@ -31,8 +31,27 @@
         where id = #{id}
     </update>
 
+    <update id="updateCmUserSearchFrequency" parameterType="com.caimei365.manager.entity.caimei.KeyWord">
+        update cm_user_search_frequency
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="fromSearch != null">fromSearch = #{fromSearch},</if>
+            <if test="keyword != null and keyword != ''">keyword = #{keyword},</if>
+            <if test="frequency != null">frequency = #{frequency},</if>
+<!--            <if test="trueStatus != null">trueStatus = #{trueStatus},</if>-->
+<!--            <if test="delStatus != null">delStatus = #{delStatus},</if>-->
+<!--            <if test="linkageFrequency != null">linkageFrequency = #{linkageFrequency},</if>-->
+            <if test="linkageStatus != null">linkageStatus = #{linkageStatus},</if>
+            <if test="searchTime != null">searchTime = #{searchTime},</if>
+<!--            <if test="recommendStatus != null and recommendStatus != ''">recommendStatus = #{recommendStatus},</if>-->
+            <if test="recommendTime != null">recommendTime = #{recommendTime},</if>
+<!--            <if test="recommendFlag != null and recommendFlag != ''">recommendFlag = #{recommendFlag},</if>-->
+            <if test="addTime != null">addTime = #{addTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
     <select id="findList" resultType="com.caimei365.manager.entity.caimei.KeyWord">
-        SELECT cusf.id AS id, frequency, cusf.keyword as keyword,addTime,
+        SELECT cusf.id AS id, frequency, cusf.keyword as keyword,addTime,linkageStatus,
         cusf.searchTime as searchTime,cusf.trueStatus as labelStatus,cusf.fromSearch as fromSearch
         FROM cm_user_search_frequency cusf
         WHERE cusf.delStatus = 1
@@ -66,6 +85,34 @@
         </if>
     </select>
 
+    <select id="findLinkageStatus" resultType="java.util.HashMap">
+        SELECT
+            (SELECT id from  info a  WHERE
+                a.enabledStatus = 1
+                            and a.onlineStatus = 2
+                            and a.delFlag = 0
+                            and a.labelIds LIKE CONCAT('%',cusf.id,'%') LIMIT 0,1)
+             as info,
+             (SELECT p.productID from  product p
+                            left join cm_organize_product_info copi on copi.productId = p.productId
+                            where copi.validFlag  = 2
+                            and copi.organizeId=0
+                            and p.labelIds LIKE CONCAT('%',cusf.id,'%') LIMIT 0,1)
+            as product,
+            (SELECT id from  cm_baike_product a
+                            WHERE  a.delFlag = 0
+                            and a.status = 1
+                            and a.auditStatus = 2
+                            and a.onlineStatus = 2
+                            and a.labelIds LIKE CONCAT('%',cusf.id,'%')LIMIT 0,1)
+            as cm_baike_product,
+            (SELECT id from  cm_product_archive
+                            WHERE labelIds LIKE CONCAT('%',cusf.id,'%') LIMIT 0,1)
+            as cm_product_archive
+        from  cm_user_search_frequency as cusf
+        WHERE  id = #{id}
+    </select>
+
     <select id="findKeywordExist" resultType="java.lang.Integer">
         select id
         from cm_user_search_frequency