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 | 2756 ++++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 1,677 insertions(+), 1,079 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 f8e76c2..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,1079 +1,1677 @@
-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 java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpSession;
-
-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.JsonUtil;
-import org.yeshi.utils.NumberUtil;
-import org.yeshi.utils.taobao.TbImgUtil;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.yeshi.fanli.dto.ConfigParamsDTO;
-import com.yeshi.fanli.dto.douyin.DouYinGoods;
-import com.yeshi.fanli.dto.jd.JDFilter;
-import com.yeshi.fanli.dto.jd.JDSearchFilter;
-import com.yeshi.fanli.dto.jd.JDSearchResult;
-import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
-import com.yeshi.fanli.dto.pdd.PDDGoodsResult;
-import com.yeshi.fanli.dto.pdd.PDDSearchFilter;
-import com.yeshi.fanli.entity.accept.AcceptData;
-import com.yeshi.fanli.entity.goods.CommonGoods;
-import com.yeshi.fanli.entity.jd.JDGoods;
-import com.yeshi.fanli.entity.taobao.SearchFilter;
-import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
-import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
-import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetail;
-import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
-import com.yeshi.fanli.exception.user.TokenRecordException;
-import com.yeshi.fanli.log.LogHelper;
-import com.yeshi.fanli.service.inter.brand.BrandInfoService;
-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.lable.QualityGoodsService;
-import com.yeshi.fanli.service.inter.lable.TaoKeGoodsService;
-import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
-import com.yeshi.fanli.service.inter.taobao.TaoBaoShopService;
-import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
-import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailService;
-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.manger.goods.jd.JDGoodsLinkParseManager;
-import com.yeshi.fanli.tag.PageEntity;
-import com.yeshi.fanli.util.Constant;
-import com.yeshi.fanli.util.DouYinUtil;
-import com.yeshi.fanli.util.StringUtil;
-import com.yeshi.fanli.util.ThreadUtil;
-import com.yeshi.fanli.util.Utils;
-import com.yeshi.fanli.util.VersionUtil;
-import com.yeshi.fanli.util.annotation.RequestSerializableByKey;
-import com.yeshi.fanli.util.cache.IntegralGetCacheManager;
-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.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.taobao.SearchFilterUtil;
-import com.yeshi.fanli.util.taobao.TaoBaoUtil;
-import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
-import com.yeshi.fanli.vo.brand.BrandInfoVO;
-import com.yeshi.fanli.vo.brand.TaoBaoShopVO;
-import com.yeshi.fanli.vo.goods.GoodsDetailVO;
-import com.yeshi.fanli.vo.msg.TokenVO;
-
-import net.sf.json.JSONArray;
-import net.sf.json.JSONObject;
-
-@Controller
-@RequestMapping("api/v2/search")
-public class SearchControllerV2 {
-
-	@Resource
-	private BusinessSystemService businessSystemService;
-
-	@Resource
-	private ConfigService configService;
-
-	@Resource
-	private SuperHotSearchService superHotSearchSerivce;
-
-	@Resource
-	private HistorySearchService historySearchService;
-
-	@Resource
-	private HongBaoManageService hongBaoManageService;
-
-	@Resource
-	private TaoBaoUnionConfigService taoBaoUnionConfigService;
-
-	@Resource
-	private TaoKeGoodsService taoKeGoodsService;
-
-	@Resource
-	private QualityGoodsService qualityGoodsService;
-
-	@Resource
-	private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil;
-
-	@Resource
-	private TaoBaoShopService taoBaoShopService;
-
-	@Resource
-	private DaTaoKeGoodsDetailService daTaoKeGoodsDetailService;
-
-	@Resource(name = "taskExecutor")
-	private TaskExecutor executor;
-
-	@Resource
-	private TokenRecordService tokenRecordService;
-
-	@Resource
-	private IntegralGetService integralGetService;
-
-	@Resource
-	private IntegralGetCacheManager integralGetCacheManager;
-
-	@Resource
-	private BrandInfoService brandInfoService;
-
-	@Resource
-	private JDGoodsLinkParseManager jdGoodsLinkParseManager;
-
-	/**
-	 * 绮樿创鏉夸俊鎭帹鑽�
-	 * 
-	 * @param acceptData
-	 * @param url
-	 *            鍟嗗搧閾炬帴
-	 * @param out
-	 */
-	@RequestMapping(value = "getRecommendInfo", method = RequestMethod.POST)
-	public void getRecommendInfo(AcceptData acceptData, String text, Long uid, PrintWriter out) {
-		if (StringUtil.isNullOrEmpty(text)) {
-			out.print(JsonUtil.loadFalseResult("鍊间负绌�"));
-			return;
-		}
-		// 鍘婚櫎鍓嶅悗绌烘牸
-		text = text.trim();
-		String originalText=text;
-
-		try {
-			TokenVO tokenVO = tokenRecordService.discernToken(text, uid, acceptData);
-			out.print(JsonUtil.loadTrueResult(tokenVO));
-			return;
-		} catch (TokenRecordException e) {
-			if (e.getCode() == 1001) { // 闇�瑕佺敤鎴风櫥褰�
-				out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
-				return;
-			}
-		}
-
-		TaoBaoGoodsBrief tb = null;
-		String URL_REGEX = "(((http|https)://)|(www\\.))[a-zA-Z0-9\\._-]+\\.[a-zA-Z]{2,6}(:[0-9]{1,4})?(/[a-zA-Z0-9\\&%_\\./-~-]*)?";
-
-		Pattern p = Pattern.compile(URL_REGEX);
-		Matcher matcher = p.matcher(text);
-		if (!matcher.find()) {// 涓嶅寘鍚摼鎺�
-			if (text.length() > 256) {
-				out.print(JsonUtil.loadFalseResult("鍊艰繃闀�"));
-				return;
-			}
-			String pattern = "^[A-Za-z0-9-]+$";
-			if (Pattern.matches(pattern, text.replace(" ", ""))) {// 鍒犻櫎绌烘牸
-				out.println(JsonUtil.loadFalseResult("涓嶆敮鎸佹帹鑽�"));
-				return;
-			}
-
-			LogHelper.test("鏍规嵁绮樿创鏉挎帹鑽�:" + text);
-
-			if (text.length() > 80) {
-				out.print(JsonUtil.loadFalseResult("鍊艰繃闀�"));
-				return;
-			}
-
-			if (analysisTaoToken(acceptData, text, out)) {
-				return;
-			}
-			if (!StringUtil.isNullOrEmpty(TaoBaoUtil.parseSystemTaoToken(text))) {
-				out.print(JsonUtil.loadFalseResult("涓嶆敮鎸佹帹鑽�"));
-				return;
-			}
-			JSONObject root = new JSONObject();
-			root.put("type", 2);
-			JSONObject data = new JSONObject();
-			data.put("title", text);
-			root.put("data", data);
-			out.print(JsonUtil.loadTrueResult(root));
-			return;
-		}
-
-		int type = 3;
-		CommonGoods commonGoods = null;
-		text = matcher.group();
-
-		if (text.startsWith("https://a.m.taobao.com/i"))// 娣樺疂璐﹀彿鏈櫥褰曠姸鎬�
-		{
-			text = text.substring("https://a.m.taobao.com/i".length(), text.indexOf(".htm"));
-			if (NumberUtil.isNumeric(text)) {
-				tb = TaoBaoUtil.isAlimama(text);
-			}
-		} else if (text.contains("ju.taobao.com") || text.contains(".juhuasuan.com")) {// 鑱氬垝绠�
-			int index = text.indexOf("item_id");
-			if (index < 0) {
-				out.println(JsonUtil.loadFalseResult("鏆傛湭鎵惧埌璇ュ晢鍝侊紝璇风◢鍚庡啀璇曪紒"));
-				return;
-			}
-			text = text.substring(index);
-			int last = text.indexOf("&");
-			String id = "";
-			if (last > 0)
-				id = text.substring(text.indexOf("=") + 1, text.indexOf("&"));
-			else {
-				id = text.substring(text.indexOf("=" + 1));
-			}
-			tb = TaoBaoUtil.isAlimama(id);
-			if (tb == null) {
-				type = 4;
-				tb = getTaoBaoGoodsBriefFromGoodsId(id,originalText);
-			}
-		} else if (text.contains("http://zmnxbc.com")) { // 鎵嬫満绔ぉ鐚獳PP鍒嗕韩
-			tb = TaoBaoUtil.parsePhoneShareUrlByTM(text);
-		} else if (text.contains("h5.m.taobao") || text.contains("detail.m.tmall") || text.contains("item.taobao")
-				|| text.contains("detail.tmall")) { // 鎵嬫満椤甸潰鍜岀數鑴戦〉闈�
-			Map<String, String> map = Utils.parseURL(text);
-			String id = "";
-			id = map.get("id").replace("}", "");
-			tb = TaoBaoUtil.isAlimama(id);
-			if (tb == null) {
-				type = 4;
-				tb = getTaoBaoGoodsBriefFromGoodsId(id,originalText);
-			}
-		} else if (text.contains("v.douyin.com")) { // 鎶栭煶
-			analysisDouYin(acceptData, text, out);
-			return;
-		} else {
-			tb = TaoBaoUtil.parsePhoneShareUrlByTB(text);
-
-			if (tb == null) {
-				String goodsId = TaoBaoUtil.getGoodsIdByPhoneShareUrl(text);
-				if (!StringUtil.isNullOrEmpty(goodsId)) {
-					tb = getTaoBaoGoodsBriefFromGoodsId(goodsId,originalText);
-					if (tb != null)
-						type = 4;
-				}
-			}
-
-			if (tb == null)// 娣樺疂鏄┖鍊�
-			{
-				String jdId = JDUtil.getJDGoodsId(text);
-
-				// 寰俊閾炬帴
-				if (StringUtil.isNullOrEmpty(jdId)) {
-					jdId = JDUtil.getJDGoodsIdByWeiXin(text);
-				}
-
-				// 棰嗗埜鐭繛鎺�
-				if (StringUtil.isNullOrEmpty(jdId) && text.contains("u.jd.com")) {
-					jdId = jdGoodsLinkParseManager.parseGoodsIdByJDShortUrl(text);
-				}
-
-				if (!StringUtil.isNullOrEmpty(jdId)) {
-					JDGoods goods = JDApiUtil.getGoodsDetail(Long.parseLong(jdId));
-					if (goods != null) {
-						// 楂樼骇鎺ュ彛 -- 淇℃伅鏇村畬鏁�
-						JDGoods jdGoods = JDApiUtil.queryGoodsDetail(Long.parseLong(jdId));
-						if (jdGoods != null) {
-							commonGoods = CommonGoodsFactory.create(jdGoods);
-						} else {
-							commonGoods = CommonGoodsFactory.create(goods);
-						}
-					} else {
-						type = 4;
-						goods = JDUtil.getSimpleGoodsInfo(jdId);
-						if (goods != null) {
-							commonGoods = new CommonGoods();
-							commonGoods.setTitle(goods.getSkuName());
-							commonGoods.setPicture(goods.getPicUrl());
-						}
-					}
-				} else {
-					String pddId = PinDuoDuoUtil.getPDDGoodsId(text);
-					if (!StringUtil.isNullOrEmpty(pddId)) {
-						PDDGoodsDetail goods = PinDuoDuoApiUtil.getGoodsDetail(Long.parseLong(pddId));
-						if (goods != null) {
-							commonGoods = CommonGoodsFactory.create(goods);
-						} else {
-							type = 4;
-							goods = PinDuoDuoUtil.getPDDGoodsInfo(pddId);
-							if (goods != null) {
-								commonGoods = new CommonGoods();
-								commonGoods.setTitle(goods.getGoodsName());
-								commonGoods.setPicture(goods.getGoodsThumbnailUrl());
-							}
-						}
-					}
-				}
-			}
-		}
-
-		if (tb == null && commonGoods == null) {
-			out.println(JsonUtil.loadFalseResult("鏆傛湭鎵惧埌璇ュ晢鍝侊紝璇风◢鍚庡啀璇曪紒"));
-			return;
-		}
-
-		if (type == 4) {
-			if (!VersionUtil.greaterThan_2_0_1(acceptData.getPlatform(), acceptData.getVersion())) {
-				out.println(JsonUtil.loadFalseResult("鏆傛湭鎵惧埌璇ュ晢鍝侊紝璇风◢鍚庡啀璇曪紒"));
-				return;
-			}
-
-			JSONObject data = new JSONObject();
-			if (tb != null) {
-				commonGoods = new CommonGoods();
-				commonGoods.setTitle(tb.getTitle());
-				commonGoods.setPicture(tb.getPictUrl());
-			}
-
-			if (StringUtil.isNullOrEmpty(commonGoods.getTitle())
-					|| StringUtil.isNullOrEmpty(commonGoods.getPicture())) {
-				out.println(JsonUtil.loadFalseResult("鏆傛湭鎵惧埌璇ュ晢鍝侊紝璇风◢鍚庡啀璇曪紒"));
-				return;
-			}
-
-			JSONObject goodsJSON = new JSONObject();
-			goodsJSON.put("title", commonGoods.getTitle());
-			goodsJSON.put("pictUrl", commonGoods.getPicture());
-
-			data.put("type", type);
-			data.put("desc", "璇ュ晢鍝佹棤鎺ㄥ箍淇℃伅");
-			data.put("goods", goodsJSON);
-			out.print(JsonUtil.loadTrueResult(data));
-			return;
-		}
-
-		JSONObject data = new JSONObject();
-		if (VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion())) {
-			if (tb != null) {
-				TaoBaoGoodsBrief goodsBrief = null;
-				try {
-					goodsBrief = TaoKeApiUtil.searchGoodsDetail(tb.getAuctionId());
-				} catch (TaobaoGoodsDownException e) {
-					e.printStackTrace();
-				}
-				if (goodsBrief == null) {
-					out.println(JsonUtil.loadFalseResult("鏆傛湭鎵惧埌璇ュ晢鍝侊紝璇风◢鍚庡啀璇曪紒"));
-					return;
-				}
-				commonGoods = CommonGoodsFactory.create(goodsBrief);
-			}
-
-			Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
-					.excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
-			data.put("type", type);
-			data.put("goods", gson.toJson(GoodsDetailVOFactory.convertCommonGoods(commonGoods,
-					hongBaoManageService.getShowComputeRate(acceptData.getPlatform(), acceptData.getVersion()))));
-			out.print(JsonUtil.loadTrueResult(data));
-			return;
-		}
-
-		if (tb != null) {
-			commonGoods = new CommonGoods();
-			commonGoods.setPrice(tb.getZkPrice());
-			commonGoods.setTitle(tb.getTitle());
-			commonGoods.setGoodsId(tb.getAuctionId());
-			commonGoods.setGoodsType(Constant.SOURCE_TYPE_TAOBAO);
-			commonGoods.setPicture(tb.getPictUrl());
-		}
-
-		JSONObject taoBaoGoodsJSON = new JSONObject();
-		taoBaoGoodsJSON.put("title", commonGoods.getTitle());
-		taoBaoGoodsJSON.put("zkPrice", commonGoods.getPrice() + "");
-		taoBaoGoodsJSON.put("id", commonGoods.getGoodsId());
-		taoBaoGoodsJSON.put("goodsType", commonGoods.getGoodsType());
-		if (commonGoods.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
-			taoBaoGoodsJSON.put("url", "http://item.taobao.com/item.htm?id=" + commonGoods.getGoodsId());
-		} else if (commonGoods.getGoodsType() == Constant.SOURCE_TYPE_JD) {
-			taoBaoGoodsJSON.put("url", String.format("https://item.jd.com/%s.html", commonGoods.getGoodsId() + ""));
-		} else if (commonGoods.getGoodsType() == Constant.SOURCE_TYPE_PDD) {
-			taoBaoGoodsJSON.put("url", "http://yangkeduo.com/goods.html?goods_id=" + commonGoods.getGoodsId());
-		}
-		data.put("goods", taoBaoGoodsJSON);
-		List<String> picList = new ArrayList<>();
-		picList.add(commonGoods.getPicture());
-		data.put("imgs", picList);
-		JSONObject root = new JSONObject();
-		root.put("type", 1);
-		root.put("data", data);
-		out.print(JsonUtil.loadTrueResult(root));
-	}
-
-	private TaoBaoGoodsBrief getTaoBaoGoodsBriefFromGoodsId(String goodsId, String text) {
-		TaoBaoGoodsBrief tb = TaoBaoUtil.getTmallGoodsInfo(goodsId);
-		if (tb == null && NumberUtil.isNumeric(goodsId)) {// 鏄暟瀛�
-//			tb = TaoBaoUtil.getSimpleGoodsBrief(Long.parseLong(goodsId));
-//			if (tb != null) {
-//				tb.setPictUrl(TbImgUtil.getTBSize220Img(tb.getPictUrl()));
-//			}
-			if (tb == null) {
-				tb = new TaoBaoGoodsBrief();
-				if (text.trim().indexOf("銆�") == 0 && text.trim().indexOf("銆�") > 0) {
-					// 鎴彇鏍囬
-					String title = text.trim().substring(1, text.trim().lastIndexOf("銆�"));
-					tb.setAuctionId(Long.parseLong(goodsId));
-					tb.setTitle(title);
-					tb.setPictUrl("http://");
-				}
-			}
-		}
-		return tb;
-	}
-
-	/**
-	 * 瑙f瀽鎶栭煶閾炬帴
-	 * 
-	 * @param acceptData
-	 * @param text
-	 * @param out
-	 * @return
-	 */
-	private void analysisDouYin(AcceptData acceptData, String text, PrintWriter out) {
-		String location = HttpUtil.getLocation(text);
-		if (!StringUtil.isNullOrEmpty(location)) {
-			if (location.contains("taobao.com")) { // 娣樺疂鍟嗗搧
-				String realUrl = TaoBaoUtil.getRealUrl(location);
-				if (!StringUtil.isNullOrEmpty(realUrl)) {
-					getRecommendInfo(acceptData, realUrl, null, out);
-					return;
-				}
-			} else if (location.contains("haohuo.jinritemai.com")) { // 鎶栭煶鍟嗗搧
-				DouYinGoods goods = DouYinUtil.getGoodsInfo(location);
-				JSONObject goodsJSON = new JSONObject();
-				goodsJSON.put("title", goods.getName());
-				goodsJSON.put("pictUrl", goods.getImg());
-
-				JSONObject data = new JSONObject();
-				data.put("type", 4);
-				data.put("desc", "璇ュ晢鍝佹棤鎺ㄥ箍淇℃伅");
-				data.put("goods", goodsJSON);
-				out.print(JsonUtil.loadTrueResult(data));
-				return;
-			}
-		}
-		out.println(JsonUtil.loadFalseResult("鏆傛湭鎵惧埌璇ュ晢鍝侊紝璇风◢鍚庡啀璇曪紒"));
-		return;
-	}
-
-	/**
-	 * 瑙f瀽娣樺彛浠�
-	 * 
-	 * @param acceptData
-	 * @param text
-	 * @param out
-	 * @return
-	 */
-	private boolean analysisTaoToken(AcceptData acceptData, String text, PrintWriter out) {
-		String token = StringUtil.picUpTaoToken(text);
-		if (!StringUtil.isNullOrEmpty(token)) {
-			Long auctionId = TaoKeApiUtil.tokenConvertAuctionId(token);
-			if (auctionId != null) {
-				TaoBaoGoodsBrief tb = null;
-				try {
-					tb = TaoKeApiUtil.getSimpleGoodsInfo(auctionId);
-				} catch (TaobaoGoodsDownException e) {
-					e.printStackTrace();
-				}
-
-				if (tb != null) {
-					if (VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion())) {
-						TaoBaoGoodsBrief goodsBrief = null;
-						try {
-							goodsBrief = TaoKeApiUtil.searchGoodsDetail(tb.getAuctionId());
-						} catch (TaobaoGoodsDownException e) {
-							e.printStackTrace();
-						}
-
-						if (goodsBrief == null) {
-							out.println(JsonUtil.loadFalseResult("鏆傛湭鎵惧埌璇ュ晢鍝侊紝璇风◢鍚庡啀璇曪紒"));
-							return false;
-						}
-
-						Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
-								.excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
-
-						JSONObject data = new JSONObject();
-						data.put("type", 3);
-						data.put("goods",
-								gson.toJson(GoodsDetailVOFactory.convertTaoBao(goodsBrief, hongBaoManageService
-										.getShowComputeRate(acceptData.getPlatform(), acceptData.getVersion()))));
-						out.print(JsonUtil.loadTrueResult(data));
-						return true;
-					}
-
-					JSONObject data = new JSONObject();
-					JSONObject taoBaoGoodsJSON = new JSONObject();
-					taoBaoGoodsJSON.put("title", tb.getTitle());
-					taoBaoGoodsJSON.put("zkPrice", tb.getZkPrice());
-					taoBaoGoodsJSON.put("id", tb.getAuctionId());
-					taoBaoGoodsJSON.put("goodsType", Constant.SOURCE_TYPE_TAOBAO);
-					taoBaoGoodsJSON.put("url", "http://item.taobao.com/item.htm?id=" + tb.getAuctionId());
-					data.put("goods", taoBaoGoodsJSON);
-					if (!StringUtil.isNullOrEmpty(tb.getPictUrl())) {
-						if (tb.getImgList() == null)
-							tb.setImgList(new ArrayList<>());
-						tb.getImgList().add(0, TbImgUtil.getTBSize220Img(tb.getPictUrl()));
-					}
-					data.put("imgs", tb.getImgList());
-					JSONObject root = new JSONObject();
-					root.put("type", 1);
-					root.put("data", data);
-					out.print(JsonUtil.loadTrueResult(root));
-					return true;
-				}
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * 鍙d护棰嗗彇
-	 * 
-	 * @param acceptData
-	 * @param kw
-	 * @param goodsType
-	 * @param out
-	 */
-	@RequestSerializableByKey(key = "'tokenReceive-'+#uid")
-	@RequestMapping(value = "tokenReceive", method = RequestMethod.POST)
-	public void tokenReceive(AcceptData acceptData, Long uid, String token, PrintWriter out) {
-		try {
-			String msg = tokenRecordService.receiveToken(token, uid, acceptData);
-			out.print(JsonUtil.loadTrueResult(msg));
-		} catch (TokenRecordException e) {
-			out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
-		}
-	}
-
-	/**
-	 * 鎼滅储鍊欓�夎瘝
-	 * 
-	 * @param acceptData
-	 * @param kw
-	 * @param out
-	 */
-	@RequestMapping(value = "suggestSearch", method = RequestMethod.POST)
-	public void getSugguestSearch(AcceptData acceptData, String kw, Integer goodsType, PrintWriter out) {
-		if (goodsType == null) {
-			out.print(JsonUtil.loadFalseResult("骞冲彴绫诲瀷涓嶈兘涓虹┖"));
-			return;
-		}
-
-		List<String> list = null;
-		if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
-			list = TaoBaoUtil.getSuguestSearch(kw);
-		} else if (goodsType == Constant.SOURCE_TYPE_JD) {
-			list = JDUtil.suggestSearch(kw);
-		} else if (goodsType == Constant.SOURCE_TYPE_PDD) {
-			list = PinDuoDuoUtil.suggestSearch(kw);
-		}
-
-		if (list == null || list.size() == 0) {
-			out.print(JsonUtil.loadFalseResult("鏆傛棤寤鸿鍐呭"));
-			return;
-		}
-
-		JSONArray array = new JSONArray();
-		for (String words : list) {
-			array.add(words);
-		}
-		out.print(JsonUtil.loadTrueResult(array));
-	}
-
-	/**
-	 * 鎼滅储-鏂扮増
-	 * 
-	 * @param acceptData
-	 * @param kw
-	 * @param page
-	 * @param filter
-	 * @param order
-	 *            閿�閲忕敱楂樺埌浣�:1 銆� 浠锋牸浠庨珮鍒颁綆:2 銆� 浠锋牸浠庝綆鍒伴珮:3 銆� 鎺ㄥ箍閲忛珮鍒颁綆:4锛堢患鍚堥粯璁わ級銆佽繑鍒╂瘮楂樺埌浣�:5
-	 *            銆佽繑鍒╂瘮浣庡埌楂�:6 銆佹帹鑽�20
-	 * @param startprice
-	 * @param endprice
-	 * @param fastFilter
-	 * @param out
-	 */
-	@RequestMapping(value = "searchGoods")
-	public void searchGoods(AcceptData acceptData, Integer goodsType, String key, Integer page, String filter,
-			Integer order, Long uid, HttpSession session, PrintWriter out) {
-
-		if (goodsType == null || goodsType < 1 || goodsType > 3) {
-			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();
-
-		if (uid != null) {
-			if (page == 1) {
-				integralGetCacheManager.cacheSearchGoods(acceptData.getDevice(), System.currentTimeMillis());
-			} else if (page > 1) {
-				Long lastTime = integralGetCacheManager.getLastSearchTime(acceptData.getDevice());
-				if (lastTime != null && System.currentTimeMillis() - lastTime >= 15 * 1000L) {// 瓒呰繃15s娴忚
-					integralGetCacheManager.clearSearchTime(acceptData.getDevice());
-					ThreadUtil.run(new Runnable() {
-						@Override
-						public void run() {
-							// 澧炲姞閲戝竵
-							integralGetService.addSearchResultScan(uid, key);
-						}
-					});
-				}
-			}
-		}
-
-		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);
-			}
-		});
-
-		if (searchkey.startsWith("http://") || searchkey.startsWith("https://")) {
-			JSONObject data = new JSONObject();
-			data.put("result", new JSONArray());
-			data.put("count", 0);
-			out.print(JsonUtil.loadTrueResult(data));
-			return;
-		}
-
-		/*--------- 浜笢鍟嗗搧  -------*/
-		if (goodsType.intValue() == Constant.SOURCE_TYPE_JD) {
-			searchJDGoods(acceptData, searchkey, page, filter, order, out);
-			return;
-		}
-
-		/*-------- 鎷煎澶氬晢鍝�  -------*/
-		if (goodsType.intValue() == Constant.SOURCE_TYPE_PDD) {
-			searchPDDGoods(acceptData, searchkey, page, filter, order, out);
-			return;
-		}
-
-		/*-------- 娣樺疂鍟嗗搧  -------*/
-		searchTaoBaoGoods(acceptData, searchkey, page, filter, order, out);
-	}
-
-	/**
-	 * 鎵ц鎼滅储-鏂扮増
-	 * 
-	 * @param kw
-	 * @param page
-	 * @param filter
-	 * @param order
-	 * @param startprice
-	 * @param endprice
-	 * @return
-	 */
-	private void searchTaoBaoGoods(AcceptData acceptData, String key, Integer page, String filter, Integer order,
-			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<DaTaoKeDetail> daTaoKeList = null;
-		if (page == 1) {
-			daTaoKeList = daTaoKeGoodsDetailService.listByDtitle(key);
-		}
-
-		// 娣樺疂api鎼滅储鍟嗗搧
-		TaoBaoSearchResult result = TaoBaoUtil.search(sf);
-
-		// 鎼滅储鏄惁鍦ㄨ惀閿�涓诲晢鍝佸簱
-		if (result != null && result.getTaoBaoGoodsBriefs() != null && result.getTaoBaoGoodsBriefs().size() > 0) {
-			ThreadUtil.run(new Runnable() {
-				@Override
-				public void run() {
-					// 鏇存柊鍒扮珐瀛�
-					for (TaoBaoGoodsBrief goods : result.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 (DaTaoKeDetail detail : daTaoKeList) {
-					taoBaoGoodsBriefs.add(0, TaoBaoUtil.convert(detail));
-				}
-			} catch (Exception e) {
-			}
-		}
-
-		List<GoodsDetailVO> list = new ArrayList<GoodsDetailVO>();
-		ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate(acceptData.getPlatform(),
-				acceptData.getVersion());
-
-		for (TaoBaoGoodsBrief goods : taoBaoGoodsBriefs) {
-			list.add(GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO));
-		}
-
-		Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
-				.excludeFieldsWithoutExposeAnnotation().create();
-
-		JSONObject data = new JSONObject();
-		data.put("result", gson.toJson(list));
-		data.put("count", result.getTaoBaoHead().getDocsfound());
-
-		if (page == 1) { // 绗竴椤佃繑鍥炲簵閾轰俊鎭�
-			String platform = acceptData.getPlatform();
-			String version = acceptData.getVersion();
-			if (("ios".equalsIgnoreCase(platform) && VersionUtil.greaterThan_2_0_5(platform, version))
-					|| ("android".equalsIgnoreCase(platform) && VersionUtil.greaterThan_2_0_2(platform, version))) {
-				BrandInfoVO brandInfoVO = null;
-				try {
-					brandInfoVO = brandInfoService.listByAlikeName(key, acceptData.getPlatform(),
-							acceptData.getVersion());
-				} catch (Exception e) {
-				}
-				if (brandInfoVO != null)
-					data.put("shop", JsonUtil.getApiCommonGson().toJson(brandInfoVO));
-			} else {
-				List<TaoBaoShopVO> listShop = taoBaoShopService.getShopByKeyV2(key, acceptData.getPlatform(),
-						acceptData.getVersion());
-				if (listShop != null && listShop.size() > 0 && listShop.get(0).getListGoodsVO() != null
-						&& listShop.get(0).getListGoodsVO().size() > 2) {
-					TaoBaoShopVO taoBaoShop = listShop.get(0);
-					if (("ios".equalsIgnoreCase(platform) && VersionUtil.greaterThan_2_0(platform, version))
-							|| ("android".equalsIgnoreCase(platform)
-									&& VersionUtil.greaterThan_2_0_1(platform, version))) {
-						BrandInfoVO brandInfoVO = new BrandInfoVO();
-						brandInfoVO.setId(taoBaoShop.getId());
-						brandInfoVO.setName(taoBaoShop.getShopName());
-						brandInfoVO.setIcon(taoBaoShop.getShopIcon());
-						brandInfoVO.setListGoods(taoBaoShop.getListGoodsVO());
-						data.put("shop", JsonUtil.getApiCommonGson().toJson(brandInfoVO));
-					} else {
-						data.put("shop", JsonUtil.getApiCommonGson().toJson(taoBaoShop));
-					}
-				}
-			}
-		}
-
-		out.print(JsonUtil.loadTrueResult(data));
-	}
-
-	/**
-	 * 浜笢
-	 * 
-	 * @param kw
-	 * @param page
-	 * @param filter
-	 * @param order
-	 * @param startprice
-	 * @param endprice
-	 * @return
-	 */
-	private void searchJDGoods(AcceptData acceptData, String key, Integer page, String filter, Integer order,
-			PrintWriter out) {
-
-		JDSearchResult result = null;
-		boolean hasCoupon = false;
-		String way = configService.get("jd_api_search_key");
-		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);
-
-		}
-
-		long count = 0;
-		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 = hongBaoManageService.getShowComputeRate(acceptData.getPlatform(),
-						acceptData.getVersion());
-				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));
-					}
-				}
-			}
-		}
-
-		data.put("result", array);
-		data.put("count", count);
-		out.print(JsonUtil.loadTrueResult(data));
-	}
-
-	/**
-	 * 鎷煎澶�
-	 * 
-	 * @param kw
-	 * @param page
-	 * @param filter
-	 * @param order
-	 * @param startprice
-	 * @param endprice
-	 * @return
-	 */
-	private void searchPDDGoods(AcceptData acceptData, String key, Integer page, String filter, Integer order,
-			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;
-			}
-		}
-
-		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();
-
-		PDDGoodsResult result = PinDuoDuoApiUtil.searchGoods(pddfilter);
-		if (result != null) {
-			count = result.getTotalCount();
-			Gson gson = JsonUtil.getApiCommonGson();
-			List<PDDGoodsDetail> goodsList = result.getGoodsList();
-			if (goodsList != null && goodsList.size() > 0) {
-				ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate(acceptData.getPlatform(),
-						acceptData.getVersion());
-
-				for (PDDGoodsDetail goods : goodsList) {
-					GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertPDDGoods(goods, paramsDTO);
-					array.add(gson.toJson(goodsDetailVO));
-				}
-			}
-		}
-
-		data.put("result", array);
-		data.put("count", count);
-		out.print(JsonUtil.loadTrueResult(data));
-	}
-}
+package com.yeshi.fanli.controller.client.v2;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+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;
+import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
+import com.yeshi.fanli.dto.pdd.PDDGoodsResult;
+import com.yeshi.fanli.dto.pdd.PDDSearchFilter;
+import com.yeshi.fanli.dto.suning.SuningCommodityInfo;
+import com.yeshi.fanli.dto.suning.SuningGoodsInfo;
+import com.yeshi.fanli.dto.suning.SuningQueryModel;
+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.fanli.entity.taobao.TaoBaoSearchResult;
+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.ConfigService;
+import com.yeshi.fanli.service.inter.help.AppPageNotificationService;
+import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService;
+import com.yeshi.fanli.service.inter.pdd.PDDAuthService;
+import com.yeshi.fanli.service.inter.taobao.TaoBaoShopService;
+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.PIDManager;
+import com.yeshi.fanli.util.Constant;
+import com.yeshi.fanli.util.StringUtil;
+import com.yeshi.fanli.util.ThreadUtil;
+import com.yeshi.fanli.util.VersionUtil;
+import com.yeshi.fanli.util.annotation.RequestSerializableByKey;
+import com.yeshi.fanli.util.cache.IntegralGetCacheManager;
+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;
+import com.yeshi.fanli.vo.goods.GoodsDetailVO;
+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;
+
+    @Resource
+    private HistorySearchService historySearchService;
+
+    @Resource
+    private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil;
+
+    @Resource
+    private TaoBaoShopService taoBaoShopService;
+
+    @Resource
+    private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service;
+
+    @Resource(name = "taskExecutor")
+    private TaskExecutor executor;
+
+    @Resource
+    private TokenRecordService tokenRecordService;
+
+    @Resource
+    private IntegralGetService integralGetService;
+
+    @Resource
+    private IntegralGetCacheManager integralGetCacheManager;
+
+    @Resource
+    private BrandInfoService brandInfoService;
+
+    @Resource
+    private ClipboardAnalysisManager clipboardAnalysisManager;
+
+    @Resource
+    private JumpDetailV2Service jumpDetailV2Service;
+
+    @Resource
+    private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService;
+
+    @Resource
+    private AppPageNotificationService appPageNotificationService;
+
+    @Resource
+    private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService;
+
+    @Resource
+    private PDDAuthService pddAuthService;
+
+    @Resource
+    private GoodsLijinMnager goodsLijinMnager;
+
+    @Resource
+    private PIDManager pidManager;
+
+
+    /**
+     * 绮樿创鏉夸俊鎭帹鑽�
+     *
+     * @param acceptData
+     * @param text
+     * @param uid
+     * @param out
+     */
+    @RequestMapping(value = "getRecommendInfo", method = RequestMethod.POST)
+    public void getRecommendInfo(AcceptData acceptData, String text, Long uid, PrintWriter out) {
+        if (StringUtil.isNullOrEmpty(text)) {
+            out.print(JsonUtil.loadFalseResult("鍊间负绌�"));
+            return;
+        }
+        // 鍘婚櫎鍓嶅悗绌烘牸
+        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() {
+
+                        @Override
+                        public void onResult(GoodsDocParseResultVO result) {
+                            if (uid == null || (acceptData.getSystem() == SystemEnum.yhqjx || acceptData.getSystem() == SystemEnum.hsb)) {
+                                out.print(JsonUtil.loadFalseResult("鏃犳帹鑽�"));
+                                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, acceptData.getSystem()));
+                            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, 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;
+                        }
+
+                        @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(StringUtil.isNullOrEmpty(goods.getGoodsSign()) ? goods.getGoodsId() : goods.getGoodsSign(), specialId, null);
+                                        } catch (TaobaoGoodsDownException e) {
+                                            e.printStackTrace();
+                                        }
+
+                                        if (goodsBrief != null) {
+                                            goods = CommonGoodsFactory.create(goodsBrief);
+                                            Gson gson = JsonUtil
+                                                    .getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
+                                                    .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd")
+                                                    .create();
+                                            data.put("type", 3);
+
+
+                                            GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertCommonGoods(goods,
+                                                    orderHongBaoMoneyComputeService.getShowComputeRate(
+                                                            acceptData.getPlatform(),
+                                                            acceptData.getVersion(), acceptData.getSystem()));
+
+                                            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(
+                                                        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 {
+                                    // 浣庝簬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;
+                        }
+
+                        @Override
+                        public void onResult(TokenVO tokenVO) {
+                            out.print(JsonUtil.loadTrueResult(tokenVO));
+                            return;
+                        }
+
+                        @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) {
+
+        JSONObject params = new JSONObject();
+        params.put("id", goods.getGoodsId() + "");
+        params.put("from", "鐚滀綘鍠滄");
+
+        String type = "";
+        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";
+                break;
+            case Constant.SOURCE_TYPE_PDD:
+                type = "goodsdetail_pdd";
+                break;
+            case Constant.SOURCE_TYPE_VIP:
+                type = "goodsdetail_vip";
+                break;
+            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()), acceptData.getSystem()), params);
+        data.put("left", gson.toJson(left));
+
+        // 鍘荤綉椤�
+        String rightValue = configService.getByVersion(ConfigKeyEnum.clipboardRecommendGoodsMakeMore.getKey(),
+                acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()), acceptData.getSystem());
+
+        if (StringUtil.isNullOrEmpty(rightValue)) {
+            data.remove("left");
+        } else {
+            params = new JSONObject();
+            params.put("url", rightValue);
+
+            RecommendJumpInfoVO right = new RecommendJumpInfoVO("鏈夋洿楂樿繑鍒╋紵", jumpDetailV2Service.getByTypeCache("web",
+                    Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion()), acceptData.getSystem()),
+                    params);
+            data.put("right", gson.toJson(right));
+        }
+    }
+
+    /**
+     * 鍙d护棰嗗彇
+     *
+     * @param acceptData
+     * @param uid
+     * @param token
+     * @param out
+     */
+    @RequestSerializableByKey(key = "'tokenReceive-'+#uid")
+    @RequestMapping(value = "tokenReceive", method = RequestMethod.POST)
+    public void tokenReceive(AcceptData acceptData, Long uid, String token, PrintWriter out) {
+        try {
+            String msg = tokenRecordService.receiveToken(token, uid, acceptData);
+            out.print(JsonUtil.loadTrueResult(msg));
+        } catch (TokenRecordException e) {
+            out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
+        }
+    }
+
+    /**
+     * 鎼滅储鍊欓�夎瘝
+     *
+     * @param acceptData
+     * @param kw
+     * @param out
+     */
+    @RequestMapping(value = "suggestSearch", method = RequestMethod.POST)
+    public void getSugguestSearch(AcceptData acceptData, String kw, Integer goodsType, PrintWriter out) {
+        if (goodsType == null) {
+            out.print(JsonUtil.loadFalseResult("骞冲彴绫诲瀷涓嶈兘涓虹┖"));
+            return;
+        }
+
+        List<String> list = null;
+        if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
+            list = TaoBaoUtil.getSuguestSearch(kw);
+        } else if (goodsType == Constant.SOURCE_TYPE_JD) {
+            list = JDUtil.suggestSearch(kw);
+        } else if (goodsType == Constant.SOURCE_TYPE_PDD) {
+            list = PinDuoDuoUtil.suggestSearch(kw);
+        }
+
+        if (list == null || list.size() == 0) {
+            out.print(JsonUtil.loadFalseResult("鏆傛棤寤鸿鍐呭"));
+            return;
+        }
+
+        JSONArray array = new JSONArray();
+        for (String words : list) {
+            array.add(words);
+        }
+        out.print(JsonUtil.loadTrueResult(array));
+    }
+
+    /**
+     * @param acceptData
+     * @param goodsType
+     * @param key
+     * @param page
+     * @param filter
+     * @param order      閿�閲忕敱楂樺埌浣�:1 銆� 浠锋牸浠庨珮鍒颁綆:2 銆� 浠锋牸浠庝綆鍒伴珮:3 銆� 鎺ㄥ箍閲忛珮鍒颁綆:4锛堢患鍚堥粯璁わ級銆佽繑鍒╂瘮楂樺埌浣�:5
+     *                   *                   銆佽繑鍒╂瘮浣庡埌楂�:6 銆佹帹鑽�20
+     * @param uid
+     * @param notifyType
+     * @param session
+     * @param out
+     */
+    @RequestMapping(value = "searchGoods")
+    public void searchGoods(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 > 7) {
+            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();
+
+        if (uid != null) {
+            if (page == 1) {
+                integralGetCacheManager.cacheSearchGoods(acceptData.getDevice(), System.currentTimeMillis());
+            } else if (page > 1) {
+                Long lastTime = integralGetCacheManager.getLastSearchTime(acceptData.getDevice());
+                if (lastTime != null && System.currentTimeMillis() - lastTime >= 15 * 1000L) {// 瓒呰繃15s娴忚
+                    integralGetCacheManager.clearSearchTime(acceptData.getDevice());
+                    ThreadUtil.run(new Runnable() {
+                        @Override
+                        public void run() {
+                            // 澧炲姞閲戝竵
+                            integralGetService.addSearchResultScan(uid, key);
+                        }
+                    });
+                }
+            }
+        }
+
+        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);
+            }
+        });
+
+
+        if (searchkey.startsWith("http://") || searchkey.startsWith("https://")) {
+            JSONObject data = new JSONObject();
+            data.put("result", new JSONArray());
+            data.put("count", 0);
+            out.print(JsonUtil.loadTrueResult(data));
+            return;
+        }
+        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);
+
+    }
+
+
+    @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);
+
+    }
+
+    /**
+     * 鎵ц鎼滅储-鏂扮増
+     *
+     * @param acceptData
+     * @param uid
+     * @param key
+     * @param page
+     * @param filter
+     * @param order
+     * @param ap
+     * @param out
+     */
+    private void searchTaoBaoGoods(AcceptData acceptData, Long uid, String key, Integer page, String filter, Integer order,
+                                   AppPageNotification ap, PrintWriter out) {
+        String goodsId = null;
+        //鏄惁鍖呭惈娣樺疂閾炬帴/鍙d护
+        if (page == 1) {
+            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();
+                    }
+
+
+                }
+                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<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());
+
+        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", count);
+
+        if (page == 1) { // 绗竴椤佃繑鍥炲簵閾轰俊鎭�
+            String platform = acceptData.getPlatform();
+            String version = acceptData.getVersion();
+            if (("ios".equalsIgnoreCase(platform) && VersionUtil.greaterThan_2_0_5(platform, version))
+                    || ("android".equalsIgnoreCase(platform) && VersionUtil.greaterThan_2_0_2(platform, version))) {
+                BrandInfoVO brandInfoVO = null;
+                try {
+                    brandInfoVO = brandInfoService.listByAlikeName(key, acceptData.getPlatform(),
+                            acceptData.getVersion(), acceptData.getSystem());
+                } catch (Exception e) {
+                }
+                if (brandInfoVO != null)
+                    data.put("shop", JsonUtil.getApiCommonGson().toJson(brandInfoVO));
+            } else {
+                List<TaoBaoShopVO> listShop = taoBaoShopService.getShopByKeyV2(key, acceptData.getPlatform(),
+                        acceptData.getVersion(), acceptData.getSystem());
+                if (listShop != null && listShop.size() > 0 && listShop.get(0).getListGoodsVO() != null
+                        && listShop.get(0).getListGoodsVO().size() > 2) {
+                    TaoBaoShopVO taoBaoShop = listShop.get(0);
+                    if (("ios".equalsIgnoreCase(platform) && VersionUtil.greaterThan_2_0(platform, version))
+                            || ("android".equalsIgnoreCase(platform)
+                            && VersionUtil.greaterThan_2_0_1(platform, version))) {
+                        BrandInfoVO brandInfoVO = new BrandInfoVO();
+                        brandInfoVO.setId(taoBaoShop.getId());
+                        brandInfoVO.setName(taoBaoShop.getShopName());
+                        brandInfoVO.setIcon(taoBaoShop.getShopIcon());
+                        brandInfoVO.setListGoods(taoBaoShop.getListGoodsVO());
+                        data.put("shop", JsonUtil.getApiCommonGson().toJson(brandInfoVO));
+                    } else {
+                        data.put("shop", JsonUtil.getApiCommonGson().toJson(taoBaoShop));
+                    }
+                }
+            }
+        }
+
+        out.print(JsonUtil.loadTrueResult(buildSearchResult(data, ap)));
+    }
+
+    private JSONObject buildSearchResult(JSONObject data, AppPageNotification ap) {
+        if (ap != null && data != null) {
+            Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
+            data.put("notification", gson.toJson(ap));
+        }
+        return data;
+    }
+
+    /**
+     * @param acceptData
+     * @param key
+     * @param page
+     * @param filter
+     * @param order
+     * @param ap
+     * @param out
+     */
+    private void searchJDGoods(AcceptData acceptData, Long uid, String key, Integer page, String filter, Integer order,
+                               AppPageNotification ap, PrintWriter out) {
+
+        String goodsId = null;
+        long count = 0;
+        List<JDGoods> goodsList = new ArrayList<>();
+
+        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;
+                }
+            }
+        }
+
+        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 (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);
+        out.print(JsonUtil.loadTrueResult(buildSearchResult(data, ap)));
+    }
+
+
+    /**
+     * 鎷煎澶�
+     *
+     * @param acceptData
+     * @param key
+     * @param page
+     * @param filter
+     * @param order
+     * @param ap
+     * @param out
+     */
+    private void searchPDDGoods(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 pddGoodsId = PinDuoDuoUtil.getPDDGoodsId(linkList.get(0));
+                if (!StringUtil.isNullOrEmpty(pddGoodsId)) {
+                    goodsId = pddGoodsId;
+                }
+            }
+        }
+        int count = 0;
+        List<PDDGoodsDetail> goodsList = new ArrayList<>();
+
+        String customParams = Constant.PDD_SEARCH_CUSTOMER_PARAMS;
+        if (uid != null) {
+            String cp = pddAuthService.getFanliCustomParams(uid);
+            if (PinDuoDuoApiUtil.isAuth(pidManager.getPidCache(acceptData.getSystem(), Constant.SOURCE_TYPE_PDD, SystemPIDInfo.PidType.fanli), cp)) {
+                customParams = cp;
+            }
+        }
+
+        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));
+            }
+        }
+
+        data.put("result", array);
+        data.put("count", count);
+        out.print(JsonUtil.loadTrueResult(buildSearchResult(data, ap)));
+    }
+
+    /**
+     * 鎼滅储鎶栭煶鍟嗗搧
+     *
+     * @param acceptData
+     * @param key
+     * @param page
+     * @param filter
+     * @param order
+     * @param out        void 杩斿洖绫诲瀷
+     * @throws
+     * @Title: searchVIPGoods
+     * @Description:
+     */
+    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;
+                }
+            }
+        }
+
+
+        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;
+                }
+            }
+
+            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);
+                    }
+                }
+
+            }
+        }
+
+        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));
+            }
+        }
+
+        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));
+            }
+        }
+
+        data.put("result", array);
+        data.put("count", count);
+        out.print(JsonUtil.loadTrueResult(buildSearchResult(data, ap)));
+    }
+
+    /**
+     * 鎼滅储鍞搧浼氬晢鍝�
+     *
+     * @param acceptData
+     * @param key
+     * @param page
+     * @param filter
+     * @param order
+     * @param out        void 杩斿洖绫诲瀷
+     * @throws
+     * @Title: searchVIPGoods
+     * @Description:
+     */
+    private void searchSuningGoods(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 suningId = SuningUtil.parseGoodsIdByUrl(linkList.get(0));
+                if (!StringUtil.isNullOrEmpty(suningId)) {
+                    goodsId = suningId;
+                }
+            }
+        }
+
+        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);
+                }
+            }
+
+            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);
+                }
+            }
+
+            goodsList = SuningApiUtil.searchGoodsOld(searchFilter);
+            count = 1000;
+        }
+
+        JSONObject data = new JSONObject();
+        JSONArray array = new JSONArray();
+
+        List<SuningGoodsInfo> resultList = null;
+
+        if (goodsList != null && goodsList.size() > 0) {
+            List<String> listId = new ArrayList<>();
+            for (SuningGoodsInfo goodsInfo : goodsList) {
+                SuningCommodityInfo info = goodsInfo.getCommodityInfo();
+                if (info != null) {
+                    listId.add(info.getCommodityCode() + "-" + info.getSupplierCode());
+                }
+            }
+            resultList = SuningApiUtil.getGoodsDetailList(listId);
+        }
+
+        if (resultList != null) {
+            Gson gson = JsonUtil.getApiCommonGson();
+            if (resultList != null && resultList.size() > 0) {
+                GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(),
+                        acceptData.getVersion(), acceptData.getSystem());
+
+                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", count);
+        out.print(JsonUtil.loadTrueResult(buildSearchResult(data, ap)));
+    }
+
+}

--
Gitblit v1.8.0