From 30d8e227e8d823b6c38c3b9c90ac2df03b63befe Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 25 二月 2025 16:41:22 +0800
Subject: [PATCH] 淘宝转链接口更新

---
 fanli/src/main/java/com/yeshi/fanli/controller/client/v2/SearchControllerV2.java | 1688 +++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 1,084 insertions(+), 604 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/SearchControllerV2.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/SearchControllerV2.java
index 01b6579..bbabc4e 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/SearchControllerV2.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/SearchControllerV2.java
@@ -1,25 +1,9 @@
 package com.yeshi.fanli.controller.client.v2;
 
-import java.io.PrintWriter;
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpSession;
-
-import com.yeshi.fanli.service.inter.pdd.PDDAuthService;
-import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService;
-import org.springframework.core.task.TaskExecutor;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.yeshi.utils.JsonUtil;
-
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
-import com.yeshi.fanli.dto.ConfigParamsDTO;
+import com.yeshi.common.entity.PageEntity;
+import com.yeshi.fanli.dto.GoodsMoneyConfigParamsDTO;
 import com.yeshi.fanli.dto.jd.JDFilter;
 import com.yeshi.fanli.dto.jd.JDSearchFilter;
 import com.yeshi.fanli.dto.jd.JDSearchResult;
@@ -32,37 +16,36 @@
 import com.yeshi.fanli.dto.vip.VIPSearchFilter;
 import com.yeshi.fanli.dto.vip.VIPSearchResult;
 import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo;
+import com.yeshi.fanli.entity.SystemEnum;
+import com.yeshi.fanli.entity.SystemPIDInfo;
 import com.yeshi.fanli.entity.accept.AcceptData;
 import com.yeshi.fanli.entity.bus.help.AppPageNotification;
+import com.yeshi.fanli.entity.bus.search.HistorySearch;
+import com.yeshi.fanli.entity.goods.BaseGoodsInfo;
 import com.yeshi.fanli.entity.goods.CommonGoods;
 import com.yeshi.fanli.entity.jd.JDGoods;
 import com.yeshi.fanli.entity.system.ConfigKeyEnum;
 import com.yeshi.fanli.entity.taobao.SearchFilter;
-import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
 import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
-import com.yeshi.goods.facade.entity.taobao.dataoke.DaTaoKeDetailV2;
+import com.yeshi.fanli.exception.pdd.PDDApiException;
+import com.yeshi.fanli.exception.taobao.TaoBaoTokenParseException;
 import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
 import com.yeshi.fanli.exception.user.TokenRecordException;
+import com.yeshi.fanli.lijin.manager.GoodsLijinMnager;
 import com.yeshi.fanli.service.inter.brand.BrandInfoService;
 import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
-import com.yeshi.fanli.service.inter.config.BusinessSystemService;
 import com.yeshi.fanli.service.inter.config.ConfigService;
-import com.yeshi.fanli.service.inter.config.SuperHotSearchService;
 import com.yeshi.fanli.service.inter.help.AppPageNotificationService;
-import com.yeshi.fanli.service.inter.lable.QualityGoodsService;
-import com.yeshi.fanli.service.inter.lable.TaoKeGoodsService;
 import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService;
-import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
+import com.yeshi.fanli.service.inter.pdd.PDDAuthService;
 import com.yeshi.fanli.service.inter.taobao.TaoBaoShopService;
-import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
-import com.yeshi.goods.facade.service.DaTaoKeGoodsDetailV2Service;
 import com.yeshi.fanli.service.inter.user.HistorySearchService;
 import com.yeshi.fanli.service.inter.user.TokenRecordService;
 import com.yeshi.fanli.service.inter.user.integral.IntegralGetService;
+import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService;
 import com.yeshi.fanli.service.manger.ClipboardAnalysisManager;
 import com.yeshi.fanli.service.manger.IClipboardAnalysisResult;
-import com.yeshi.fanli.service.manger.goods.jd.JDGoodsLinkParseManager;
-import com.yeshi.common.entity.PageEntity;
+import com.yeshi.fanli.service.manger.PIDManager;
 import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.StringUtil;
 import com.yeshi.fanli.util.ThreadUtil;
@@ -72,15 +55,23 @@
 import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil;
 import com.yeshi.fanli.util.factory.CommonGoodsFactory;
 import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
+import com.yeshi.fanli.util.goods.douyin.CSJCPSApiUtil;
+import com.yeshi.fanli.util.goods.douyin.DYUtil;
+import com.yeshi.fanli.util.goods.douyin.vo.DYGoods;
+import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsDetail;
+import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsSearchFilter;
+import com.yeshi.fanli.util.goods.douyin.vo.ListResult;
 import com.yeshi.fanli.util.jd.JDApiUtil;
 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.suning.SuningApiUtil;
+import com.yeshi.fanli.util.suning.SuningUtil;
 import com.yeshi.fanli.util.taobao.SearchFilterUtil;
 import com.yeshi.fanli.util.taobao.TaoBaoUtil;
 import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
 import com.yeshi.fanli.util.vipshop.VipShopApiUtil;
+import com.yeshi.fanli.util.vipshop.VipShopUtil;
 import com.yeshi.fanli.vo.brand.BrandInfoVO;
 import com.yeshi.fanli.vo.brand.TaoBaoShopVO;
 import com.yeshi.fanli.vo.common.JumpDetailContentVO;
@@ -88,13 +79,36 @@
 import com.yeshi.fanli.vo.msg.TokenVO;
 import com.yeshi.fanli.vo.recommend.RecommendJumpInfoVO;
 import com.yeshi.fanli.vo.search.GoodsDocParseResultVO;
-
+import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
+import com.yeshi.goods.facade.entity.taobao.dataoke.DaTaoKeDetailV2;
+import com.yeshi.goods.facade.service.DaTaoKeGoodsDetailV2Service;
+import com.yeshi.goods.facade.utils.taobao.DaTaoKeApiUtil;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.core.task.TaskExecutor;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.yeshi.utils.HttpUtil;
+import org.yeshi.utils.IPUtil;
+import org.yeshi.utils.JsonUtil;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import java.io.PrintWriter;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
 
 @Controller
 @RequestMapping("api/v2/search")
 public class SearchControllerV2 {
+
+    Logger logger = LoggerFactory.getLogger(SearchControllerV2.class);
 
     @Resource
     private ConfigService configService;
@@ -144,6 +158,12 @@
     @Resource
     private PDDAuthService pddAuthService;
 
+    @Resource
+    private GoodsLijinMnager goodsLijinMnager;
+
+    @Resource
+    private PIDManager pidManager;
+
 
     /**
      * 绮樿创鏉夸俊鎭帹鑽�
@@ -162,211 +182,245 @@
         // 鍘婚櫎鍓嶅悗绌烘牸
         text = text.trim();
         String originalText = text;
+        if (acceptData.getSystem() == SystemEnum.yhqjx || acceptData.getSystem() == SystemEnum.hsb) {
+            Integer sourceType = clipboardAnalysisManager.tejiaParseSourceType(text);
+            JSONObject root = new JSONObject();
+            root.put("type", 2);
+            JSONObject data = new JSONObject();
+            data.put("title", text);
+            data.put("sourceType", sourceType);
+            root.put("data", data);
+            out.print(JsonUtil.loadTrueResult(root));
+            return;
+        } else {
+            JSONObject data = new JSONObject();
+            clipboardAnalysisManager.parse(acceptData.getPlatform(), acceptData.getVersion(), originalText, uid,
+                    new IClipboardAnalysisResult() {
 
-        JSONObject data = new JSONObject();
+                        @Override
+                        public void onResult(GoodsDocParseResultVO result) {
+                            if (uid == null || (acceptData.getSystem() == SystemEnum.yhqjx || acceptData.getSystem() == SystemEnum.hsb)) {
+                                out.print(JsonUtil.loadFalseResult("鏃犳帹鑽�"));
+                                return;
+                            }
 
-        clipboardAnalysisManager.parse(acceptData.getPlatform(), acceptData.getVersion(), originalText, uid,
-                new IClipboardAnalysisResult() {
+                            JSONObject root = new JSONObject();
+                            root.put("type", 20);
+                            JSONObject data = new JSONObject();
+                            data.put("text", originalText);
+                            //
+                            int platformCode = Constant.getPlatformCode(acceptData.getPlatform());
+                            int version = Integer.parseInt(acceptData.getVersion());
+                            JumpDetailContentVO convert = new JumpDetailContentVO();
+                            convert.setJumpDetail(jumpDetailV2Service.getByTypeCache("web", platformCode, version, acceptData.getSystem()));
+                            JSONObject convertParams = new JSONObject();
+                            convertParams.put("url", configService.getValue(ConfigKeyEnum.convertDocWebLink.getKey(), acceptData.getSystem()));
+                            convertParams.put("clipboard", false);
+                            convert.setParams(convertParams);
 
-                    @Override
-                    public void onResult(GoodsDocParseResultVO result) {
-                        if (uid == null) {
-                            out.print(JsonUtil.loadFalseResult("鏃犳帹鑽�"));
+                            JumpDetailContentVO view = null;
+                            JumpDetailContentVO guessLike = null;
+
+                            Gson gson = JsonUtil.getApiCommonGson();
+                            data.put("title", "鏅鸿兘鎼滅储");
+
+                            int state = 0;
+                            if (result.getFirstGoods() != null && result.getFirstGoods().getGoodsId() != null) {
+                                state = 2;
+                                data.put("stateDesc", "閫夋嫨鎼滃埜鎴栬浆閾�");
+                                JSONObject params = new JSONObject();
+                                params.put("id", result.getFirstGoods().getGoodsId() + "");
+                                params.put("from", "杞摼");
+                                if (result.getFirstGoods().getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
+                                    view = new JumpDetailContentVO();
+                                    view.setJumpDetail(
+                                            jumpDetailV2Service.getByTypeCache("goodsdetail", platformCode, version, acceptData.getSystem()));
+                                    view.setParams(params);
+                                } else if (result.getFirstGoods().getGoodsType() == Constant.SOURCE_TYPE_JD) {
+                                    view = new JumpDetailContentVO();
+                                    view.setJumpDetail(
+                                            jumpDetailV2Service.getByTypeCache("goodsdetail_jd", platformCode, version, acceptData.getSystem()));
+                                    view.setParams(params);
+                                } else if (result.getFirstGoods().getGoodsType() == Constant.SOURCE_TYPE_PDD) {
+                                    view = new JumpDetailContentVO();
+                                    view.setJumpDetail(
+                                            jumpDetailV2Service.getByTypeCache("goodsdetail_pdd", platformCode, version, acceptData.getSystem()));
+                                    view.setParams(params);
+                                }
+
+                            } else if (!StringUtil.isNullOrEmpty(result.getFirstLink())) {
+                                state = 2;
+                                data.put("stateDesc", "閫夋嫨鎼滃埜鎴栬浆閾�");
+                                view = new JumpDetailContentVO();
+                                view.setJumpDetail(jumpDetailV2Service.getByTypeCache("web", platformCode, version, acceptData.getSystem()));
+                                JSONObject params = new JSONObject();
+                                params.put("url", result.getFirstLink());
+                                view.setParams(params);
+                            } else {
+                                data.put("stateDesc", "鍘昏瘯璇曡浆閾�");
+                                state = 1;
+                            }
+                            data.put("state", state);
+                            if (convert != null)
+                                data.put("convert", gson.toJson(convert));
+                            if (view != null)
+                                data.put("view", gson.toJson(view));
+
+                            if (guessLike != null)
+                                data.put("guessLike", gson.toJson(guessLike));
+
+                            root.put("data", data);
+                            out.print(JsonUtil.loadTrueResult(root));
                             return;
                         }
 
-                        JSONObject root = new JSONObject();
-                        root.put("type", 20);
-                        JSONObject data = new JSONObject();
-                        data.put("text", originalText);
-                        //
-                        int platformCode = Constant.getPlatformCode(acceptData.getPlatform());
-                        int version = Integer.parseInt(acceptData.getVersion());
-                        JumpDetailContentVO convert = new JumpDetailContentVO();
-                        convert.setJumpDetail(jumpDetailV2Service.getByTypeCache("web", platformCode, version));
-                        JSONObject convertParams = new JSONObject();
-                        convertParams.put("url", configService.getValue(ConfigKeyEnum.convertDocWebLink.getKey(), acceptData.getSystem()));
-                        convertParams.put("clipboard", false);
-                        convert.setParams(convertParams);
-
-                        JumpDetailContentVO view = null;
-                        JumpDetailContentVO guessLike = null;
-
-                        Gson gson = JsonUtil.getApiCommonGson();
-                        data.put("title", "鏅鸿兘鎼滅储");
-
-                        int state = 0;
-                        if (result.getFirstGoods() != null && result.getFirstGoods().getGoodsId() != null) {
-                            state = 2;
-                            data.put("stateDesc", "閫夋嫨鎼滃埜鎴栬浆閾�");
-                            JSONObject params = new JSONObject();
-                            params.put("id", result.getFirstGoods().getGoodsId() + "");
-                            params.put("from", "杞摼");
-                            if (result.getFirstGoods().getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
-                                view = new JumpDetailContentVO();
-                                view.setJumpDetail(
-                                        jumpDetailV2Service.getByTypeCache("goodsdetail", platformCode, version));
-                                view.setParams(params);
-                            } else if (result.getFirstGoods().getGoodsType() == Constant.SOURCE_TYPE_JD) {
-                                view = new JumpDetailContentVO();
-                                view.setJumpDetail(
-                                        jumpDetailV2Service.getByTypeCache("goodsdetail_jd", platformCode, version));
-                                view.setParams(params);
-                            } else if (result.getFirstGoods().getGoodsType() == Constant.SOURCE_TYPE_PDD) {
-                                view = new JumpDetailContentVO();
-                                view.setJumpDetail(
-                                        jumpDetailV2Service.getByTypeCache("goodsdetail_pdd", platformCode, version));
-                                view.setParams(params);
-                            }
-
-                        } else if (!StringUtil.isNullOrEmpty(result.getFirstLink())) {
-                            state = 2;
-                            data.put("stateDesc", "閫夋嫨鎼滃埜鎴栬浆閾�");
-                            view = new JumpDetailContentVO();
-                            view.setJumpDetail(jumpDetailV2Service.getByTypeCache("web", platformCode, version));
-                            JSONObject params = new JSONObject();
-                            params.put("url", result.getFirstLink());
-                            view.setParams(params);
-                        } else {
-                            data.put("stateDesc", "鍘昏瘯璇曡浆閾�");
-                            state = 1;
+                        @Override
+                        public void onResult(String result) {
+                            JSONObject root = new JSONObject();
+                            root.put("type", 2);
+                            JSONObject data = new JSONObject();
+                            data.put("title", result);
+                            root.put("data", data);
+                            out.print(JsonUtil.loadTrueResult(root));
+                            return;
                         }
-                        data.put("state", state);
-                        if (convert != null)
-                            data.put("convert", gson.toJson(convert));
-                        if (view != null)
-                            data.put("view", gson.toJson(view));
 
-                        if (guessLike != null)
-                            data.put("guessLike", gson.toJson(guessLike));
+                        @Override
+                        public void onResult(CommonGoods goods) {
+                            if (goods.getGoodsId() != null) {
+                                if (VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion())) {// 1.6.5鐗堟湰鍚庤繑鍥炲晢鍝佽鎯�
+                                    if (goods.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
+                                        TaoBaoGoodsBrief goodsBrief = null;
+                                        String specialId = userExtraTaoBaoInfoService.getSpecialIdByUid(uid);
+                                        try {
+                                            goodsBrief = TaoKeApiUtil.searchGoodsDetail(StringUtil.isNullOrEmpty(goods.getGoodsSign()) ? goods.getGoodsId() : goods.getGoodsSign(), specialId, null);
+                                        } catch (TaobaoGoodsDownException e) {
+                                            e.printStackTrace();
+                                        }
 
-                        root.put("data", data);
-                        out.print(JsonUtil.loadTrueResult(root));
-                        return;
-                    }
+                                        if (goodsBrief != null) {
+                                            goods = CommonGoodsFactory.create(goodsBrief);
+                                            Gson gson = JsonUtil
+                                                    .getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
+                                                    .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd")
+                                                    .create();
+                                            data.put("type", 3);
 
-                    @Override
-                    public void onResult(String result) {
-                        JSONObject root = new JSONObject();
-                        root.put("type", 2);
-                        JSONObject data = new JSONObject();
-                        data.put("title", result);
-                        root.put("data", data);
-                        out.print(JsonUtil.loadTrueResult(root));
-                        return;
-                    }
 
-                    @Override
-                    public void onResult(CommonGoods goods) {
-                        if (goods.getGoodsId() != null) {
-                            if (VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion())) {// 1.6.5鐗堟湰鍚庤繑鍥炲晢鍝佽鎯�
-                                if (goods.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
-                                    TaoBaoGoodsBrief goodsBrief = null;
-                                    String specialId = userExtraTaoBaoInfoService.getSpecialIdByUid(uid);
-                                    try {
-                                        goodsBrief = TaoKeApiUtil.searchGoodsDetail(goods.getGoodsId(), specialId, null);
-                                    } catch (TaobaoGoodsDownException e) {
-                                        e.printStackTrace();
-                                    }
+                                            GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertCommonGoods(goods,
+                                                    orderHongBaoMoneyComputeService.getShowComputeRate(
+                                                            acceptData.getPlatform(),
+                                                            acceptData.getVersion(), acceptData.getSystem()));
 
-                                    if (goodsBrief != null) {
-                                        goods = CommonGoodsFactory.create(goodsBrief);
-                                        Gson gson = JsonUtil
-                                                .getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
+                                            goodsDetailVO = goodsLijinMnager.loadTBMoneyInfo(acceptData.getSystem(), uid, goodsBrief, goodsDetailVO, false);
+
+                                            data.put("goods",
+                                                    gson.toJson(goodsDetailVO));
+                                            // 璺宠浆璇︽儏
+                                            if (VersionUtil.greaterThan_2_1_3(acceptData.getPlatform(),
+                                                    acceptData.getVersion())) {
+                                                buildGoodsClick(data, goods, acceptData, gson);
+                                            }
+
+                                            out.print(JsonUtil.loadTrueResult(data));
+                                            return;
+                                        }
+                                    } else {
+                                        Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
                                                 .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd")
                                                 .create();
                                         data.put("type", 3);
                                         data.put("goods",
                                                 gson.toJson(
-                                                        GoodsDetailVOFactory.convertCommonGoods(goods,
-                                                                orderHongBaoMoneyComputeService.getShowComputeRate(
-                                                                        acceptData.getPlatform(),
-                                                                        acceptData.getVersion(), acceptData.getSystem()))));
-                                        // 璺宠浆璇︽儏
-                                        if (VersionUtil.greaterThan_2_1_3(acceptData.getPlatform(),
-                                                acceptData.getVersion())) {
-                                            buildGoodsClick(data, goods, acceptData, gson);
-                                        }
-
+                                                        goodsLijinMnager.loadOtherMoneyInfo(acceptData.getSystem(), uid, goods,
+                                                                GoodsDetailVOFactory.convertCommonGoods(goods,
+                                                                        orderHongBaoMoneyComputeService.getShowComputeRate(
+                                                                                acceptData.getPlatform(),
+                                                                                acceptData.getVersion(), acceptData.getSystem())))));
+                                        // if
+                                        // (VersionUtil.greaterThan_2_1_2(acceptData.getPlatform(),
+                                        // acceptData.getVersion())) {
+                                        // buildGoodsClick(data, goods, acceptData,
+                                        // gson);
+                                        // }
                                         out.print(JsonUtil.loadTrueResult(data));
                                         return;
                                     }
                                 } else {
-                                    Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
-                                            .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd")
-                                            .create();
-                                    data.put("type", 3);
-                                    data.put("goods",
-                                            gson.toJson(
-                                                    GoodsDetailVOFactory.convertCommonGoods(goods,
-                                                            orderHongBaoMoneyComputeService.getShowComputeRate(
-                                                                    acceptData.getPlatform(),
-                                                                    acceptData.getVersion(), acceptData.getSystem()))));
-                                    // if
-                                    // (VersionUtil.greaterThan_2_1_2(acceptData.getPlatform(),
-                                    // acceptData.getVersion())) {
-                                    // buildGoodsClick(data, goods, acceptData,
-                                    // gson);
-                                    // }
-                                    out.print(JsonUtil.loadTrueResult(data));
+                                    // 浣庝簬1.6.5鐗堟湰
+                                    JSONObject taoBaoGoodsJSON = new JSONObject();
+                                    taoBaoGoodsJSON.put("title", goods.getTitle());
+                                    taoBaoGoodsJSON.put("zkPrice", goods.getPrice() + "");
+                                    taoBaoGoodsJSON.put("id", goods.getGoodsId());
+                                    taoBaoGoodsJSON.put("goodsType", goods.getGoodsType());
+                                    if (goods.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
+                                        taoBaoGoodsJSON.put("url",
+                                                "http://item.taobao.com/item.htm?id=" + goods.getGoodsId());
+                                    } else if (goods.getGoodsType() == Constant.SOURCE_TYPE_JD) {
+                                        taoBaoGoodsJSON.put("url",
+                                                String.format("https://item.jd.com/%s.html", goods.getGoodsId() + ""));
+                                    } else if (goods.getGoodsType() == Constant.SOURCE_TYPE_PDD) {
+                                        taoBaoGoodsJSON.put("url",
+                                                "http://yangkeduo.com/goods.html?goods_id=" + goods.getGoodsId());
+                                    }
+                                    data.put("goods", taoBaoGoodsJSON);
+                                    List<String> picList = new ArrayList<>();
+                                    picList.add(goods.getPicture());
+                                    data.put("imgs", picList);
+                                    JSONObject root = new JSONObject();
+                                    root.put("type", 1);
+                                    root.put("data", data);
+                                    out.print(JsonUtil.loadTrueResult(root));
                                     return;
                                 }
-                            } else {
-                                // 浣庝簬1.6.5鐗堟湰
-                                JSONObject taoBaoGoodsJSON = new JSONObject();
-                                taoBaoGoodsJSON.put("title", goods.getTitle());
-                                taoBaoGoodsJSON.put("zkPrice", goods.getPrice() + "");
-                                taoBaoGoodsJSON.put("id", goods.getGoodsId());
-                                taoBaoGoodsJSON.put("goodsType", goods.getGoodsType());
-                                if (goods.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
-                                    taoBaoGoodsJSON.put("url",
-                                            "http://item.taobao.com/item.htm?id=" + goods.getGoodsId());
-                                } else if (goods.getGoodsType() == Constant.SOURCE_TYPE_JD) {
-                                    taoBaoGoodsJSON.put("url",
-                                            String.format("https://item.jd.com/%s.html", goods.getGoodsId() + ""));
-                                } else if (goods.getGoodsType() == Constant.SOURCE_TYPE_PDD) {
-                                    taoBaoGoodsJSON.put("url",
-                                            "http://yangkeduo.com/goods.html?goods_id=" + goods.getGoodsId());
-                                }
-                                data.put("goods", taoBaoGoodsJSON);
-                                List<String> picList = new ArrayList<>();
-                                picList.add(goods.getPicture());
-                                data.put("imgs", picList);
-                                JSONObject root = new JSONObject();
-                                root.put("type", 1);
-                                root.put("data", data);
-                                out.print(JsonUtil.loadTrueResult(root));
-                                return;
                             }
+
+                            JSONObject goodsJSON = new JSONObject();
+                            goodsJSON.put("title", goods.getTitle());
+                            goodsJSON.put("pictUrl", goods.getPicture());
+
+                            data.put("type", 4);
+                            data.put("desc", "璇ュ晢鍝佹棤鎺ㄥ箍淇℃伅");
+                            data.put("goods", goodsJSON);
+                            out.print(JsonUtil.loadTrueResult(data));
+                            return;
                         }
 
-                        JSONObject goodsJSON = new JSONObject();
-                        goodsJSON.put("title", goods.getTitle());
-                        goodsJSON.put("pictUrl", goods.getPicture());
+                        @Override
+                        public void onResult(TokenVO tokenVO) {
+                            out.print(JsonUtil.loadTrueResult(tokenVO));
+                            return;
+                        }
 
-                        data.put("type", 4);
-                        data.put("desc", "璇ュ晢鍝佹棤鎺ㄥ箍淇℃伅");
-                        data.put("goods", goodsJSON);
-                        out.print(JsonUtil.loadTrueResult(data));
-                        return;
-                    }
+                        @Override
+                        public void none() {
+                            out.print(JsonUtil.loadFalseResult("鏃犳帹鑽�"));
+                        }
 
-                    @Override
-                    public void onResult(TokenVO tokenVO) {
-                        out.print(JsonUtil.loadTrueResult(tokenVO));
-                        return;
-                    }
+                        @Override
+                        public void needLogin(String msg) {
+                            out.print(JsonUtil.loadFalseResult(1001, msg));
+                        }
+                    });
+        }
+    }
 
-                    @Override
-                    public void none() {
-                        out.print(JsonUtil.loadFalseResult("鏃犳帹鑽�"));
-                    }
-
-                    @Override
-                    public void needLogin(String msg) {
-                        out.print(JsonUtil.loadFalseResult(1001, msg));
-                    }
-                });
+    @RequestMapping(value = "getRecommendInfoTJ", method = RequestMethod.POST)
+    public void getRecommendInfoTJ(AcceptData acceptData, String text, Long uid, PrintWriter out) {
+        if (StringUtil.isNullOrEmpty(text)) {
+            out.print(JsonUtil.loadFalseResult("鍊间负绌�"));
+            return;
+        }
+        // 鍘婚櫎鍓嶅悗绌烘牸
+        text = text.trim();
+        Integer sourceType = clipboardAnalysisManager.tejiaParseSourceType(text);
+        JSONObject root = new JSONObject();
+        root.put("type", 2);
+        JSONObject data = new JSONObject();
+        data.put("title", text);
+        data.put("sourceType", sourceType);
+        root.put("data", data);
+        out.print(JsonUtil.loadTrueResult(root));
     }
 
     private void buildGoodsClick(JSONObject data, CommonGoods goods, AcceptData acceptData, Gson gson) {
@@ -379,6 +433,9 @@
         switch (goods.getGoodsType()) {
             case Constant.SOURCE_TYPE_TAOBAO:
                 type = "goodsdetail";
+                if (!StringUtil.isNullOrEmpty(goods.getGoodsSign())) {
+                    params.put("id", goods.getGoodsSign() + "");
+                }
                 break;
             case Constant.SOURCE_TYPE_JD:
                 type = "goodsdetail_jd";
@@ -392,11 +449,14 @@
             case Constant.SOURCE_TYPE_SUNING:
                 type = "goodsdetail_suning";
                 break;
+            case Constant.SOURCE_TYPE_DY:
+                type = "goodsdetail_dy";
+                break;
 
         }
 
         RecommendJumpInfoVO left = new RecommendJumpInfoVO("鍘荤湅鐪�", jumpDetailV2Service.getByTypeCache(type,
-                Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion())), params);
+                Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()), params);
         data.put("left", gson.toJson(left));
 
         // 鍘荤綉椤�
@@ -410,7 +470,7 @@
             params.put("url", rightValue);
 
             RecommendJumpInfoVO right = new RecommendJumpInfoVO("鏈夋洿楂樿繑鍒╋紵", jumpDetailV2Service.getByTypeCache("web",
-                    Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion())),
+                    Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()),
                     params);
             data.put("right", gson.toJson(right));
         }
@@ -485,9 +545,9 @@
      */
     @RequestMapping(value = "searchGoods")
     public void searchGoods(AcceptData acceptData, Integer goodsType, String key, Integer page, String filter,
-                            Integer order, Long uid, String notifyType, HttpSession session, PrintWriter out) {
+                            Integer order, Long uid, String notifyType, HttpSession session, HttpServletRequest request, PrintWriter out) {
 
-        if (goodsType == null || goodsType < 1 || goodsType > 5) {
+        if (goodsType == null || goodsType < 1 || goodsType > 7) {
             out.print(JsonUtil.loadFalseResult(1, "璇蜂紶閫掓纭钩鍙板弬鏁�"));
             return;
         }
@@ -524,18 +584,17 @@
         executor.execute(new Runnable() {
             @Override
             public void run() {
-                StringBuffer sb = new StringBuffer();
-                String link = "#$$$#";
-                String platform = acceptData.getPlatform();
-                String packages = acceptData.getPackages();
-                String device = acceptData.getDevice();
-                sb.append(platform).append(link).append(packages).append(link).append(device);
-                String bid = StringUtil.Md5(sb.toString());
-
-                // 鍔犲叆鎼滅储鍘嗗彶璁板綍
-                historySearchService.addHistorySearch(searchkey, bid);
+                HistorySearch search = new HistorySearch();
+                search.setDevice(StringUtil.isNullOrEmpty(acceptData.getUtdid()) ? acceptData.getDevice() : acceptData.getUtdid());
+                search.setKey(key);
+                search.setSystem(acceptData.getSystem());
+                search.setUid(uid);
+                search.setGoodsType(goodsType);
+                search.setIpInfo(IPUtil.getRemotIP(request) + ":" + request.getRemotePort());
+                historySearchService.addHistorySearch(search);
             }
         });
+
 
         if (searchkey.startsWith("http://") || searchkey.startsWith("https://")) {
             JSONObject data = new JSONObject();
@@ -562,7 +621,7 @@
 
         /*--------- 浜笢鍟嗗搧  -------*/
         if (goodsType.intValue() == Constant.SOURCE_TYPE_JD) {
-            searchJDGoods(acceptData, searchkey, page, filter, order, ap, out);
+            searchJDGoods(acceptData, uid, searchkey, page, filter, order, ap, out);
             return;
         }
 
@@ -574,15 +633,112 @@
 
         /*-------- 鍞搧浼氬晢鍝� ------*/
         if (goodsType.intValue() == Constant.SOURCE_TYPE_VIP) {
-            searchVIPGoods(acceptData, searchkey, page, filter, order, ap, out);
+            searchVIPGoods(acceptData, uid, searchkey, page, filter, order, ap, out);
             return;
         }
 
         /*-------- 鑻忓畞鍟嗗搧 ------*/
         if (goodsType.intValue() == Constant.SOURCE_TYPE_SUNING) {
-            searchSuningGoods(acceptData, searchkey, page, filter, order, ap, out);
+            searchSuningGoods(acceptData, uid, searchkey, page, filter, order, ap, out);
             return;
         }
+
+
+        /*-------- 鎶栭煶鍟嗗搧 ------*/
+        if (goodsType.intValue() == Constant.SOURCE_TYPE_DY) {
+            searchDYGoods(acceptData, uid, searchkey, page, filter, order, ap, out);
+            return;
+        }
+
+        /*-------- 娣樺疂鍟嗗搧  -------*/
+        searchTaoBaoGoods(acceptData, uid, searchkey, page, filter, order, ap, out);
+
+    }
+
+
+    @RequestMapping(value = "searchGoodsTJ")
+    public void searchGoodsTJ(AcceptData acceptData, Integer goodsType, String key, Integer page, String filter,
+                              Integer order, Long uid, String notifyType, HttpSession session, HttpServletRequest request, PrintWriter out) {
+
+        if (goodsType == null || goodsType < 1 || goodsType > 5) {
+            out.print(JsonUtil.loadFalseResult(1, "璇蜂紶閫掓纭钩鍙板弬鏁�"));
+            return;
+        }
+
+        if (page == null || page < 1) {
+            out.print(JsonUtil.loadFalseResult(1, "椤电爜涓嶈兘灏忎簬1"));
+            return;
+        }
+
+        if (StringUtil.isNullOrEmpty(key)) {
+            out.print(JsonUtil.loadFalseResult(1, "璇疯緭鍏ユ悳绱㈠唴瀹�"));
+            return;
+        }
+        final String searchkey = key.trim();
+
+
+        executor.execute(new Runnable() {
+            @Override
+            public void run() {
+                HistorySearch search = new HistorySearch();
+                search.setDevice(StringUtil.isNullOrEmpty(acceptData.getUtdid()) ? acceptData.getDevice() : acceptData.getUtdid());
+                search.setKey(key);
+                search.setSystem(acceptData.getSystem());
+                search.setUid(uid);
+                search.setGoodsType(goodsType);
+                search.setIpInfo(IPUtil.getRemotIP(request) + ":" + request.getRemotePort());
+                historySearchService.addHistorySearch(search);
+            }
+        });
+
+
+        AppPageNotification ap = null;
+        if (page == 1) {
+            ap = appPageNotificationService.getValidNotificationByTypeCache(notifyType, acceptData.getPlatform(),
+                    Integer.parseInt(acceptData.getVersion()), acceptData.getSystem());
+            // 娌℃湁閫氱煡
+            if (ap == null || !ap.getShow()) {
+                ap = null;
+            }
+
+            // else {// 鏈夐�氱煡
+            // Gson gson = new
+            // GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
+            // out.print(JsonUtil.loadTrueResult(gson.toJson(ap)));
+            // }
+        }
+
+        /*--------- 浜笢鍟嗗搧  -------*/
+        if (goodsType.intValue() == Constant.SOURCE_TYPE_JD) {
+            searchJDGoods(acceptData, uid, searchkey, page, filter, order, ap, out);
+            return;
+        }
+
+        /*-------- 鎷煎澶氬晢鍝�  -------*/
+        if (goodsType.intValue() == Constant.SOURCE_TYPE_PDD) {
+            searchPDDGoods(acceptData, uid, searchkey, page, filter, order, ap, out);
+            return;
+        }
+
+        /*-------- 鍞搧浼氬晢鍝� ------*/
+        if (goodsType.intValue() == Constant.SOURCE_TYPE_VIP) {
+            searchVIPGoods(acceptData, uid, searchkey, page, filter, order, ap, out);
+            return;
+        }
+
+        /*-------- 鑻忓畞鍟嗗搧 ------*/
+        if (goodsType.intValue() == Constant.SOURCE_TYPE_SUNING) {
+            searchSuningGoods(acceptData, uid, searchkey, page, filter, order, ap, out);
+            return;
+        }
+
+
+        /*-------- 鎶栭煶鍟嗗搧 ------*/
+        if (goodsType.intValue() == Constant.SOURCE_TYPE_DY) {
+            searchDYGoods(acceptData, uid, searchkey, page, filter, order, ap, out);
+            return;
+        }
+
 
         /*-------- 娣樺疂鍟嗗搧  -------*/
         searchTaoBaoGoods(acceptData, uid, searchkey, page, filter, order, ap, out);
@@ -603,108 +759,203 @@
      */
     private void searchTaoBaoGoods(AcceptData acceptData, Long uid, String key, Integer page, String filter, Integer order,
                                    AppPageNotification ap, PrintWriter out) {
-        SearchFilter sf = new SearchFilter();
-        sf.setKey(SearchFilterUtil.filterSearchContent(key));
-        sf.setPage(page);
-        sf.setPageSize(Constant.PAGE_SIZE);
-
-        if (order != null) {
-            if (order == 1) { // 閿�閲忛珮鍒颁綆
-                sf.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
-            } else if (order == 2) { // 浠锋牸楂樺埌浣�
-                sf.setSort(TaoBaoUtil.SORT_PRICE_HIGH_TO_LOW);
-            } else if (order == 3) { // 浠锋牸浣庡埌楂�
-                sf.setSort(TaoBaoUtil.SORT_PRICE_LOW_TO_HIGH);
-            } else if (order == 4) { // 杩斿埄姣旈珮鍒颁綆
-                sf.setSort(TaoBaoUtil.SORT_TKRATE_HIGH_TO_LOW);
-            }
-        }
-
-        if (!StringUtil.isNullOrEmpty(filter)) {
-            JSONObject jsonfilter = JSONObject.fromObject(filter);
-            Boolean coupon = jsonfilter.optBoolean("coupon");
-            if (coupon != null && coupon) {
-                sf.setQuan(1); // 鏈夊埜
-            }
-
-            Boolean tmall = jsonfilter.optBoolean("tmall");
-            if (tmall != null && tmall) {
-                sf.setTmall(true); // 澶╃尗
-            }
-
-            String minPrice = jsonfilter.optString("minPrice");
-            if (!StringUtil.isNullOrEmpty(minPrice)) {
-                sf.setStartPrice(new BigDecimal(minPrice));
-            }
-
-            String maxPrice = jsonfilter.optString("maxPrice");
-            if (!StringUtil.isNullOrEmpty(maxPrice)) {
-                sf.setEndPrice(new BigDecimal(maxPrice));
-            }
-        }
-
-        // 鎼滅储澶ф窐瀹�
-        List<DaTaoKeDetailV2> daTaoKeList = null;
+        String goodsId = null;
+        //鏄惁鍖呭惈娣樺疂閾炬帴/鍙d护
         if (page == 1) {
-            daTaoKeList = daTaoKeGoodsDetailV2Service.listByDtitle(key);
-        }
-
-        String specialId = null;
-        if (uid != null) {
-            specialId = userExtraTaoBaoInfoService.getSpecialIdByUid(uid);
-        }
-
-        // 娣樺疂api鎼滅储鍟嗗搧
-        TaoBaoSearchResult result = taoBaoGoodsCacheUtil.getSearchResult(sf); // TaoBaoUtil.search(sf, specialId, null);
-        if (result == null) {
-            result = TaoBaoUtil.search(sf, specialId, null);
-            taoBaoGoodsCacheUtil.saveSearchResult(sf, result);
-        }
-        TaoBaoSearchResult finalResult = result;
-        // 鎼滅储缁撴灉缂撳瓨鍒皉edis
-        if (result != null && result.getTaoBaoGoodsBriefs() != null && result.getTaoBaoGoodsBriefs().size() > 0) {
-            ThreadUtil.run(new Runnable() {
-                @Override
-                public void run() {
-                    // 鏇存柊鍒扮珐瀛�
-                    for (TaoBaoGoodsBrief goods : finalResult.getTaoBaoGoodsBriefs())
-                        taoBaoGoodsCacheUtil.saveCommonTaoBaoGoodsInfo(goods);
+            List<String> linkList = HttpUtil.getUrlListFromText(key);
+            if (((linkList != null && linkList.size() > 0) || TaoBaoUtil.isHaveNewVersionTaoBaoToken(key))&&false) {
+                // 鏆傛椂涓嶉�氳繃閾炬帴鎼滅储
+                String id = DaTaoKeApiUtil.parseGoodsIdFromToken(key);
+                if (id != null) {
+                    goodsId = id;
                 }
-            });
-        }
+                if (goodsId == null) {
+                    try {
+                        TaoKeApiUtil.TokenConvertResult result = TaoKeApiUtil.tokenConvert(key);
+                        if (result != null) {
+                            goodsId = result.getNum_iid();
+                        }
+                    } catch (TaoBaoTokenParseException e) {
+                        e.printStackTrace();
+                    }
 
-        List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = null;
-        if (result != null) {
-            taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
-        }
-        if (taoBaoGoodsBriefs == null) {
-            taoBaoGoodsBriefs = new ArrayList<>();
-        }
 
-        if (daTaoKeList != null && daTaoKeList.size() > 0) {
-            try {
-                Collections.reverse(daTaoKeList);
-                for (DaTaoKeDetailV2 detail : daTaoKeList) {
-                    taoBaoGoodsBriefs.add(0, TaoBaoUtil.convert(detail));
                 }
-            } catch (Exception e) {
+                if (goodsId == null) {
+                    //瑙f瀽閾炬帴
+//                    if (linkList != null && linkList.size() > 0) {
+//                        String tempGoodsId = clipboardAnalysisManager.parseTBAuctionIdFromLink(linkList.get(0));
+//                        if (!StringUtil.isNullOrEmpty(tempGoodsId)) {
+//                            goodsId = tempGoodsId;
+//                        }
+//                    }
+                }
+            }
+
+            //鍟嗗搧ID涓虹┖锛屼笖鏄彛浠ょ殑褰㈠紡灏变互鏈姞鍏ユ窐瀹濊仈鐩熺殑鍟嗗搧澶勭悊
+            if (goodsId == null && (linkList != null && linkList.size() > 0) && TaoBaoUtil.isHaveNewVersionTaoBaoToken(key)) {
+                String title = TaoBaoUtil.getGoodsTitleFromTokenText(key);
+                if (StringUtil.isNullOrEmpty(title)) {
+                    String[] ks = key.trim().split("  ");
+                    if (ks.length > 1)
+                        key = ks[1].trim();
+                } else {
+                    key = title;
+                }
             }
         }
 
-        List<GoodsDetailVO> list = new ArrayList<GoodsDetailVO>();
-        ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(),
+
+        List<TaoBaoGoodsBrief> goodsBriefList = new ArrayList<>();
+        int count = 0;
+        try {
+            if (goodsId != null) {
+                try {
+                    TaoBaoGoodsBrief goods = TaoKeApiUtil.searchGoodsDetail(goodsId);
+                    goods.setCreatetime(null);
+                    goodsBriefList.add(goods);
+                    count = 1;
+                } catch (TaobaoGoodsDownException e) {
+                    e.printStackTrace();
+                }
+            } else {
+                SearchFilter sf = new SearchFilter();
+                sf.setKey(SearchFilterUtil.filterSearchContent(key));
+                sf.setPage(page);
+                sf.setPageSize(Constant.PAGE_SIZE);
+
+                if (order != null) {
+                    if (order == 1) { // 閿�閲忛珮鍒颁綆
+                        sf.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
+                    } else if (order == 2) { // 浠锋牸楂樺埌浣�
+                        sf.setSort(TaoBaoUtil.SORT_PRICE_HIGH_TO_LOW);
+                    } else if (order == 3) { // 浠锋牸浣庡埌楂�
+                        sf.setSort(TaoBaoUtil.SORT_PRICE_LOW_TO_HIGH);
+                    } else if (order == 4) { // 杩斿埄姣旈珮鍒颁綆
+                        sf.setSort(TaoBaoUtil.SORT_TKRATE_HIGH_TO_LOW);
+                    }
+                }
+
+                if (!StringUtil.isNullOrEmpty(filter)) {
+                    JSONObject jsonfilter = JSONObject.fromObject(filter);
+                    Boolean coupon = jsonfilter.optBoolean("coupon");
+                    if (coupon != null && coupon) {
+                        sf.setQuan(1); // 鏈夊埜
+                    }
+
+                    Boolean tmall = jsonfilter.optBoolean("tmall");
+                    if (tmall != null && tmall) {
+                        sf.setTmall(true); // 澶╃尗
+                    }
+
+                    String minPrice = jsonfilter.optString("minPrice");
+                    if (!StringUtil.isNullOrEmpty(minPrice)) {
+                        sf.setStartPrice(new BigDecimal(minPrice));
+                    }
+
+                    String maxPrice = jsonfilter.optString("maxPrice");
+                    if (!StringUtil.isNullOrEmpty(maxPrice)) {
+                        sf.setEndPrice(new BigDecimal(maxPrice));
+                    }
+                }
+
+                // 鎼滅储澶ф窐瀹�
+                List<DaTaoKeDetailV2> daTaoKeList = null;
+                if (page == 1) {
+                    daTaoKeList = daTaoKeGoodsDetailV2Service.listByDtitle(key);
+                }
+
+                String specialId = null;
+                if (uid != null) {
+                    specialId = userExtraTaoBaoInfoService.getSpecialIdByUid(uid);
+                }
+
+                // 娣樺疂api鎼滅储鍟嗗搧
+                //TODO 娴嬭瘯娉ㄩ噴
+                TaoBaoSearchResult result = taoBaoGoodsCacheUtil.getSearchResult(sf); // TaoBaoUtil.search(sf, specialId, null);
+                if (result == null) {
+                    result = TaoBaoUtil.search(sf, specialId, null);
+                    if (result != null && result.getTaoBaoGoodsBriefs() != null && result.getTaoBaoGoodsBriefs().size() > 1) {
+                        for (TaoBaoGoodsBrief g : result.getTaoBaoGoodsBriefs()) {
+                            if (StringUtil.isNullOrEmpty(g.getAuctionId())) {
+                                logger.error("鎼滅储缁撴灉鏈夌┖ID鐨勬儏鍐�  鍏抽敭瀛梴}", key);
+                            }
+                        }
+                    }
+
+                    //濡傛灉鏄崟涓晢鍝侊紝涓旈噷闈㈢殑鍟嗗搧ID涓虹┖锛屽氨闇�瑕佸�熷姪澶ф窐瀹㈡悳绱�
+                    if (result.getTaoBaoGoodsBriefs() != null && result.getTaoBaoGoodsBriefs().size() == 1 && StringUtil.isNullOrEmpty(result.getTaoBaoGoodsBriefs().get(0).getAuctionId())) {
+                        //鏈変竴涓晢鍝佷笖閲岄潰鐨勫晢鍝両D涓虹┖鐨勬儏鍐�
+                        JSONArray darray = DaTaoKeApiUtil.tbSearch(key);
+                        if (darray != null && darray.size() > 0) {
+                            String auctionId = darray.optJSONObject(0).optString("item_id");
+                            result.getTaoBaoGoodsBriefs().set(0, TaoKeApiUtil.searchGoodsDetail(auctionId));
+                        }else{
+                            // 澶ф窐瀹㈡棤娉曟悳绱㈠埌锛屽氨灏嗘渶鍚庝竴涓瓧鍘绘帀鐒跺悗鍐嶆悳绱�
+                            String originText = sf.getKey();
+                            sf.setKey(originText.substring(0,originText.length()-1));
+                            result = TaoBaoUtil.search(sf, specialId, null);
+//                            if(result.getTaoBaoGoodsBriefs() != null)
+//                                for(TaoBaoGoodsBrief tb: result.getTaoBaoGoodsBriefs()){
+//                                    if(originText.equalsIgnoreCase(tb.getTitle())){
+//
+//                                        break;
+//                                    }
+//                                }
+                        }
+                    }
+                    taoBaoGoodsCacheUtil.saveSearchResult(sf, result);
+                }
+                TaoBaoSearchResult finalResult = result;
+                // 鎼滅储缁撴灉缂撳瓨鍒皉edis
+                if (result != null && result.getTaoBaoGoodsBriefs() != null && result.getTaoBaoGoodsBriefs().size() > 0) {
+                    ThreadUtil.run(new Runnable() {
+                        @Override
+                        public void run() {
+                            // 鏇存柊鍒扮珐瀛�
+                            for (TaoBaoGoodsBrief goods : finalResult.getTaoBaoGoodsBriefs())
+                                taoBaoGoodsCacheUtil.saveCommonTaoBaoGoodsInfo(goods);
+                        }
+                    });
+                }
+
+                List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = null;
+                if (result != null) {
+                    taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
+                }
+                if (taoBaoGoodsBriefs == null) {
+                    taoBaoGoodsBriefs = new ArrayList<>();
+                }
+
+                if (daTaoKeList != null && daTaoKeList.size() > 0) {
+                    try {
+                        Collections.reverse(daTaoKeList);
+                        for (DaTaoKeDetailV2 detail : daTaoKeList) {
+                            taoBaoGoodsBriefs.add(0, TaoBaoUtil.convert(detail));
+                        }
+                    } catch (Exception e) {
+                    }
+                }
+
+                count = result.getTaoBaoHead().getDocsfound();
+                if (taoBaoGoodsBriefs != null)
+                    goodsBriefList.addAll(taoBaoGoodsBriefs);
+            }
+        } catch (Exception e) {
+
+        }
+
+        GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(),
                 acceptData.getVersion(), acceptData.getSystem());
 
-        for (TaoBaoGoodsBrief goods : taoBaoGoodsBriefs) {
-            list.add(GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO));
-        }
+        List<GoodsDetailVO> list = goodsLijinMnager.loadTBMoneyInfo(acceptData.getSystem(), uid, goodsBriefList, paramsDTO, false);
 
         Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
                 .excludeFieldsWithoutExposeAnnotation().create();
 
         JSONObject data = new JSONObject();
         data.put("result", gson.toJson(list));
-        data.put("count", result.getTaoBaoHead().getDocsfound());
+        data.put("count", count);
 
         if (page == 1) { // 绗竴椤佃繑鍥炲簵閾轰俊鎭�
             String platform = acceptData.getPlatform();
@@ -761,165 +1012,191 @@
      * @param ap
      * @param out
      */
-    private void searchJDGoods(AcceptData acceptData, String key, Integer page, String filter, Integer order,
+    private void searchJDGoods(AcceptData acceptData, Long uid, String key, Integer page, String filter, Integer order,
                                AppPageNotification ap, PrintWriter out) {
 
-        JDSearchResult result = null;
-        boolean hasCoupon = false;
-        String way = configService.getValue(ConfigKeyEnum.jdApiSearchKey.getKey(), acceptData.getSystem());
-        if ("1".equals(way)) {
-            JDFilter filterAPI = new JDFilter();
-            filterAPI.setKeyword(SearchFilterUtil.filterSearchContent(key));
-            filterAPI.setPageIndex(page);
-            filterAPI.setPageSize(Constant.PAGE_SIZE);
+        String goodsId = null;
+        long count = 0;
+        List<JDGoods> goodsList = new ArrayList<>();
 
-            if (order != null) {
-                int sort = order.intValue();
-                switch (sort) {
-                    case 1: // 閿�閲� desc
-                        filterAPI.setSort(JDFilter.SORT_DESC);
-                        filterAPI.setSortName(JDFilter.SORTNAME_ORDER_COUNT_30DAYS);
-                        break;
-                    case 2: // 浠锋牸鈥攄esc
-                        filterAPI.setSort(JDFilter.SORT_DESC);
-                        filterAPI.setSortName(JDFilter.SORTNAME_PRICE);
-                        break;
-                    case 3: // 浠锋牸鈥攁sc
-                        filterAPI.setSort(JDFilter.SORT_ASC);
-                        filterAPI.setSortName(JDFilter.SORTNAME_PRICE);
-                        break;
-                    case 4: // 杩斿埄姣斺�擠ESC
-                        filterAPI.setSort(JDFilter.SORT_DESC);
-                        filterAPI.setSortName(JDFilter.SORTNAME_COMMISSION_SHARE);
-                        break;
-                    default:
-                        break;
+        if (page == 1) {
+            List<String> linkList = HttpUtil.getUrlListFromText(key);
+            if (linkList != null && linkList.size() > 0) {
+                String jdId = clipboardAnalysisManager.parseJDSkuIdFromLink(linkList.get(0));
+                if (!StringUtil.isNullOrEmpty(jdId)) {
+                    goodsId = jdId;
                 }
             }
-
-            if (!StringUtil.isNullOrEmpty(filter)) {
-                JSONObject jsonfilter = JSONObject.fromObject(filter);
-                Boolean coupon = jsonfilter.optBoolean("coupon");
-                if (coupon != null && coupon) {
-                    hasCoupon = true;
-                    filterAPI.setIsCoupon(1); // 鏈夊埜
-                }
-
-                Boolean zy = jsonfilter.optBoolean("zy");
-                if (zy != null && zy) {
-                    filterAPI.setOwner("g"); // 鑷惀
-                }
-
-                String minPrice = jsonfilter.optString("minPrice");
-                if (!StringUtil.isNullOrEmpty(minPrice)) {
-                    filterAPI.setPricefrom(Double.parseDouble(minPrice));
-                }
-
-                String maxPrice = jsonfilter.optString("maxPrice");
-                if (!StringUtil.isNullOrEmpty(maxPrice)) {
-                    filterAPI.setPriceto(Double.parseDouble(maxPrice));
-                }
-            }
-
-            result = JDApiUtil.queryByKey(filterAPI);
-        } else {
-            // 缃戦〉鐖彇
-            JDSearchFilter jdfilter = new JDSearchFilter();
-            jdfilter.setKey(SearchFilterUtil.filterSearchContent(key));
-            jdfilter.setPageNo(page);
-            jdfilter.setPageSize(Constant.PAGE_SIZE);
-
-            if (order != null) {
-                int sort = order.intValue();
-                switch (sort) {
-                    case 1: // 閿�閲� desc
-                        jdfilter.setSort(JDSearchFilter.SORT_DESC);
-                        jdfilter.setSortName(JDSearchFilter.SORTNAME_ORDER_COUNT_30DAYS);
-                        break;
-                    case 2: // 浠锋牸鈥攄esc
-                        jdfilter.setSort(JDSearchFilter.SORT_DESC);
-                        jdfilter.setSortName(JDSearchFilter.SORTNAME_PRICE);
-                        break;
-                    case 3: // 浠锋牸鈥攁sc
-                        jdfilter.setSort(JDSearchFilter.SORT_ASC);
-                        jdfilter.setSortName(JDSearchFilter.SORTNAME_PRICE);
-                        break;
-                    case 4: // 杩斿埄姣斺�擠ESC
-                        jdfilter.setSort(JDSearchFilter.SORT_DESC);
-                        jdfilter.setSortName(JDSearchFilter.SORTNAME_COMMISSION_SHARE);
-                        break;
-                    default:
-                        break;
-                }
-            }
-
-            if (!StringUtil.isNullOrEmpty(filter)) {
-                JSONObject jsonfilter = JSONObject.fromObject(filter);
-                Boolean coupon = jsonfilter.optBoolean("coupon");
-                if (coupon != null && coupon) {
-                    hasCoupon = true;
-                    jdfilter.setHasCoupon(1); // 鏈夊埜
-                }
-
-                Boolean zy = jsonfilter.optBoolean("zy");
-                if (zy != null && zy) {
-                    jdfilter.setIsZY(1); // 鑷惀
-                }
-
-                Boolean delivery = jsonfilter.optBoolean("delivery");
-                if (delivery != null && delivery) {
-                    jdfilter.setDeliveryType(1); // 浜笢閰嶉��
-                }
-
-                String minPrice = jsonfilter.optString("minPrice");
-                if (!StringUtil.isNullOrEmpty(minPrice)) {
-                    if (minPrice.contains(".")) {
-                        minPrice = minPrice.replace(".", "-");
-                        minPrice = minPrice.split("-")[0];
-                    }
-                    jdfilter.setFromPrice(Integer.parseInt(minPrice));
-                }
-
-                String maxPrice = jsonfilter.optString("maxPrice");
-                if (!StringUtil.isNullOrEmpty(maxPrice)) {
-                    if (maxPrice.contains(".")) {
-                        maxPrice = maxPrice.replace(".", "-");
-                        maxPrice = maxPrice.split("-")[0];
-                    }
-                    jdfilter.setToPrice(Integer.parseInt(maxPrice));
-                }
-            }
-            result = JDUtil.searchByKey(jdfilter);
-
         }
 
-        long count = 0;
+        boolean hasCoupon = false;
+        if (goodsId != null) {
+            JDGoods goods = JDApiUtil.getGoodsDetail(goodsId);
+            if (goods != null) {
+                count = 1;
+                goodsList.add(goods);
+            }
+        } else {
+            JDSearchResult result = null;
+            String way = configService.getValue(ConfigKeyEnum.jdApiSearchKey.getKey(), acceptData.getSystem());
+            if ("1".equals(way)) {
+                JDFilter filterAPI = new JDFilter();
+                filterAPI.setKeyword(SearchFilterUtil.filterSearchContent(key));
+                filterAPI.setPageIndex(page);
+                filterAPI.setPageSize(Constant.PAGE_SIZE);
+
+                if (order != null) {
+                    int sort = order.intValue();
+                    switch (sort) {
+                        case 1: // 閿�閲� desc
+                            filterAPI.setSort(JDFilter.SORT_DESC);
+                            filterAPI.setSortName(JDFilter.SORTNAME_ORDER_COUNT_30DAYS);
+                            break;
+                        case 2: // 浠锋牸鈥攄esc
+                            filterAPI.setSort(JDFilter.SORT_DESC);
+                            filterAPI.setSortName(JDFilter.SORTNAME_PRICE);
+                            break;
+                        case 3: // 浠锋牸鈥攁sc
+                            filterAPI.setSort(JDFilter.SORT_ASC);
+                            filterAPI.setSortName(JDFilter.SORTNAME_PRICE);
+                            break;
+                        case 4: // 杩斿埄姣斺�擠ESC
+                            filterAPI.setSort(JDFilter.SORT_DESC);
+                            filterAPI.setSortName(JDFilter.SORTNAME_COMMISSION_SHARE);
+                            break;
+                        default:
+                            break;
+                    }
+                }
+
+                if (!StringUtil.isNullOrEmpty(filter)) {
+                    JSONObject jsonfilter = JSONObject.fromObject(filter);
+                    Boolean coupon = jsonfilter.optBoolean("coupon");
+                    if (coupon != null && coupon) {
+                        hasCoupon = true;
+                        filterAPI.setIsCoupon(1); // 鏈夊埜
+                    }
+
+                    Boolean zy = jsonfilter.optBoolean("zy");
+                    if (zy != null && zy) {
+                        filterAPI.setOwner("g"); // 鑷惀
+                    }
+
+                    String minPrice = jsonfilter.optString("minPrice");
+                    if (!StringUtil.isNullOrEmpty(minPrice)) {
+                        filterAPI.setPricefrom(Double.parseDouble(minPrice));
+                    }
+
+                    String maxPrice = jsonfilter.optString("maxPrice");
+                    if (!StringUtil.isNullOrEmpty(maxPrice)) {
+                        filterAPI.setPriceto(Double.parseDouble(maxPrice));
+                    }
+                }
+
+                result = JDApiUtil.queryByKey(filterAPI);
+            } else {
+                // 缃戦〉鐖彇
+                JDSearchFilter jdfilter = new JDSearchFilter();
+                jdfilter.setKey(SearchFilterUtil.filterSearchContent(key));
+                jdfilter.setPageNo(page);
+                jdfilter.setPageSize(Constant.PAGE_SIZE);
+
+                if (order != null) {
+                    int sort = order.intValue();
+                    switch (sort) {
+                        case 1: // 閿�閲� desc
+                            jdfilter.setSort(JDSearchFilter.SORT_DESC);
+                            jdfilter.setSortName(JDSearchFilter.SORTNAME_ORDER_COUNT_30DAYS);
+                            break;
+                        case 2: // 浠锋牸鈥攄esc
+                            jdfilter.setSort(JDSearchFilter.SORT_DESC);
+                            jdfilter.setSortName(JDSearchFilter.SORTNAME_PRICE);
+                            break;
+                        case 3: // 浠锋牸鈥攁sc
+                            jdfilter.setSort(JDSearchFilter.SORT_ASC);
+                            jdfilter.setSortName(JDSearchFilter.SORTNAME_PRICE);
+                            break;
+                        case 4: // 杩斿埄姣斺�擠ESC
+                            jdfilter.setSort(JDSearchFilter.SORT_DESC);
+                            jdfilter.setSortName(JDSearchFilter.SORTNAME_COMMISSION_SHARE);
+                            break;
+                        default:
+                            break;
+                    }
+                }
+
+                if (!StringUtil.isNullOrEmpty(filter)) {
+                    JSONObject jsonfilter = JSONObject.fromObject(filter);
+                    Boolean coupon = jsonfilter.optBoolean("coupon");
+                    if (coupon != null && coupon) {
+                        hasCoupon = true;
+                        jdfilter.setHasCoupon(1); // 鏈夊埜
+                    }
+
+                    Boolean zy = jsonfilter.optBoolean("zy");
+                    if (zy != null && zy) {
+                        jdfilter.setIsZY(1); // 鑷惀
+                    }
+
+                    Boolean delivery = jsonfilter.optBoolean("delivery");
+                    if (delivery != null && delivery) {
+                        jdfilter.setDeliveryType(1); // 浜笢閰嶉��
+                    }
+
+                    String minPrice = jsonfilter.optString("minPrice");
+                    if (!StringUtil.isNullOrEmpty(minPrice)) {
+                        if (minPrice.contains(".")) {
+                            minPrice = minPrice.replace(".", "-");
+                            minPrice = minPrice.split("-")[0];
+                        }
+                        jdfilter.setFromPrice(Integer.parseInt(minPrice));
+                    }
+
+                    String maxPrice = jsonfilter.optString("maxPrice");
+                    if (!StringUtil.isNullOrEmpty(maxPrice)) {
+                        if (maxPrice.contains(".")) {
+                            maxPrice = maxPrice.replace(".", "-");
+                            maxPrice = maxPrice.split("-")[0];
+                        }
+                        jdfilter.setToPrice(Integer.parseInt(maxPrice));
+                    }
+                }
+                result = JDUtil.searchByKey(jdfilter);
+            }
+
+            if (result != null) {
+                PageEntity pageEntity = result.getPageEntity();
+                if (pageEntity != null) {
+                    count = pageEntity.getTotalCount();
+                }
+
+                goodsList = result.getGoodsList();
+            }
+        }
+
         JSONObject data = new JSONObject();
         JSONArray array = new JSONArray();
-        if (result != null) {
-            PageEntity pageEntity = result.getPageEntity();
-            if (pageEntity != null) {
-                count = pageEntity.getTotalCount();
-            }
 
-            List<JDGoods> goodsList = result.getGoodsList();
-            if (goodsList != null && goodsList.size() > 0) {
-                Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
-                        .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
-                ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(),
-                        acceptData.getVersion(), acceptData.getSystem());
-                for (JDGoods goods : goodsList) {
-                    GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertJDGoods(goods, paramsDTO);
-                    if (hasCoupon) {
-                        if (goodsDetailVO.isHasCoupon()) {
-                            array.add(gson.toJson(goodsDetailVO));
-                        }
-                    } else {
-                        array.add(gson.toJson(goodsDetailVO));
+        if (goodsList != null && goodsList.size() > 0) {
+            Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
+                    .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
+            GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(),
+                    acceptData.getVersion(), acceptData.getSystem());
+
+
+            List<GoodsDetailVO> voList = goodsLijinMnager.loadOtherMoneyInfo(acceptData.getSystem(), uid, goodsList, paramsDTO);
+
+            for (GoodsDetailVO vo : voList) {
+                if (hasCoupon) {
+                    if (vo.isHasCoupon()) {
+                        array.add(gson.toJson(vo));
                     }
+                } else {
+                    array.add(gson.toJson(vo));
                 }
             }
         }
+
 
         data.put("result", array);
         data.put("count", count);
@@ -940,70 +1217,119 @@
      */
     private void searchPDDGoods(AcceptData acceptData, Long uid, String key, Integer page, String filter, Integer order,
                                 AppPageNotification ap, PrintWriter out) {
-        PDDSearchFilter pddfilter = new PDDSearchFilter();
-        pddfilter.setKw(SearchFilterUtil.filterSearchContent(key));
-        pddfilter.setPage(page);
-        pddfilter.setPageSize(Constant.PAGE_SIZE);
-
-        if (order != null) {
-            int sort = order.intValue();
-            switch (sort) {
-                case 1: // 閿�閲� desc
-                    pddfilter.setSortType(6);
-                    break;
-                case 2: // 浠锋牸鈥攄esc
-                    pddfilter.setSortType(4);
-                    break;
-                case 3: // 浠锋牸鈥攁sc
-                    pddfilter.setSortType(3);
-                    break;
-                case 4: // 杩斿埄姣斺�攄esc
-                    pddfilter.setSortType(2);
-                    break;
-                default: // 缁煎悎鎺掑簭
-                    pddfilter.setSortType(0);
-                    break;
+        String goodsId = null;
+        if (page == 1) {
+            List<String> linkList = HttpUtil.getUrlListFromText(key);
+            if (linkList != null && linkList.size() > 0) {
+                String pddGoodsId = PinDuoDuoUtil.getPDDGoodsId(linkList.get(0));
+                if (!StringUtil.isNullOrEmpty(pddGoodsId)) {
+                    goodsId = pddGoodsId;
+                }
             }
         }
-
-        if (!StringUtil.isNullOrEmpty(filter)) {
-            JSONObject jsonfilter = JSONObject.fromObject(filter);
-            Boolean coupon = jsonfilter.optBoolean("coupon");
-            if (coupon != null && coupon) {
-                pddfilter.setHasCoupon(true); // 鏈夊埜
-            }
-
-            Boolean brand = jsonfilter.optBoolean("brand");
-            if (brand != null && brand) {
-                pddfilter.setIsBrand(true); // 鏄惁鏄搧鐗�
-            }
-        }
-
         int count = 0;
-        JSONObject data = new JSONObject();
-        JSONArray array = new JSONArray();
-        String customParams = Constant.PDD_SEARCH_CUSTOMER_PARAMS;
+        List<PDDGoodsDetail> goodsList = new ArrayList<>();
 
+        String customParams = Constant.PDD_SEARCH_CUSTOMER_PARAMS;
         if (uid != null) {
             String cp = pddAuthService.getFanliCustomParams(uid);
-            if (PinDuoDuoApiUtil.isAuth(PinDuoDuoApiUtil.PID_FANLI, cp)) {
+            if (PinDuoDuoApiUtil.isAuth(pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_PDD, SystemPIDInfo.PidType.fanli), cp)) {
                 customParams = cp;
             }
         }
 
-        PDDGoodsResult result = PinDuoDuoApiUtil.searchGoods(pddfilter, customParams);
-        if (result != null) {
-            count = result.getTotalCount();
-            Gson gson = JsonUtil.getApiCommonGson();
-            List<PDDGoodsDetail> goodsList = result.getGoodsList();
-            if (goodsList != null && goodsList.size() > 0) {
-                ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(),
-                        acceptData.getVersion(), acceptData.getSystem());
-
-                for (PDDGoodsDetail goods : goodsList) {
-                    GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertPDDGoods(goods, paramsDTO);
-                    array.add(gson.toJson(goodsDetailVO));
+        if (goodsId != null) {
+            try {
+                PDDGoodsDetail pddGoodsDetail = PinDuoDuoApiUtil.getGoodsDetail(goodsId, PinDuoDuoApiUtil.PID_DEFAULT, customParams);
+                if (pddGoodsDetail != null) {
+                    count = 1;
+                    goodsList.add(pddGoodsDetail);
                 }
+            } catch (PDDApiException e) {
+                e.printStackTrace();
+                if (e.getCode() == PDDApiException.CODE_NOT_AUTH) {
+                    try {
+                        PDDGoodsDetail pddGoodsDetail = PinDuoDuoApiUtil.getGoodsDetail(goodsId, PinDuoDuoApiUtil.PID_DEFAULT, Constant.PDD_SEARCH_CUSTOMER_PARAMS);
+                        if (pddGoodsDetail != null) {
+                            count = 1;
+                            goodsList.add(pddGoodsDetail);
+                        }
+                    } catch (Exception e1) {
+
+                    }
+                }
+            }
+        } else {
+            PDDSearchFilter pddfilter = new PDDSearchFilter();
+            pddfilter.setKw(SearchFilterUtil.filterSearchContent(key));
+            pddfilter.setPage(page);
+            pddfilter.setPageSize(Constant.PAGE_SIZE);
+
+            if (order != null) {
+                int sort = order.intValue();
+                switch (sort) {
+                    case 1: // 閿�閲� desc
+                        pddfilter.setSortType(6);
+                        break;
+                    case 2: // 浠锋牸鈥攄esc
+                        pddfilter.setSortType(4);
+                        break;
+                    case 3: // 浠锋牸鈥攁sc
+                        pddfilter.setSortType(3);
+                        break;
+                    case 4: // 杩斿埄姣斺�攄esc
+                        pddfilter.setSortType(2);
+                        break;
+                    default: // 缁煎悎鎺掑簭
+                        pddfilter.setSortType(0);
+                        break;
+                }
+            }
+
+            if (!StringUtil.isNullOrEmpty(filter)) {
+                JSONObject jsonfilter = JSONObject.fromObject(filter);
+                Boolean coupon = jsonfilter.optBoolean("coupon");
+                if (coupon != null && coupon) {
+                    pddfilter.setHasCoupon(true); // 鏈夊埜
+                }
+
+                Boolean brand = jsonfilter.optBoolean("brand");
+                if (brand != null && brand) {
+                    pddfilter.setIsBrand(true); // 鏄惁鏄搧鐗�
+                }
+            }
+
+
+            PDDGoodsResult result = null;
+            try {
+                result = PinDuoDuoApiUtil.searchGoods(pddfilter, customParams);
+            } catch (PDDApiException e) {
+                e.printStackTrace();
+                if (e.getCode() == PDDApiException.CODE_NOT_AUTH) {
+                    try {
+                        result = PinDuoDuoApiUtil.searchGoods(pddfilter, Constant.PDD_SEARCH_CUSTOMER_PARAMS);
+                    } catch (PDDApiException e1) {
+                        e1.printStackTrace();
+                    }
+                }
+            }
+
+            if (result != null) {
+                count = result.getTotalCount();
+                goodsList = result.getGoodsList();
+            }
+
+        }
+
+        JSONObject data = new JSONObject();
+        JSONArray array = new JSONArray();
+        Gson gson = JsonUtil.getApiCommonGson();
+        if (goodsList != null && goodsList.size() > 0) {
+            GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(),
+                    acceptData.getVersion(), acceptData.getSystem());
+            List<GoodsDetailVO> voList = goodsLijinMnager.loadOtherMoneyInfo(acceptData.getSystem(), uid, goodsList, paramsDTO);
+            for (GoodsDetailVO goodsDetailVO : voList) {
+                array.add(gson.toJson(goodsDetailVO));
             }
         }
 
@@ -1013,7 +1339,7 @@
     }
 
     /**
-     * 鎼滅储鍞搧浼氬晢鍝�
+     * 鎼滅储鎶栭煶鍟嗗搧
      *
      * @param acceptData
      * @param key
@@ -1025,63 +1351,188 @@
      * @Title: searchVIPGoods
      * @Description:
      */
-    private void searchVIPGoods(AcceptData acceptData, String key, Integer page, String filter, Integer order,
-                                AppPageNotification ap, PrintWriter out) {
-        VIPSearchFilter searchFilter = new VIPSearchFilter();
-        searchFilter.setKeyword(key);
-        searchFilter.setPage(page);
-        searchFilter.setPageSize(Constant.PAGE_SIZE);
-
-        if (order != null) {
-            int sort = order.intValue();
-            switch (sort) {
-                case 2: // 浠锋牸鈥攄esc
-                    searchFilter.setFieldName("price");
-                    searchFilter.setOrder(1);
-                    break;
-                case 3: // 浠锋牸鈥攁sc
-                    searchFilter.setFieldName("price");
-                    searchFilter.setOrder(0);
-                    break;
-                case 5: // 鎶樻墸鈥攁ec
-                    searchFilter.setFieldName("discount");
-                    searchFilter.setOrder(0);
-                    break;
-                default: // 缁煎悎鎺掑簭
-                    break;
+    private void searchDYGoods(AcceptData acceptData, Long uid, String key, Integer page, String filter, Integer order,
+                               AppPageNotification ap, PrintWriter out) {
+        String goodsId = null;
+        if (page == 1) {
+            List<String> linkList = HttpUtil.getUrlListFromText(key);
+            if (linkList != null && linkList.size() > 0) {
+                String productId = DYUtil.parseProdectIdFromLink(linkList.get(0));
+                if (!StringUtil.isNullOrEmpty(productId)) {
+                    goodsId = productId;
+                }
             }
         }
 
-        if (!StringUtil.isNullOrEmpty(filter)) {
-            JSONObject jsonfilter = JSONObject.fromObject(filter);
-            String minPrice = jsonfilter.optString("minPrice");
-            if (!StringUtil.isNullOrEmpty(minPrice)) {
-                searchFilter.setPriceStart(minPrice);
+
+        long count = 0;
+        List<BaseGoodsInfo> goodsList = new ArrayList<>();
+        if (goodsId != null) {
+            DYGoodsDetail goodsInfo = CSJCPSApiUtil.goodsDetail(Long.parseLong(goodsId));
+            if (goodsInfo != null) {
+                goodsList.add(goodsInfo);
+                count = 1;
+            }
+        } else {
+            DYGoodsSearchFilter searchFilter = new DYGoodsSearchFilter();
+            searchFilter.setTitle(key);
+            searchFilter.setPage(page);
+            searchFilter.setPageSize(Constant.PAGE_SIZE);
+
+            if (order != null) {
+                int sort = order.intValue();
+                switch (sort) {
+                    case 1: // 閿�閲� desc
+                        searchFilter.setSearch_type(1);
+                        searchFilter.setOrder_type(1);
+                        break;
+                    case 2: // 浠锋牸鈥攄esc
+                        searchFilter.setSearch_type(2);
+                        searchFilter.setOrder_type(1);
+                        break;
+                    case 3: // 浠锋牸鈥攁sc
+                        searchFilter.setSearch_type(2);
+                        searchFilter.setOrder_type(0);
+                        break;
+                    case 4: // 杩斿埄姣�
+                        searchFilter.setSearch_type(4);
+                        searchFilter.setOrder_type(1);
+                        break;
+                    default: // 缁煎悎鎺掑簭
+                        searchFilter.setSearch_type(0);
+                        searchFilter.setOrder_type(0);
+                        break;
+                }
             }
 
-            String maxPrice = jsonfilter.optString("maxPrice");
-            if (!StringUtil.isNullOrEmpty(maxPrice)) {
-                searchFilter.setPriceEnd(maxPrice);
+            if (!StringUtil.isNullOrEmpty(filter)) {
+                JSONObject jsonfilter = JSONObject.fromObject(filter);
+                String minPrice = jsonfilter.optString("minPrice");
+                if (!StringUtil.isNullOrEmpty(minPrice)) {
+                    searchFilter.setPrice_min(new BigDecimal(minPrice).min(new BigDecimal(100)).intValue());
+                }
+
+                String maxPrice = jsonfilter.optString("maxPrice");
+                if (!StringUtil.isNullOrEmpty(maxPrice)) {
+                    searchFilter.setPrice_max(new BigDecimal(maxPrice).min(new BigDecimal(100)).intValue());
+                }
+            }
+
+
+            ListResult result = CSJCPSApiUtil.searchGoods(searchFilter);
+            if (result != null) {
+                count = result.getCount();
+                List<Object> tempList = result.getDataList();
+                if (tempList != null) {
+                    for (Object o : tempList) {
+                        goodsList.add((DYGoods) o);
+                    }
+                }
+
             }
         }
 
-        int count = 0;
         JSONObject data = new JSONObject();
         JSONArray array = new JSONArray();
 
-        VIPSearchResult result = VipShopApiUtil.search(searchFilter);
-        if (result != null) {
-            count = result.getTotal();
+        if (goodsList != null && goodsList.size() > 0) {
             Gson gson = JsonUtil.getApiCommonGson();
-            List<VIPGoodsInfo> goodsList = result.getGoodsList();
-            if (goodsList != null && goodsList.size() > 0) {
-                ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(),
-                        acceptData.getVersion(), acceptData.getSystem());
+            GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(),
+                    acceptData.getVersion(), acceptData.getSystem());
 
-                for (VIPGoodsInfo goods : goodsList) {
-                    GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertVIPGoods(goods, paramsDTO);
-                    array.add(gson.toJson(goodsDetailVO));
+            List<GoodsDetailVO> voList = goodsLijinMnager.loadOtherMoneyInfo(acceptData.getSystem(), uid, goodsList, paramsDTO);
+            for (GoodsDetailVO goodsDetailVO : voList) {
+                array.add(gson.toJson(goodsDetailVO));
+            }
+        }
+
+        data.put("result", array);
+        data.put("count", count);
+        out.print(JsonUtil.loadTrueResult(buildSearchResult(data, ap)));
+    }
+
+
+    private void searchVIPGoods(AcceptData acceptData, Long uid, String key, Integer page, String filter, Integer order,
+                                AppPageNotification ap, PrintWriter out) {
+        String goodsId = null;
+        if (page == 1) {
+            List<String> linkList = HttpUtil.getUrlListFromText(key);
+            if (linkList != null && linkList.size() > 0) {
+                String vipId = VipShopUtil.parseGoodsIdByUrl(linkList.get(0));
+                if (!StringUtil.isNullOrEmpty(vipId)) {
+                    goodsId = vipId;
                 }
+            }
+        }
+
+
+        long count = 0;
+        List<VIPGoodsInfo> goodsList = new ArrayList<>();
+        if (goodsId != null) {
+            VIPGoodsInfo goodsInfo = VipShopApiUtil.getGoodsDetail(goodsId);
+            if (goodsInfo != null) {
+                goodsList.add(goodsInfo);
+                count = 1;
+            }
+        } else {
+            VIPSearchFilter searchFilter = new VIPSearchFilter();
+            searchFilter.setKeyword(key);
+            searchFilter.setPage(page);
+            searchFilter.setPageSize(Constant.PAGE_SIZE);
+
+            if (order != null) {
+                int sort = order.intValue();
+                switch (sort) {
+                    case 2: // 浠锋牸鈥攄esc
+                        searchFilter.setFieldName("price");
+                        searchFilter.setOrder(1);
+                        break;
+                    case 3: // 浠锋牸鈥攁sc
+                        searchFilter.setFieldName("price");
+                        searchFilter.setOrder(0);
+                        break;
+                    case 5: // 鎶樻墸鈥攁ec
+                        searchFilter.setFieldName("discount");
+                        searchFilter.setOrder(0);
+                        break;
+                    default: // 缁煎悎鎺掑簭
+                        break;
+                }
+            }
+
+            if (!StringUtil.isNullOrEmpty(filter)) {
+                JSONObject jsonfilter = JSONObject.fromObject(filter);
+                String minPrice = jsonfilter.optString("minPrice");
+                if (!StringUtil.isNullOrEmpty(minPrice)) {
+                    searchFilter.setPriceStart(minPrice);
+                }
+
+                String maxPrice = jsonfilter.optString("maxPrice");
+                if (!StringUtil.isNullOrEmpty(maxPrice)) {
+                    searchFilter.setPriceEnd(maxPrice);
+                }
+            }
+
+
+            VIPSearchResult result = VipShopApiUtil.search(searchFilter);
+            if (result != null) {
+                count = result.getTotal();
+
+                goodsList = result.getGoodsList();
+            }
+        }
+
+        JSONObject data = new JSONObject();
+        JSONArray array = new JSONArray();
+
+        if (goodsList != null && goodsList.size() > 0) {
+            Gson gson = JsonUtil.getApiCommonGson();
+            GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(),
+                    acceptData.getVersion(), acceptData.getSystem());
+
+            List<GoodsDetailVO> voList = goodsLijinMnager.loadOtherMoneyInfo(acceptData.getSystem(), uid, goodsList, paramsDTO);
+            for (GoodsDetailVO goodsDetailVO : voList) {
+                array.add(gson.toJson(goodsDetailVO));
             }
         }
 
@@ -1103,71 +1554,100 @@
      * @Title: searchVIPGoods
      * @Description:
      */
-    private void searchSuningGoods(AcceptData acceptData, String key, Integer page, String filter, Integer order,
+    private void searchSuningGoods(AcceptData acceptData, Long uid, String key, Integer page, String filter, Integer order,
                                    AppPageNotification ap, PrintWriter out) {
-        SuningQueryModel searchFilter = new SuningQueryModel();
-        searchFilter.setKeyword(key);
-        searchFilter.setPageIndex(page);
-        searchFilter.setSize(10);
 
-        if (order != null) {
-            if (order == 1) { // 閿�閲忛珮鍒颁綆
-                searchFilter.setSortType(2);
-            } else if (order == 2) { // 浠锋牸楂樺埌浣�
-                searchFilter.setSortType(3);
-            } else if (order == 3) { // 浠锋牸浣庡埌楂�
-                searchFilter.setSortType(4);
-            } else if (order == 4) { // 杩斿埄姣旈珮鍒颁綆
-                searchFilter.setSortType(5);
+        String goodsId = null;
+        if (page == 1) {
+            List<String> linkList = HttpUtil.getUrlListFromText(key);
+            if (linkList != null && linkList.size() > 0) {
+                String suningId = SuningUtil.parseGoodsIdByUrl(linkList.get(0));
+                if (!StringUtil.isNullOrEmpty(suningId)) {
+                    goodsId = suningId;
+                }
             }
         }
 
-        if (!StringUtil.isNullOrEmpty(filter)) {
-            JSONObject jsonfilter = JSONObject.fromObject(filter);
-            Boolean coupon = jsonfilter.optBoolean("coupon");
-            if (coupon != null && coupon) {
-                searchFilter.setCoupon(1); // 鏈夊埜
+        long count = 0;
+        List<SuningGoodsInfo> goodsList = new ArrayList<>();
+        if (goodsId != null) {
+
+            String[] ids = SuningUtil.getGoodsIdDetail(goodsId);
+            if (ids != null && ids.length == 2) {
+                SuningGoodsInfo goodsInfo = SuningApiUtil.getGoodsDetail(ids[1], ids[0]);
+                if (goodsInfo != null) {
+                    goodsList.add(goodsInfo);
+                    count = 1;
+                }
+            }
+        } else {
+            SuningQueryModel searchFilter = new SuningQueryModel();
+            searchFilter.setKeyword(key);
+            searchFilter.setPageIndex(page);
+            searchFilter.setSize(10);
+
+            if (order != null) {
+                if (order == 1) { // 閿�閲忛珮鍒颁綆
+                    searchFilter.setSortType(2);
+                } else if (order == 2) { // 浠锋牸楂樺埌浣�
+                    searchFilter.setSortType(3);
+                } else if (order == 3) { // 浠锋牸浣庡埌楂�
+                    searchFilter.setSortType(4);
+                } else if (order == 4) { // 杩斿埄姣旈珮鍒颁綆
+                    searchFilter.setSortType(5);
+                }
             }
 
-            Boolean snfwservice = jsonfilter.optBoolean("snfwservice");// 鑻忓畞鏈嶅姟
-            if (snfwservice != null && snfwservice) {
-                searchFilter.setSnfwservice(1);
+            if (!StringUtil.isNullOrEmpty(filter)) {
+                JSONObject jsonfilter = JSONObject.fromObject(filter);
+                Boolean coupon = jsonfilter.optBoolean("coupon");
+                if (coupon != null && coupon) {
+                    searchFilter.setCoupon(1); // 鏈夊埜
+                }
+
+                Boolean snfwservice = jsonfilter.optBoolean("snfwservice");// 鑻忓畞鏈嶅姟
+                if (snfwservice != null && snfwservice) {
+                    searchFilter.setSnfwservice(1);
+                }
+
+                Boolean snhwg = jsonfilter.optBoolean("snhwg");// 鑻忓畞鍥介檯
+                if (snhwg != null && snhwg) {
+                    searchFilter.setSnhwg(1);
+                }
+
+                Boolean suningService = jsonfilter.optBoolean("suningService");// 鑻忓畞鑷惀
+                if (suningService != null && suningService) {
+                    searchFilter.setSuningService(1);
+                }
+
+                Boolean pgSearch = jsonfilter.optBoolean("pgSearch");// 鎷艰喘
+                if (pgSearch != null && pgSearch) {
+                    searchFilter.setPgSearch(1);
+                }
+
+                String minPrice = jsonfilter.optString("minPrice");
+                if (!StringUtil.isNullOrEmpty(minPrice)) {
+                    searchFilter.setStartPrice(minPrice);
+                }
+
+                String maxPrice = jsonfilter.optString("maxPrice");
+                if (!StringUtil.isNullOrEmpty(maxPrice)) {
+                    searchFilter.setEndPrice(maxPrice);
+                }
             }
 
-            Boolean snhwg = jsonfilter.optBoolean("snhwg");// 鑻忓畞鍥介檯
-            if (snhwg != null && snhwg) {
-                searchFilter.setSnhwg(1);
-            }
-
-            Boolean suningService = jsonfilter.optBoolean("suningService");// 鑻忓畞鑷惀
-            if (suningService != null && suningService) {
-                searchFilter.setSuningService(1);
-            }
-
-            Boolean pgSearch = jsonfilter.optBoolean("pgSearch");// 鎷艰喘
-            if (pgSearch != null && pgSearch) {
-                searchFilter.setPgSearch(1);
-            }
-
-            String minPrice = jsonfilter.optString("minPrice");
-            if (!StringUtil.isNullOrEmpty(minPrice)) {
-                searchFilter.setStartPrice(minPrice);
-            }
-
-            String maxPrice = jsonfilter.optString("maxPrice");
-            if (!StringUtil.isNullOrEmpty(maxPrice)) {
-                searchFilter.setEndPrice(maxPrice);
-            }
+            goodsList = SuningApiUtil.searchGoodsOld(searchFilter);
+            count = 1000;
         }
 
         JSONObject data = new JSONObject();
         JSONArray array = new JSONArray();
 
         List<SuningGoodsInfo> resultList = null;
-        List<SuningGoodsInfo> list = SuningApiUtil.searchGoodsOld(searchFilter);
-        if (list != null && list.size() > 0) {
+
+        if (goodsList != null && goodsList.size() > 0) {
             List<String> listId = new ArrayList<>();
-            for (SuningGoodsInfo goodsInfo : list) {
+            for (SuningGoodsInfo goodsInfo : goodsList) {
                 SuningCommodityInfo info = goodsInfo.getCommodityInfo();
                 if (info != null) {
                     listId.add(info.getCommodityCode() + "-" + info.getSupplierCode());
@@ -1179,18 +1659,18 @@
         if (resultList != null) {
             Gson gson = JsonUtil.getApiCommonGson();
             if (resultList != null && resultList.size() > 0) {
-                ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(),
+                GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(),
                         acceptData.getVersion(), acceptData.getSystem());
 
-                for (SuningGoodsInfo goods : resultList) {
-                    GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertSuningGoods(goods, paramsDTO);
+                List<GoodsDetailVO> voList = goodsLijinMnager.loadOtherMoneyInfo(acceptData.getSystem(), uid, resultList, paramsDTO);
+                for (GoodsDetailVO goodsDetailVO : voList) {
                     array.add(gson.toJson(goodsDetailVO));
                 }
             }
         }
 
         data.put("result", array);
-        data.put("count", 1000);
+        data.put("count", count);
         out.print(JsonUtil.loadTrueResult(buildSearchResult(data, ap)));
     }
 

--
Gitblit v1.8.0