yujian
2019-07-17 20d1a38a0f8049873f1fbbaef96c22e971ea9d77
搜索词
2个文件已修改
285 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RecommendControllerV2.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/SearchControllerV2.java 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RecommendControllerV2.java
@@ -488,141 +488,4 @@
        out.print(JsonUtil.loadTrueResult(data));
    }
    
    /**
     * 粘贴板信息推荐
     *
     * @param acceptData
     * @param url
     *            商品链接
     * @param out
     */
    @RequestMapping(value = "getNewGoodsInfo", method = RequestMethod.POST)
    public void getNewGoodsInfo(AcceptData acceptData, String text, PrintWriter out) {
        if (StringUtil.isNullOrEmpty(text)) {
            out.print(JsonUtil.loadFalseResult("值为空"));
            return;
        }
        if (text.length() > 256) {
            out.print(JsonUtil.loadFalseResult("值过长"));
            return;
        }
        TaoBaoGoodsBrief tb = null;
        String URL_REGEX = "(((http|https)://)|(www\\.))[a-zA-Z0-9\\._-]+\\.[a-zA-Z]{2,6}(:[0-9]{1,4})?(/[a-zA-Z0-9\\&%_\\./-~-]*)?";
        Pattern p = Pattern.compile(URL_REGEX);
        Matcher matcher = p.matcher(text);
        if (!matcher.find()) {// 不包含链接
            // 商品详情
            // 发现
            // 没有链接,标题过长也不处理
            if (text.startsWith("【") && text.contains("】")) {
                int end = text.indexOf("】");
                if (end > 2)
                    text = text.substring(1, end);
            }
            LogHelper.test("根据粘贴板推荐:"+text);
            if (text.length() > 80) {
                out.print(JsonUtil.loadFalseResult("值过长"));
                return;
            }
            SearchFilter sf = new SearchFilter();
            sf.setKey(text);
            JSONObject root = new JSONObject();
            TaoBaoSearchResult result = TaoBaoUtil.search(sf);
            if (result != null && result.getTaoBaoGoodsBriefs() != null && result.getTaoBaoGoodsBriefs().size() > 0)
                for (TaoBaoGoodsBrief goods : result.getTaoBaoGoodsBriefs()) {
                    // 是属于淘宝联盟商品
                    if (goods.getTitle().equalsIgnoreCase(text)) {
                        root.put("type", 2);
                        JSONObject data = new JSONObject();
                        data.put("title", goods.getTitle());
                        root.put("data", data);
                        out.print(JsonUtil.loadTrueResult(root));
                        return;
                    }
                }
            // 查询大淘客标题
            List<DaTaoKeDetail> list = daTaoKeGoodsDetailService.listByDtitle(text);
            if (list != null && list.size() > 0) {
                root.put("type", 2);
                JSONObject data = new JSONObject();
                data.put("title", list.get(0).getdTitle());
                root.put("data", data);
                out.print(JsonUtil.loadTrueResult(root));
                return;
            }
            out.print(JsonUtil.loadFalseResult("暂不支持该类型!"));
            return;
        }
        text = matcher.group();
        if (text.contains("ju.taobao.com") || text.contains(".juhuasuan.com")) {// 聚划算
            int index = text.indexOf("item_id");
            if (index < 0) {
                out.println(JsonUtil.loadFalseResult("暂未找到该商品,请稍后再试!"));
                return;
            }
            text = text.substring(index);
            int last = text.indexOf("&");
            String id = "";
            if (last > 0)
                id = text.substring(text.indexOf("=") + 1, text.indexOf("&"));
            else {
                id = text.substring(text.indexOf("=" + 1));
            }
            tb = TaoBaoUtil.isAlimama(id);
            if (tb == null) {
                tb = TaoBaoUtil.parsePhoneTmAndTb(id);
            }
        } else if (text.contains("http://zmnxbc.com")) { // 手机端天猫APP分享
            tb = TaoBaoUtil.parsePhoneShareUrlByTM(text);
        } else if (text.contains("h5.m.taobao") || text.contains("detail.m.tmall") || text.contains("item.taobao")
                || text.contains("detail.tmall")) { // 手机页面和电脑页面
            Map<String, String> map = Utils.parseURL(text);
            String id = "";
            id = map.get("id").replace("}", "");
            tb = TaoBaoUtil.isAlimama(id);
            if (tb == null) {
                tb = TaoBaoUtil.parsePhoneTmAndTb(id);
            }
        } else {
            tb = TaoBaoUtil.parsePhoneShareUrlByTB(text);
        }
        if (tb != null) {
            JSONObject data = new JSONObject();
            JSONObject taoBaoGoodsJSON = new JSONObject();
            taoBaoGoodsJSON.put("title", tb.getTitle());
            taoBaoGoodsJSON.put("zkPrice", tb.getZkPrice());
            taoBaoGoodsJSON.put("auctionId", tb.getAuctionId());
            taoBaoGoodsJSON.put("url", "http://item.taobao.com/item.htm?id=" + tb.getAuctionId());
            data.put("taoBaoGoodsBrief", taoBaoGoodsJSON);
            if (!StringUtil.isNullOrEmpty(tb.getPictUrl())) {
                if (tb.getImgList() == null)
                    tb.setImgList(new ArrayList<>());
                tb.getImgList().add(0, TbImgUtil.getTBSize220Img(tb.getPictUrl()));
            }
            data.put("tbImgs", tb.getImgList());
            JSONObject root = new JSONObject();
            root.put("type", 1);
            root.put("data", data);
            out.print(JsonUtil.loadTrueResult(root));
        }
        out.println(JsonUtil.loadFalseResult("暂未找到该商品,请稍后再试!"));
        return;
    }
}
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/SearchControllerV2.java
@@ -6,7 +6,10 @@
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.annotation.Resource;
@@ -14,6 +17,7 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.yeshi.utils.JsonUtil;
import org.yeshi.utils.taobao.TbImgUtil;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
@@ -31,6 +35,7 @@
import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetail;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.config.BusinessSystemService;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.config.SuperHotSearchService;
@@ -45,11 +50,13 @@
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.ThreadUtil;
import com.yeshi.fanli.util.Utils;
import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil;
import com.yeshi.fanli.util.dataoke.DaTaoKeApiUtil;
import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
import com.yeshi.fanli.util.jd.JDUtil;
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil;
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil;
import com.yeshi.fanli.util.taobao.SearchFilterUtil;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.fanli.vo.brand.TaoBaoShopVO;
@@ -95,6 +102,143 @@
    @Resource
    private DaTaoKeGoodsDetailService daTaoKeGoodsDetailService;
    /**
     * 粘贴板信息推荐
     *
     * @param acceptData
     * @param url
     *            商品链接
     * @param out
     */
    @RequestMapping(value = "getNewGoodsInfo", method = RequestMethod.POST)
    public void getNewGoodsInfo(AcceptData acceptData, String text, PrintWriter out) {
        if (StringUtil.isNullOrEmpty(text)) {
            out.print(JsonUtil.loadFalseResult("值为空"));
            return;
        }
        if (text.length() > 256) {
            out.print(JsonUtil.loadFalseResult("值过长"));
            return;
        }
        TaoBaoGoodsBrief tb = null;
        String URL_REGEX = "(((http|https)://)|(www\\.))[a-zA-Z0-9\\._-]+\\.[a-zA-Z]{2,6}(:[0-9]{1,4})?(/[a-zA-Z0-9\\&%_\\./-~-]*)?";
        Pattern p = Pattern.compile(URL_REGEX);
        Matcher matcher = p.matcher(text);
        if (!matcher.find()) {// 不包含链接
            // 商品详情
            // 发现
            // 没有链接,标题过长也不处理
            if (text.startsWith("【") && text.contains("】")) {
                int end = text.indexOf("】");
                if (end > 2)
                    text = text.substring(1, end);
            }
            LogHelper.test("根据粘贴板推荐:" + text);
            if (text.length() > 80) {
                out.print(JsonUtil.loadFalseResult("值过长"));
                return;
            }
            SearchFilter sf = new SearchFilter();
            sf.setKey(text);
            JSONObject root = new JSONObject();
            TaoBaoSearchResult result = TaoBaoUtil.search(sf);
            if (result != null && result.getTaoBaoGoodsBriefs() != null && result.getTaoBaoGoodsBriefs().size() > 0)
                for (TaoBaoGoodsBrief goods : result.getTaoBaoGoodsBriefs()) {
                    // 是属于淘宝联盟商品
                    if (goods.getTitle().equalsIgnoreCase(text)) {
                        root.put("type", 2);
                        JSONObject data = new JSONObject();
                        data.put("title", goods.getTitle());
                        root.put("data", data);
                        out.print(JsonUtil.loadTrueResult(root));
                        return;
                    }
                }
            // 查询大淘客标题
            List<DaTaoKeDetail> list = daTaoKeGoodsDetailService.listByDtitle(text);
            if (list != null && list.size() > 0) {
                root.put("type", 2);
                JSONObject data = new JSONObject();
                data.put("title", list.get(0).getdTitle());
                root.put("data", data);
                out.print(JsonUtil.loadTrueResult(root));
                return;
            }
            out.print(JsonUtil.loadFalseResult("暂不支持该类型!"));
            return;
        }
        text = matcher.group();
        if (text.contains("ju.taobao.com") || text.contains(".juhuasuan.com")) {// 聚划算
            int index = text.indexOf("item_id");
            if (index < 0) {
                out.println(JsonUtil.loadFalseResult("暂未找到该商品,请稍后再试!"));
                return;
            }
            text = text.substring(index);
            int last = text.indexOf("&");
            String id = "";
            if (last > 0)
                id = text.substring(text.indexOf("=") + 1, text.indexOf("&"));
            else {
                id = text.substring(text.indexOf("=" + 1));
            }
            tb = TaoBaoUtil.isAlimama(id);
            if (tb == null) {
                tb = TaoBaoUtil.parsePhoneTmAndTb(id);
            }
        } else if (text.contains("http://zmnxbc.com")) { // 手机端天猫APP分享
            tb = TaoBaoUtil.parsePhoneShareUrlByTM(text);
        } else if (text.contains("h5.m.taobao") || text.contains("detail.m.tmall") || text.contains("item.taobao")
                || text.contains("detail.tmall")) { // 手机页面和电脑页面
            Map<String, String> map = Utils.parseURL(text);
            String id = "";
            id = map.get("id").replace("}", "");
            tb = TaoBaoUtil.isAlimama(id);
            if (tb == null) {
                tb = TaoBaoUtil.parsePhoneTmAndTb(id);
            }
        } else {
            tb = TaoBaoUtil.parsePhoneShareUrlByTB(text);
        }
        if (tb == null) {
            out.println(JsonUtil.loadFalseResult("暂未找到该商品,请稍后再试!"));
            return;
        }
        JSONObject data = new JSONObject();
        JSONObject taoBaoGoodsJSON = new JSONObject();
        taoBaoGoodsJSON.put("title", tb.getTitle());
        taoBaoGoodsJSON.put("zkPrice", tb.getZkPrice());
        taoBaoGoodsJSON.put("auctionId", tb.getAuctionId());
        taoBaoGoodsJSON.put("url", "http://item.taobao.com/item.htm?id=" + tb.getAuctionId());
        data.put("taoBaoGoodsBrief", taoBaoGoodsJSON);
        if (!StringUtil.isNullOrEmpty(tb.getPictUrl())) {
            if (tb.getImgList() == null)
                tb.setImgList(new ArrayList<>());
            tb.getImgList().add(0, TbImgUtil.getTBSize220Img(tb.getPictUrl()));
        }
        data.put("tbImgs", tb.getImgList());
        JSONObject root = new JSONObject();
        root.put("type", 1);
        root.put("data", data);
        out.print(JsonUtil.loadTrueResult(root));
    }
    /**
     * 搜索候选词
     * 
@@ -113,9 +257,9 @@
        if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
            list = TaoBaoUtil.getSuguestSearch(kw);
        } else if (goodsType == Constant.SOURCE_TYPE_JD) {
            list = JDUtil.suggestSearch(kw);
        } else if (goodsType == Constant.SOURCE_TYPE_PDD) {
            list = PinDuoDuoUtil.suggestSearch(kw);
        }
        if (list == null || list.size() == 0) {