Quellcode durchsuchen

关键词1.0版本功能开发

JiangChongBo vor 2 Jahren
Ursprung
Commit
cf617716c3

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

@@ -0,0 +1,23 @@
+package com.caimei.modules.product.dao;
+
+import com.caimei.modules.product.entity.SearchFrequency;
+import com.thinkgem.jeesite.common.persistence.CrudDao;
+import com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@MyBatisDao
+public interface KeywordFrequencyDao extends CrudDao<SearchFrequency> {
+
+    List<SearchFrequency> findList(SearchFrequency searchFrequency);
+
+    List<String> getSearchFrom();
+    void addKeyWordList(@Param("idList") int[] idList);
+
+    void delKeyWordById(@Param("id") Integer id);
+
+    int insert(SearchFrequency searchFrequency);
+
+    int update();
+}

+ 52 - 0
src/main/java/com/caimei/modules/product/entity/SearchFrequency.java

@@ -0,0 +1,52 @@
+package com.caimei.modules.product.entity;
+
+import com.thinkgem.jeesite.common.persistence.DataEntity;
+import lombok.Data;
+
+import java.sql.Date;
+
+@Data
+public class SearchFrequency extends DataEntity<SearchFrequency> {
+       private Integer keyId ;
+    /**
+     * 数据来源(1:首页;2:信息中心)
+     */
+    private Integer fromSearch   ;
+    /**
+     * 接口路径
+     */
+    private String  path;
+    /**
+     * 关键词
+     */
+    private String  keyword ;
+    /**
+     * 关键词出现次数
+     */
+    private Integer  frequency ;
+    /**
+     * 搜索时间
+     */
+    private Date searchTime ;
+    /**
+     * 0:未加入关键词库;1:已加入关键词库
+     */
+    private Integer trueStatus;
+
+    /**
+     * 0:已删除;1未删除
+     */
+    private Integer delStatus;
+    /**
+     *  区分是关键词界面还是关键词库界面 (1关键词;2关键词库)
+     */
+    private Integer status;
+
+    public SearchFrequency() {
+        super();
+    }
+
+    public SearchFrequency(String id){
+        super(id);
+    }
+}

+ 77 - 0
src/main/java/com/caimei/modules/product/service/KeywordFrequencyService.java

@@ -0,0 +1,77 @@
+package com.caimei.modules.product.service;
+
+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.thinkgem.jeesite.common.persistence.DataEntity;
+import com.thinkgem.jeesite.common.persistence.Page;
+import com.thinkgem.jeesite.common.service.CrudService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Arrays;
+import java.util.List;
+
+@Service
+@Transactional(readOnly = true)
+public class KeywordFrequencyService extends CrudService<KeywordFrequencyDao, SearchFrequency> {
+
+   @Autowired
+   private KeywordFrequencyDao keywordFrequencyDao;
+
+
+//   public Page<SearchFrequency> getKeyInfo(Page<SearchFrequency> searchFrequency,SearchFrequency search){
+//       DataEntity entity= new DataEntity();
+//       entity.setPage(searchFrequency);
+//       List<SearchFrequency> listSearchFrequency=keywordFrequencyDao.getKeyInfo(search);
+//       searchFrequency.setList(listSearchFrequency);
+//       searchFrequency.setCount(listSearchFrequency.size());
+//       return searchFrequency;
+//   }
+    public Page<SearchFrequency> findPage(Page<SearchFrequency> page, SearchFrequency searchFrequency) {
+        return super.findPage(page, searchFrequency);
+    }
+    /**
+     * 查询未加入关键词库的关键词来源
+     * @return
+     */
+    public List<String> getSearchFrom(){
+        List<String> seacherFrom = keywordFrequencyDao.getSearchFrom();
+        return seacherFrom;
+    }
+
+    /**
+     * 加入关键词库
+     * @param ids
+     * @return
+     */
+    @Transactional(readOnly = false)
+    public String addKeyWordList(String ids){
+        String[]  idList=ids.split(",");
+        int[] array = Arrays.asList(idList).stream().mapToInt(Integer::parseInt).toArray();
+        keywordFrequencyDao.addKeyWordList(array);
+//        String[]  idList=ids.split(",");
+//        int[] array = Arrays.asList(idList).stream().mapToInt(Integer::parseInt).toArray();
+//        for (int i=0; i<array.length;i++){
+//            keywordFrequencyDao.addKeyWordList(i);
+//        }
+        return "加入关键词库成功";
+    }
+
+    /**
+     * 删除关键词
+     * @param id
+     * @return
+     */
+    @Transactional(readOnly = false)
+    public String delKeyWordById(Integer id){
+        keywordFrequencyDao.delKeyWordById(id);
+        return "删除关键词成功";
+    }
+    @Transactional(readOnly = false)
+    public void save(SearchFrequency searchFrequency) {
+        super.save(searchFrequency);
+    }
+}

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

@@ -0,0 +1,146 @@
+package com.caimei.modules.product.web;
+
+import com.caimei.modules.order.entity.CmAuthorizedConsignment;
+import com.caimei.modules.product.entity.SearchFrequency;
+import com.caimei.modules.product.service.KeywordFrequencyService;
+import com.github.pagehelper.PageInfo;
+import com.thinkgem.jeesite.common.config.Global;
+import com.thinkgem.jeesite.common.persistence.Page;
+import com.thinkgem.jeesite.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.awt.*;
+import java.util.List;
+
+@Controller
+@RequestMapping(value = "${adminPath}/product/keywordFrequency")
+public class KeywordFrequencyController extends BaseController {
+
+        @Autowired
+        private KeywordFrequencyService keywordFrequencyService;
+
+    /**
+     * 查询未加入关键词库的数据
+     * @param searchFrequency
+     * @param request
+     * @param response
+     * @param model
+     * @return
+     */
+        @RequestMapping(value="/getKeyInfo")
+        public String getKeyInfo(SearchFrequency searchFrequency, HttpServletRequest request, HttpServletResponse response,  Model model){//@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
+            searchFrequency.setTrueStatus(0);
+            Page<SearchFrequency> keyInfo = keywordFrequencyService.findPage(new Page<SearchFrequency>(request,response),searchFrequency);
+            model.addAttribute("keyInfo",keyInfo);
+            model.addAttribute("searchFrequency",searchFrequency);
+            return "modules/product/keywordFrequency";
+        }
+    /**
+     * 查询已加入关键词库的数据
+     * @param searchFrequency
+     * @param request
+     * @param response
+     * @param model
+     * @return
+     */
+    @RequestMapping(value="/getKeywordThesaurusInfo")
+    public String getKeywordThesaurusInfo(SearchFrequency searchFrequency, HttpServletRequest request, HttpServletResponse response,  Model model){//@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
+        searchFrequency.setTrueStatus(1);
+        Page<SearchFrequency> keyInfo = keywordFrequencyService.findPage(new Page<SearchFrequency>(request,response),searchFrequency);
+        model.addAttribute("keyInfo",keyInfo);
+        model.addAttribute("searchFrequency",searchFrequency);
+        return "modules/product/keywordThesaurus";
+    }
+
+        /**
+         * 查询未加入关键词库的关键词来源
+         * @return
+         */
+        @ResponseBody
+        @RequestMapping("/getSeacherFrom")
+        public List<String> getSearchFrom(){
+            List<String> seacherFrom = keywordFrequencyService.getSearchFrom();
+            return seacherFrom;
+        }
+
+    /**
+     * 加入关键词库
+     * @param ids
+     * @return
+     */
+    @RequestMapping("/addKeyWordList")
+    public String addKeyWordList(String ids,RedirectAttributes redirectAttributes){
+        keywordFrequencyService.addKeyWordList(ids);
+        addMessage(redirectAttributes, "已加入关键词库");
+        return "redirect:"+Global.getAdminPath()+"/product/keywordFrequency/getKeyInfo";
+    }
+
+    /**
+     * 删除关键词
+     * status 区分是关键词界面还是关键词库界面 (1关键词;2关键词库)
+     * @param id
+     * @return
+     */
+    @RequestMapping("/delKeyWordById")
+    public String delKeyWordById(Integer id,Integer status,RedirectAttributes redirectAttributes){
+        keywordFrequencyService.delKeyWordById(id);
+        addMessage(redirectAttributes, "删除关键词成功");
+        if(status==1){
+            return "redirect:"+Global.getAdminPath()+"/product/keywordFrequency/getKeyInfo";
+
+        }
+        return "redirect:"+Global.getAdminPath()+"/product/keywordFrequency/getKeywordThesaurusInfo";
+
+    }
+
+    /**
+     * 跳转编辑添加页面
+     * @param searchFrequency
+     * @param model
+     * @return
+     */
+    @RequestMapping(value = "form")
+    public String form(SearchFrequency searchFrequency, Model model) {
+        model.addAttribute("searchFrequency", searchFrequency);
+        return "modules/product/upkeyword";
+    }
+
+    /**
+     * 更新关键词
+     * @param searchFrequency
+     * @param redirectAttributes
+     * @param model
+     * @return
+     */
+    @RequestMapping("save")
+    public String save(SearchFrequency searchFrequency,RedirectAttributes redirectAttributes,Model model){
+        if (!beanValidator(model, searchFrequency)){
+            return form(searchFrequency, model);
+        }
+        //如果是新增操作时
+        searchFrequency.setTrueStatus(1);
+        searchFrequency.setFromSearch(6);//为管理员添加
+        searchFrequency.setPath("管理员添加");
+        if(null !=searchFrequency.getKeyId()){
+            searchFrequency.setId(searchFrequency.getKeyId().toString());
+        }
+        keywordFrequencyService.save(searchFrequency);
+        addMessage(redirectAttributes, "保存成功");
+        //编辑
+        if(null !=searchFrequency.getStatus()&&1==searchFrequency.getStatus()){
+            return "redirect:"+Global.getAdminPath()+"/product/keywordFrequency/getKeyInfo";
+        }
+        //新增
+        return "redirect:"+Global.getAdminPath()+"/product/keywordFrequency/getKeywordThesaurusInfo";
+
+    }
+}

+ 10 - 10
src/main/resources/config/beta/caimei.properties

@@ -125,7 +125,7 @@ activiti.diagram.labelFontName=\u5B8B\u4F53
 #activiti\u5916\u90E8\u8868\u5355\u6839\u5730\u5740\u914D\u7F6E
 activiti.form.server.url=
 
-#测试服务器本地存储地址
+#\u6D4B\u8BD5\u670D\u52A1\u5668\u672C\u5730\u5B58\u50A8\u5730\u5740
 userfiles.basedir=/mnt/newdatadrive/nfs_client/
 
 #\u5DE5\u7A0B\u8DEF\u5F84\uFF0C\u5728\u4EE3\u7801\u751F\u6210\u65F6\u83B7\u53D6\u4E0D\u5230\u5DE5\u7A0B\u8DEF\u5F84\u65F6\uFF0C\u53EF\u518D\u6B64\u6307\u5B9A\u7EDD\u5BF9\u8DEF\u5F84\u3002
@@ -147,43 +147,43 @@ keyword.product=mnt/newdatadrive/nfs_client/keywords/keyword.txt
 #\u7528\u6237\u5546\u54C1\u4EF7\u683C\u8FC7\u5C0F\u90AE\u4EF6\u63D0\u793A
 user.mails=jun.li@caimei365.com
 
-#易宝分账
+#\u6613\u5B9D\u5206\u8D26
 yeepay.appkey=BM12345678902069
 yeepay.secretKey=OH6huQqihk0ZfGzWgR1WcQ==
 yeepay.secretRoot=https://openapi.yeepay.com/yop-center
 yeepay.divideCallback=http://admintest.365mdd.com/a/order/newShouldPay/divideCallback
 yeepay.mails=jun.li@caimei365.com
 
-#微信公众号信息(测试公众号无数据此处使用正式公众号)
+#\u5FAE\u4FE1\u516C\u4F17\u53F7\u4FE1\u606F(\u6D4B\u8BD5\u516C\u4F17\u53F7\u65E0\u6570\u636E\u6B64\u5904\u4F7F\u7528\u6B63\u5F0F\u516C\u4F17\u53F7)
 appId=wx91c4152b60ca91a3
 appSecret=a563dd2c07c9c815a4e697c8b6cb73dc
 token=caimei
 encryptMessage=false
 encodingAesKey=wJWhhXuWAByeBPA8NicwFGraVhjKqWBUm94sOKN3s66
-#微信获取文章配置
+#\u5FAE\u4FE1\u83B7\u53D6\u6587\u7AE0\u914D\u7F6E
 wx.getToken=https\://api.weixin.qq.com/cgi-bin/token
 wx.getMaterial=https\://api.weixin.qq.com/cgi-bin/material/batchget_material
 wx.getMaterialCount=https\://api.weixin.qq.com/cgi-bin/material/get_materialcount
 
-#运费商品默认ID
+#\u8FD0\u8D39\u5546\u54C1\u9ED8\u8BA4ID
 freightProductID=999
 
 cm.config=beta
-#线上直接读取服务器位置文件
+#\u7EBF\u4E0A\u76F4\u63A5\u8BFB\u53D6\u670D\u52A1\u5668\u4F4D\u7F6E\u6587\u4EF6
 export.template=/mnt/newdatadrive/data/custom/manager-export-template
 
-# SPI-server(CKEditor5图片上传API,搜索更新索引)
+# SPI-server\uFF08CKEditor5\u56FE\u7247\u4E0A\u4F20API\uFF0C\u641C\u7D22\u66F4\u65B0\u7D22\u5F15\uFF09
 caimei.spi=https://spi-b.caimei365.com
 caimei.core=https://core-b.caimei365.com
 caimei.manager=https://manager-b.caimei365.com
 
-#阿里云oss存储
+#\u963F\u91CC\u4E91oss\u5B58\u50A8
 aliyun.accessKeyId=LTAI4GBL3o4YkWnbKYgf2Xia
 aliyun.accessKeySecret=dBjAXqbYiEPP6Ukuk2ZsXQeET7FVkK
 aliyun.bucketName=caimei-oss
 aliyun.endpoint=https://oss-cn-shenzhen.aliyuncs.com
 
-#商品资料库文件临时路径
+#\u5546\u54C1\u8D44\u6599\u5E93\u6587\u4EF6\u4E34\u65F6\u8DEF\u5F84
 archive.tempPath=/mnt/newdatadrive/data/runtime/tomcat-instance/manager/tempFile/
-#ffmpeg路径
+#ffmpeg\u8DEF\u5F84
 ffmpeg.path=/mnt/newdatadrive/apps/ffmpeg/ffmpeg-master/bin/ffmpeg

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

@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.caimei.modules.product.dao.KeywordFrequencyDao">
+         <select id="findList" resultType="com.caimei.modules.product.entity.SearchFrequency">
+             select
+                    id as keyId,
+                    fromSearch,
+                    path,
+                    keyword,
+                    frequency,
+                    searchTime,
+                    trueStatus,
+                    delStatus
+              from cm_user_search_frequency
+             where trueStatus=#{trueStatus} and delStatus=1
+             <if test="keyword != null and keyword != ''">
+                 AND keyword = #{keyword}
+             </if>
+             <if test="fromSearch != null">
+                 AND fromSearch = #{fromSearch}
+             </if>
+         </select>
+
+    <select id="getSearchFrom" resultType="java.lang.String">
+            select
+            fromSearch
+        from cm_user_search_frequency
+        where trueStatus=0 and delStatus=1
+         group by fromSearch
+    </select>
+
+
+    <select id="getInfoBykeyword" resultType="com.caimei.modules.product.entity.SearchFrequency">
+        select
+            id as keyId,
+            fromSearch,
+            path,
+            keyword,
+            frequency,
+            searchTime,
+            trueStatus,
+            delStatus
+        from cm_user_search_frequency
+        where keyword=#{keyword}
+        and   fromSearch=#{fromSearch}
+    </select>
+    <insert id="saveInfo" parameterType="com.caimei.modules.product.entity.SearchFrequency">
+        insert into cm_user_search_frequency(fromSearch,path,keyword,frequency,searchTime)
+        values (#{fromSearch},#{path},#{keyword},#{frequency},#{searchTime})
+
+    </insert>
+    <update id="upFrequencyById">
+        update cm_user_search_frequency set frequency=#{frequency} where id=#{id}
+    </update>
+    <update id="addKeyWordList">
+        update cm_user_search_frequency set trueStatus=1
+        where id in
+        <foreach collection="idList" open="(" separator="," close=")" item="reId">
+            #{reId,jdbcType=INTEGER}
+        </foreach>
+    </update>
+    <update id="delKeyWordById" parameterType="java.lang.Integer">
+        update cm_user_search_frequency set delStatus=0
+        where id =#{id}
+    </update>
+    <insert id="insert" parameterType="com.caimei.modules.product.entity.SearchFrequency">
+        insert into cm_user_search_frequency(fromSearch,path,keyword,frequency,searchTime,trueStatus)
+        values (#{fromSearch},#{path},#{keyword},#{frequency},#{searchTime},#{trueStatus})
+    </insert>
+    <update id="update">
+        update cm_user_search_frequency set keyword=#{keyword} where id=#{id}
+    </update>
+</mapper>

+ 195 - 0
src/main/webapp/WEB-INF/views/modules/product/keywordFrequency.jsp

@@ -0,0 +1,195 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: Administrator
+  Date: 2020/4/12
+  Time: 12:01
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
+<html>
+<head>
+    <title>关键词列表</title>
+    <meta name="decorator" content="default"/>
+    <style type="text/css">
+        .table th{text-align: center;}
+        .table td{text-align: center;}
+    </style>
+    <script type="text/javascript">
+        // $(document).ready(function() {
+        //
+        // });
+        function page(n,s){
+            $("#pageNo").val(n);
+            $("#pageSize").val(s);
+            $("#searchForm").submit();
+            return false;
+        }
+        window.onload = function () {
+            $.ajax({
+                //几个参数需要注意一下
+                type: "get",//方法类型
+                dataType:"json",
+                url: "${ctx}/product/keywordFrequency/getSeacherFrom" ,//url
+                success: function (data) {
+                    $('#search').get(0).options.length = 0;
+                    $('#search').append('<option value="" aria-selected="true">请选择</option>');
+                    $.each(data, function(i, obj) {
+                        var option = $('<option />');
+                        option.val(obj);
+                        if(obj==1){
+                            option.text("首页搜索");
+                        }else if(obj==2){
+                            option.text("信息中心搜索");
+                        }
+                        $('#search').append(option);
+                    });
+                },
+                error : function() {
+                    alert("服务异常!");
+                }
+            });
+        }
+        //选中所有
+        function allCkbfun(ckb){
+            var isChecked = ckb.checked;
+            $(".check-item").attr('checked', isChecked);
+            if(true==isChecked){
+                $(".check-item").parents(".item-info").addClass("row-selected");
+            }else{
+                $(".check-item").parents(".item-info").removeClass("row-selected");
+            }
+        }
+        //复选框选单击事件
+        function checkfun(ckb){
+            var isChecked = ckb.checked;
+            if(true==isChecked){
+                $(ckb).parents(".item-info").addClass("row-selected");
+            }else{
+                $(ckb).parents(".item-info").removeClass("row-selected");
+            }
+        }
+        //加入关键词库
+        function updateEnabledStatus(ids){
+            var msg='确定加入关键词库?';
+            // if('0'==status){
+            //     msg='确定停用?';
+            // }
+            top.$.jBox.confirm(msg,'系统提示',function(v,h,f){
+                if(v=='ok'){
+                    $.post("${ctx}/product/keywordFrequency/addKeyWordList",{'ids':ids}, function(data) {
+                        $("#searchForm").submit();
+                    },"JSON");//这里返回的类型有:json,html,xml,text
+                }
+                top.$.jBox.tip('加入关键词库成功', 'success');
+                window.location.reload();
+                return;
+            },{buttonsFocus:1,persistent: true});
+        }
+        //删除关键词
+        function delEnabledStatus(ids){
+            var msg='确定删除关键词?';
+            // if('0'==status){
+            //     msg='确定停用?';
+            // }
+            top.$.jBox.confirm(msg,'系统提示',function(v,h,f){
+                if(v=='ok'){
+                    $.post("${ctx}/product/keywordFrequency/delKeyWordById",{'id':ids}, function(data) {
+                        $("#searchForm").submit();
+                    },"JSON");//这里返回的类型有:json,html,xml,text
+                }
+                // top.$.jBox.tip('删除成功', 'success');
+                // window.location.reload();
+                return;
+            },{buttonsFocus:1,persistent: true});
+        }
+        function updateStatus(){
+            var items = new Array();
+            $items=$('.check-item:checked');
+            if(0==$items.length){
+                top.$.jBox.tip('请选择', 'error');
+                return;
+            }
+            $items.each(function(i){
+                items.push($(this).parents(".item-info").attr("id"));
+            });
+            updateEnabledStatus(items.toString());
+        }
+    </script>
+</head>
+<body>
+<ul class="nav nav-tabs">
+    <li class="active">用户关键词统计</li>
+<%--    <shiro:hasPermission name="user:newCmClub:edit"><li><a href="${ctx}/new/user/cmSp/cmSpForm">添加协销人员</a></li></shiro:hasPermission>--%>
+<%--    <li><a href="${ctx}/serviceteam/cmServiceteamRole/">协销小组</a></li>--%>
+<%--    <li><a href="${ctx}/new/user/cmSp/leader/">协销总管理员</a></li>--%>
+</ul>
+<form:form id="searchForm" modelAttribute="searchFrequency" action="${ctx}/product/keywordFrequency/getKeyInfo/" method="post" class="breadcrumb form-search">
+    <sys:message content="${message}"/>
+    <input id="pageNo" name="pageNo" type="hidden" value="${pageNo}"/>
+    <input id="pageSize" name="pageSize" type="hidden" value="${pageSize}"/>
+    <div class="ul-form">
+        <label>关键词:</label>
+        <form:input path="keyword" htmlEscape="false" maxlength="20" class="input-medium"/>
+        <label>来源:</label>
+        <form:select path="fromSearch" class="input-medium" id="search">
+        </form:select>
+        &nbsp;&nbsp;<input id="btnSubmit" class="btn btn-primary" type="submit" value="查询"/>
+        &nbsp;&nbsp;<input id="addKeyWord" class="btn btn-primary" type="button" value="加入关键词库" onclick="updateStatus()"/>
+        &nbsp;&nbsp;<input id="export" class="btn btn-primary" type="button" value="导出"/>
+    </div>
+</form:form>
+<table id="contentTable" class="table table-striped table-bordered table-condensed">
+    <thead>
+    <tr>
+        <th style="width:20px;"><input class="check-all" type="checkbox" onclick="allCkbfun(this);"/></th>
+        <th>序号</th>
+        <th>关键词</th>
+        <th>搜索来源</th>
+        <th>搜索次数</th>
+        <shiro:hasPermission name="user:newCmClub:edit"><th>操作</th></shiro:hasPermission>
+    </tr>
+    </thead>
+    <tbody>
+    <c:forEach items="${keyInfo.list}" var="newCmSp" varStatus="status">
+        <tr class="item-info" id="${newCmSp.keyId}">
+            <td><input class="check-item" type="checkbox" id="checkbox" value="" onclick="checkfun(this)"/></td>
+            <td>${status.index+1}</td>
+                <%--<td>${newCmSp.name}</td>--%>
+            <td>${newCmSp.keyword}</td>
+            <td>
+                <c:if test="${newCmSp.fromSearch eq 1}">
+                    首页搜索
+                </c:if>
+                <c:if test="${newCmSp.fromSearch eq 2}">
+                    信息中心搜索
+                </c:if>
+            </td>
+                <%--<td>${newCmSp.spIdentity}</td>--%>
+            <td>${newCmSp.frequency}</td>
+            <shiro:hasPermission name="user:newCmClub:edit">
+                <td>
+<%--                    <c:if test="${newCmSp.status eq 90 || newCmSp.status eq 91}">--%>
+<%--                        onclick="updatePwd(${newCmSp.serviceProviderID})"--%>
+<%--                        <a onclick="updateEnabledStatus('${newCmSp.keyId}')">加入关键词库</a>--%>
+                        <a href="${ctx}/product/keywordFrequency/addKeyWordList?ids=${newCmSp.keyId}" onclick="return confirmx('确认将关键词加入关键词库吗?', this.href)">加入关键词库</a>
+<%--                        href="${ctx}/new/user/cmSp/cmSpEdit?id=${newCmSp.serviceProviderID}"--%>
+                        <a href="${ctx}/product/keywordFrequency/form?keyId=${newCmSp.keyId}&status=1">编辑</a>
+
+<%--                        onclick="sendMsg(${newCmSp.serviceProviderID})"--%>
+                            <a href="${ctx}/product/keywordFrequency/delKeyWordById?id=${newCmSp.keyId}&status=1" onclick="return confirmx('确认要删除该关键词吗?', this.href)">删除</a>
+<%--                        <a href="javascript:void(0);" onclick="delEnabledStatus('${newCmSp.keyId}')">删除</a>--%>
+<%--                        <a href="${ctx}/product/keywordFrequency/delKeyWordById?id=${newCmSp.keyId}">删除2</a>--%>
+
+<%--                    </c:if>--%>
+                </td>
+            </shiro:hasPermission>
+        </tr>
+    </c:forEach>
+    </tbody>
+</table>
+<div class="pagination">${keyInfo}</div>
+</body>
+</html>
+

+ 204 - 0
src/main/webapp/WEB-INF/views/modules/product/keywordThesaurus.jsp

@@ -0,0 +1,204 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: Administrator
+  Date: 2020/4/12
+  Time: 12:01
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
+<html>
+<head>
+    <title>词库列表</title>
+    <meta name="decorator" content="default"/>
+    <style type="text/css">
+        .table th{text-align: center;}
+        .table td{text-align: center;}
+    </style>
+    <script type="text/javascript">
+        // $(document).ready(function() {
+        //
+        // });
+        function page(n,s){
+            $("#pageNo").val(n);
+            $("#pageSize").val(s);
+            $("#searchForm").submit();
+            return false;
+        }
+        window.onload = function () {
+            $.ajax({
+                //几个参数需要注意一下
+                type: "get",//方法类型
+                dataType:"json",
+                url: "${ctx}/product/keywordFrequency/getSeacherFrom" ,//url
+                success: function (data) {
+                    $('#search').get(0).options.length = 0;
+                    $('#search').append('<option value="" aria-selected="true">请选择</option>');
+                    $.each(data, function(i, obj) {
+                        var option = $('<option />');
+                        option.val(obj);
+                        if(obj==1){
+                            option.text("首页搜索");
+                        }else if(obj==2){
+                            option.text("信息中心搜索");
+                        }
+                        $('#search').append(option);
+                    });
+                },
+                error : function() {
+                    alert("服务异常!");
+                }
+            });
+        }
+        //选中所有
+        function allCkbfun(ckb){
+            var isChecked = ckb.checked;
+            $(".check-item").attr('checked', isChecked);
+            if(true==isChecked){
+                $(".check-item").parents(".item-info").addClass("row-selected");
+            }else{
+                $(".check-item").parents(".item-info").removeClass("row-selected");
+            }
+        }
+        //复选框选单击事件
+        function checkfun(ckb){
+            var isChecked = ckb.checked;
+            if(true==isChecked){
+                $(ckb).parents(".item-info").addClass("row-selected");
+            }else{
+                $(ckb).parents(".item-info").removeClass("row-selected");
+            }
+        }
+        //加入关键词库
+        function updateEnabledStatus(ids){
+            var msg='确定加入关键词库?';
+            // if('0'==status){
+            //     msg='确定停用?';
+            // }
+            top.$.jBox.confirm(msg,'系统提示',function(v,h,f){
+                if(v=='ok'){
+                    $.post("${ctx}/product/keywordFrequency/addKeyWordList",{'ids':ids}, function(data) {
+                        $("#searchForm").submit();
+                    },"JSON");//这里返回的类型有:json,html,xml,text
+                }
+                // top.$.jBox.tip('加入关键词库成功', 'success');
+                // window.location.reload();
+                return;
+            },{buttonsFocus:1,persistent: true});
+        }
+        //删除关键词
+        <%--function delEnabledStatus(ids){--%>
+        <%--    var msg='确定删除关键词?';--%>
+        <%--    // if('0'==status){--%>
+        <%--    //     msg='确定停用?';--%>
+        <%--    // }--%>
+        <%--    top.$.jBox.confirm(msg,'系统提示',function(v,h,f){--%>
+        <%--        if(v=='ok'){--%>
+        <%--            $.post("${ctx}/product/keywordFrequency/delKeyWordById",{'id':ids}, function(data) {--%>
+        <%--                $("#searchForm").submit();--%>
+        <%--            },"JSON");//这里返回的类型有:json,html,xml,text--%>
+        <%--        }--%>
+        <%--        // top.$.jBox.tip('删除成功', 'success');--%>
+        <%--        // window.location.reload();--%>
+        <%--        return;--%>
+        <%--    },{buttonsFocus:1,persistent: true});--%>
+        <%--}--%>
+        function updateStatus(){
+            var items = new Array();
+            $items=$('.check-item:checked');
+            if(0==$items.length){
+                top.$.jBox.tip('请选择', 'error');
+                return;
+            }
+            $items.each(function(i){
+                items.push($(this).parents(".item-info").attr("id"));
+            });
+            updateEnabledStatus(items.toString());
+        }
+        // //添加关键词
+        // function addkeyWord(){
+        //
+        // }
+    </script>
+</head>
+<body>
+<ul class="nav nav-tabs">
+    <li class="active">关键词词库</li>
+    <%--    <shiro:hasPermission name="user:newCmClub:edit"><li><a href="${ctx}/new/user/cmSp/cmSpForm">添加协销人员</a></li></shiro:hasPermission>--%>
+    <%--    <li><a href="${ctx}/serviceteam/cmServiceteamRole/">协销小组</a></li>--%>
+    <%--    <li><a href="${ctx}/new/user/cmSp/leader/">协销总管理员</a></li>--%>
+</ul>
+
+<form:form id="searchForm" modelAttribute="searchFrequency" action="${ctx}/product/keywordFrequency/getKeywordThesaurusInfo/" method="post" class="breadcrumb form-search">
+    <sys:message content="${message}"/>
+    <input id="pageNo" name="pageNo" type="hidden" value="${pageNo}"/>
+    <input id="pageSize" name="pageSize" type="hidden" value="${pageSize}"/>
+    <div class="ul-form">
+        <label>关键词:</label>
+        <form:input path="keyword" htmlEscape="false" maxlength="20" class="input-medium"/>
+        <label>来源:</label>
+        <form:select path="fromSearch" class="input-medium" id="search">
+        </form:select>
+        &nbsp;&nbsp;<input id="btnSubmit" class="btn btn-primary" type="submit" value="查询"/>
+<%--        &nbsp;&nbsp;<input id="addKeyWord" class="btn btn-primary" type="button" value="加入关键词库" onclick="updateStatus()"/>--%>
+        &nbsp;&nbsp;<input id="addKey" class="btn btn-primary" type="button" value="添加关键词" onclick="window.location='${ctx}/product/keywordFrequency/form?status=2'"/>
+        &nbsp;&nbsp;<input id="import" class="btn btn-primary" type="button" value="导入"/>
+        &nbsp;&nbsp;<input id="export" class="btn btn-primary" type="button" value="导出"/>
+    </div>
+</form:form>
+<table id="contentTable" class="table table-striped table-bordered table-condensed">
+    <thead>
+    <tr>
+        <th style="width:20px;"><input class="check-all" type="checkbox" onclick="allCkbfun(this);"/></th>
+        <th>序号</th>
+        <th>关键词</th>
+        <th>搜索来源</th>
+        <th>搜索次数</th>
+        <shiro:hasPermission name="user:newCmClub:edit"><th>操作</th></shiro:hasPermission>
+    </tr>
+    </thead>
+    <tbody>
+    <c:forEach items="${keyInfo.list}" var="newCmSp" varStatus="status">
+        <tr class="item-info" id="${newCmSp.keyId}">
+            <td><input class="check-item" type="checkbox" id="checkbox" value="" onclick="checkfun(this)"/></td>
+            <td>${status.index+1}</td>
+                <%--<td>${newCmSp.name}</td>--%>
+            <td>${newCmSp.keyword}</td>
+            <td>
+                <c:if test="${newCmSp.fromSearch eq 1}">
+                    首页搜索
+                </c:if>
+                <c:if test="${newCmSp.fromSearch eq 2}">
+                    信息中心搜索
+                </c:if>
+                <c:if test="${newCmSp.fromSearch eq 6}">
+                    管理员添加
+                </c:if>
+            </td>
+                <%--<td>${newCmSp.spIdentity}</td>--%>
+            <td>${newCmSp.frequency}</td>
+            <shiro:hasPermission name="user:newCmClub:edit">
+                <td>
+                        <%--                    <c:if test="${newCmSp.status eq 90 || newCmSp.status eq 91}">--%>
+                        <%--                        onclick="updatePwd(${newCmSp.serviceProviderID})"--%>
+<%--                    <a onclick="updateEnabledStatus('${newCmSp.keyId}')">加入关键词库</a>--%>
+                        <%--                        href="${ctx}/new/user/cmSp/cmSpEdit?id=${newCmSp.serviceProviderID}"--%>
+                    <a href="${ctx}/product/keywordFrequency/form?keyId=${newCmSp.keyId}&status=2">编辑</a>
+
+                        <%--                        onclick="sendMsg(${newCmSp.serviceProviderID})"--%>
+
+<%--                    <a href="javascript:void(0);" onclick="delEnabledStatus('${newCmSp.keyId}')">删除</a>--%>
+                    <a href="${ctx}/product/keywordFrequency/delKeyWordById?id=${newCmSp.keyId}&status=2" onclick="return confirmx('确认要删除该关键词吗?', this.href)">删除</a>
+
+                        <%--                    </c:if>--%>
+                </td>
+            </shiro:hasPermission>
+        </tr>
+    </c:forEach>
+    </tbody>
+</table>
+<div class="pagination">${keyInfo}</div>
+</body>
+</html>
+

+ 40 - 0
src/main/webapp/WEB-INF/views/modules/product/upkeyword.jsp

@@ -0,0 +1,40 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
+<html>
+<head>
+    <title>关键词更新</title>
+    <meta name="decorator" content="default"/>
+    <script type="text/javascript">
+        $(document).ready(function() {
+            //$("#name").focus();
+            $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+            });
+        });
+    </script>
+</head>
+<body>
+<ul class="nav nav-tabs">
+    <li><a href="${ctx}/product/keywordFrequency/getKeyInfo">用户关键词统计</a></li>
+<%--    <li class="active"><a href="${ctx}/order/cmAuthorizedConsignment/form?id=${cmAuthorizedConsignment.id}"><shiro:hasPermission name="order:cmAuthorizedConsignment:edit">${not empty cmAuthorizedConsignment.id?'编辑':'添加'}</shiro:hasPermission><shiro:lacksPermission name="order:cmAuthorizedConsignment:edit">查看</shiro:lacksPermission></a></li>--%>
+    <li class="active"><a href="${ctx}/product/keywordFrequency/form?keyId=${searchFrequency.keyId}&status=${searchFrequency.status}"><shiro:hasPermission name="order:cmAuthorizedConsignment:edit">${not empty searchFrequency.keyId?'编辑':'添加'}</shiro:hasPermission><shiro:lacksPermission name="order:cmAuthorizedConsignment:edit">查看</shiro:lacksPermission></a></li>
+</ul><br/>
+<form:form id="inputForm" modelAttribute="searchFrequency" action="${ctx}/product/keywordFrequency/save?status=${searchFrequency.status}" method="post" class="form-horizontal">
+    <form:hidden path="keyId"/>
+    <sys:message content="${message}"/>
+    <div class="control-group">
+        <label class="control-label"><font color="red">*</font>关键词:</label>
+        <div class="controls">
+            <form:input path="keyword" htmlEscape="false" maxlength="20" class="input-xlarge required"/>
+        </div>
+    </div>
+    <div class="form-actions">
+        <shiro:hasPermission name="order:cmAuthorizedConsignment:edit"><input id="btnSubmit" class="btn btn-primary" type="submit" value="保 存"/>&nbsp;</shiro:hasPermission>
+        <input id="btnCancel" class="btn" type="button" value="返 回" onclick="history.go(-1)"/>
+    </div>
+</form:form>
+</body>
+</html>