From f4a0f2acc63d7785eab108419a4e16f5f688cb95 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期六, 18 一月 2020 12:06:27 +0800
Subject: [PATCH] 用户注册信息

---
 fanli/src/main/java/com/yeshi/fanli/controller/client/v2/SearchControllerV2.java | 1068 +++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 644 insertions(+), 424 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 209f9a1..656ff83 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
@@ -4,55 +4,87 @@
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.HashSet;
 import java.util.List;
-import java.util.Set;
+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.dataoke.DaTaoKeGoodsResult;
+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.system.ConfigKeyEnum;
 import com.yeshi.fanli.entity.taobao.SearchFilter;
 import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
-import com.yeshi.fanli.entity.taobao.TaoBaoSearchNav;
 import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
-import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetail;
 import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
+import com.yeshi.fanli.exception.taobao.TaoBaoTokenParseException;
+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.common.JumpDetailV2Service;
 import com.yeshi.fanli.service.inter.config.BusinessSystemService;
 import com.yeshi.fanli.service.inter.config.ConfigService;
 import com.yeshi.fanli.service.inter.config.SuperHotSearchService;
-import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
 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.taobao.dataoke.DaTaoKeGoodsDetailV2Service;
 import com.yeshi.fanli.service.inter.user.HistorySearchService;
+import com.yeshi.fanli.service.inter.user.TokenRecordService;
+import com.yeshi.fanli.service.inter.user.integral.IntegralGetService;
+import com.yeshi.fanli.service.manger.ClipboardAnalysisManager;
+import com.yeshi.fanli.service.manger.IClipboardAnalysisResult;
+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.dataoke.DaTaoKeApiUtil;
+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.common.JumpDetailContentVO;
 import com.yeshi.fanli.vo.goods.GoodsDetailVO;
+import com.yeshi.fanli.vo.msg.TokenVO;
+import com.yeshi.fanli.vo.search.GoodsDocParseResultVO;
 
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
@@ -92,8 +124,298 @@
 	private TaoBaoShopService taoBaoShopService;
 
 	@Resource
-	private DaTaoKeGoodsDetailService daTaoKeGoodsDetailService;
+	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 JDGoodsLinkParseManager jdGoodsLinkParseManager;
+
+	@Resource
+	private ClipboardAnalysisManager clipboardAnalysisManager;
+
+	@Resource
+	private JumpDetailV2Service jumpDetailV2Service;
+
+	/**
+	 * 绮樿创鏉夸俊鎭帹鑽�
+	 * 
+	 * @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;
+
+		JSONObject data = new JSONObject();
+
+		clipboardAnalysisManager.parse(acceptData.getPlatform(), acceptData.getVersion(), originalText, uid,
+				new IClipboardAnalysisResult() {
+
+					@Override
+					public void onResult(GoodsDocParseResultVO result) {
+						if (uid == null) {
+							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));
+						JSONObject convertParams = new JSONObject();
+						convertParams.put("url", configService.get(ConfigKeyEnum.convertDocWebLink.getKey()));
+						convertParams.put("clipboard", false);
+						convert.setParams(convertParams);
+
+						JumpDetailContentVO view = null;
+						JumpDetailContentVO guessLike = null;
+
+						Gson gson = JsonUtil.getApiCommonGson();
+						data.put("title", "鏅鸿兘鎼滅储");
+						
+						
+
+						int state = 0;
+						if (result.getFirstGoods() != null && result.getFirstGoods().getGoodsId() != null) {
+							state = 2;
+							data.put("stateDesc", "閫夋嫨鎼滃埜鎴栬浆閾�");
+							JSONObject params = new JSONObject();
+							params.put("id", result.getFirstGoods().getGoodsId()+"");
+							params.put("from", "杞摼");
+							if (result.getFirstGoods().getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
+								view = new JumpDetailContentVO();
+								view.setJumpDetail(
+										jumpDetailV2Service.getByTypeCache("goodsdetail", platformCode, version));
+								view.setParams(params);
+							} else if (result.getFirstGoods().getGoodsType() == Constant.SOURCE_TYPE_JD) {
+								view = new JumpDetailContentVO();
+								view.setJumpDetail(
+										jumpDetailV2Service.getByTypeCache("goodsdetail_jd", platformCode, version));
+								view.setParams(params);
+							} else if (result.getFirstGoods().getGoodsType() == Constant.SOURCE_TYPE_PDD) {
+								view = new JumpDetailContentVO();
+								view.setJumpDetail(
+										jumpDetailV2Service.getByTypeCache("goodsdetail_pdd", platformCode, version));
+								view.setParams(params);
+							}
+
+						} else if (!StringUtil.isNullOrEmpty(result.getFirstLink())) {
+							state = 2;
+							data.put("stateDesc", "閫夋嫨鎼滃埜鎴栬浆閾�");
+							view = new JumpDetailContentVO();
+							view.setJumpDetail(jumpDetailV2Service.getByTypeCache("web", platformCode, version));
+							JSONObject params = new JSONObject();
+							params.put("url", result.getFirstLink());
+							view.setParams(params);
+						} else {
+							data.put("stateDesc", "鍘昏瘯璇曡浆閾�");
+							state = 1;
+						}
+						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;
+									try {
+										goodsBrief = TaoKeApiUtil.searchGoodsDetail(goods.getGoodsId());
+									} 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);
+										data.put("goods",
+												gson.toJson(
+														GoodsDetailVOFactory.convertCommonGoods(goods,
+																hongBaoManageService.getShowComputeRate(
+																		acceptData.getPlatform(),
+																		acceptData.getVersion()))));
+										out.print(JsonUtil.loadTrueResult(data));
+										return;
+									}
+								} else {
+									Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
+											.excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd")
+											.create();
+									data.put("type", 3);
+									data.put("goods",
+											gson.toJson(
+													GoodsDetailVOFactory.convertCommonGoods(goods,
+															hongBaoManageService.getShowComputeRate(
+																	acceptData.getPlatform(),
+																	acceptData.getVersion()))));
+									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));
+					}
+				});
+	}
+
+	/**
+	 * 鍙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));
+	}
 
 	/**
 	 * 鎼滅储-鏂扮増
@@ -111,111 +433,83 @@
 	 * @param out
 	 */
 	@RequestMapping(value = "searchGoods")
-	public void searchGoods(AcceptData acceptData, String kw, int page, String filter, String order, String startprice,
-			String endprice, Double startTkRate, Double endTkRate, String fastFilter, Integer goodsType, PrintWriter out) {
+	public void searchGoods(AcceptData acceptData, Integer goodsType, String key, Integer page, String filter,
+			Integer order, Long uid, HttpSession session, PrintWriter out) {
 
-		String bid = getHistorySearchBid(acceptData);
-		
-		// 鍔犲叆鎼滅储鍘嗗彶璁板綍
-		historySearchService.addHistorySearch(kw, bid);
-
-		if (!StringUtil.isNullOrEmpty(kw) && (kw.startsWith("http://") || kw.startsWith("https://"))) {
-			JSONObject data = new JSONObject();
-			data.put("result", new JSONArray());
-			data.put("count", 0);
-			data.put("nav", new JSONArray());
-			out.print(JsonUtil.loadTrueResult(data));
+		if (goodsType == null || goodsType < 1 || goodsType > 3) {
+			out.print(JsonUtil.loadFalseResult(1, "璇蜂紶閫掓纭钩鍙板弬鏁�"));
 			return;
 		}
-		
-		if (!StringUtil.isNullOrEmpty(fastFilter)) {
-			if (!StringUtil.isNullOrEmpty(filter)) {
-				JSONArray filterArray = JSONArray.fromObject(filter);
-				JSONArray fastFilterArray = JSONArray.fromObject(fastFilter);
-				filterArray.addAll(fastFilterArray);
-				filter = filterArray.toString();
-			} else {
-				filter = fastFilter;
-			}
-		}
 
-		// 榛樿娣樺疂
-		if (goodsType == null) {
-			goodsType = Constant.SOURCE_TYPE_TAOBAO;
-		}
-		
-		// 浜笢鍟嗗搧
-		if (goodsType.intValue() == Constant.SOURCE_TYPE_JD) {
-			searchJDGoods(kw, page, filter, order, startprice, endprice, out);
+		if (page == null || page < 1) {
+			out.print(JsonUtil.loadFalseResult(1, "椤电爜涓嶈兘灏忎簬1"));
 			return;
 		}
-		
-		if (goodsType.intValue() == Constant.SOURCE_TYPE_PDD) {
-			// 鎷煎澶氬晢鍝� TODO
-			searchPDDGoods(kw, page, filter, order, startprice, endprice, out);
+
+		if (StringUtil.isNullOrEmpty(key)) {
+			out.print(JsonUtil.loadFalseResult(1, "璇疯緭鍏ユ悳绱㈠唴瀹�"));
 			return;
 		}
-		
-		
+		final String searchkey = key.trim();
 
-		// 鏄惁鏄帹鑽�
-		boolean recommend = false;
-		if (!StringUtil.isNullOrEmpty(fastFilter)) {
-			// 鏌ヨ娣樺疂澶╃尗
-			JSONArray array = JSONArray.fromObject(filter);
-			for (int i = 0; i < array.size(); i++) {
-				String ty = array.optJSONObject(i).optString("type");
-
-				if ("recommend".equalsIgnoreCase(ty)) {
-					recommend = true;
+		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);
+						}
+					});
 				}
 			}
 		}
 
-		JSONObject data = null;
-		if (!recommend) {
-			// 娣樺疂鎺ュ彛璇锋眰
-			data = searchTaoBaoGoods(kw, page, filter, order, startprice, endprice);
-		} else {
-			// 鎺ㄨ崘锛氬ぇ娣樺
-			data = searchDaTaoKeGoods(kw, page, filter, order, startprice, endprice);
+		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;
 		}
 
-		// 鑾峰彇鎺ㄨ崘璇�
-		List<String> listRecommendWords = new ArrayList<String>();
-		// 缁煎悎 鏌ヨ绗竴椤垫椂鑾峰彇鍊欓�夎瘝
-		if (page == 0) {
-			listRecommendWords = TaoBaoUtil.getSuguestSearch(kw);
-			if (listRecommendWords == null || listRecommendWords.size() == 0) {
-				listRecommendWords = new ArrayList<String>();
-			}
-
-			List<TaoBaoShopVO> listShop =taoBaoShopService.getShopByKey(kw);
-			if (listShop != null && listShop.size() > 0 && listShop.get(0).getListGoods() != null
-					&& listShop.get(0).getListGoods().size() > 2) {
-				data.put("shop", JsonUtil.getApiCommonGson().toJson(listShop.get(0)));
-			}
+		/*--------- 浜笢鍟嗗搧  -------*/
+		if (goodsType.intValue() == Constant.SOURCE_TYPE_JD) {
+			searchJDGoods(acceptData, searchkey, page, filter, order, out);
+			return;
 		}
 
-		Gson gson = new GsonBuilder().create();
-		if (data != null)
-			data.put("words", gson.toJson(listRecommendWords));
+		/*-------- 鎷煎澶氬晢鍝�  -------*/
+		if (goodsType.intValue() == Constant.SOURCE_TYPE_PDD) {
+			searchPDDGoods(acceptData, searchkey, page, filter, order, out);
+			return;
+		}
 
-		out.print(JsonUtil.loadTrueResult(data));
+		/*-------- 娣樺疂鍟嗗搧  -------*/
+		searchTaoBaoGoods(acceptData, searchkey, page, filter, order, out);
 	}
 
-	
-	private String getHistorySearchBid(AcceptData acceptData) {
-		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);
-		return StringUtil.Md5(sb.toString());
-	}
-
-	
 	/**
 	 * 鎵ц鎼滅储-鏂扮増
 	 * 
@@ -227,149 +521,59 @@
 	 * @param endprice
 	 * @return
 	 */
-	private JSONObject searchTaoBaoGoods(String kw, int page, String filter, String order, String startprice,
-			String endprice) {
+	private void searchTaoBaoGoods(AcceptData acceptData, String key, Integer page, String filter, Integer order,
+			PrintWriter out) {
 		SearchFilter sf = new SearchFilter();
-		sf.setKey(SearchFilterUtil.filterSearchContent(kw));
+		sf.setKey(SearchFilterUtil.filterSearchContent(key));
 		sf.setPage(page);
-		sf.setSort(0);
+		sf.setPageSize(Constant.PAGE_SIZE);
 
-		if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(startprice)) {
-			sf.setStartPrice(new BigDecimal(startprice));
-		}
-
-		if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(endprice)) {
-			sf.setEndPrice(new BigDecimal(endprice));
-		}
-
-		if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(order)) {
-			if (Integer.parseInt(order) == 1) {
+		if (order != null) {
+			if (order == 1) { // 閿�閲忛珮鍒颁綆
 				sf.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
-			} else if (Integer.parseInt(order) == 2) {
+			} else if (order == 2) { // 浠锋牸楂樺埌浣�
 				sf.setSort(TaoBaoUtil.SORT_PRICE_HIGH_TO_LOW);
-			} else if (Integer.parseInt(order) == 3) {
+			} else if (order == 3) { // 浠锋牸浣庡埌楂�
 				sf.setSort(TaoBaoUtil.SORT_PRICE_LOW_TO_HIGH);
-			} else if (Integer.parseInt(order) == 4) {
-				sf.setSort(TaoBaoUtil.SORT_TOTAL_SALES_HIGH_TO_LOW);
-			} else if (Integer.parseInt(order) == 5) {
+			} else if (order == 4) { // 杩斿埄姣旈珮鍒颁綆
 				sf.setSort(TaoBaoUtil.SORT_TKRATE_HIGH_TO_LOW);
-			} else if (Integer.parseInt(order) == 6) {
-				sf.setSort(TaoBaoUtil.SORT_TKRATE_LOW_TO_HIGH);
 			}
-		} else {
-			// 榛樿閿�閲忎粠楂樺埌浣庢帓搴�
-			sf.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
 		}
 
-		if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(filter)) {
-			// 鏌ヨ娣樺疂澶╃尗
-			JSONArray array = JSONArray.fromObject(filter);
-			Set<String> params = new HashSet<String>();
-			for (int i = 0; i < array.size(); i++) {
-				// [{"type":'shoptype',id:12}]
-				String ty = array.optJSONObject(i).optString("type");
-				if ("shoptype".equalsIgnoreCase(ty)) {
-					if (array.optJSONObject(i).optInt("id") == 21) {
-						sf.setTmFlagship(false); // 涓嶇瓫锟�?
-					} else {
-						sf.setTmFlagship(true);
-						sf.setTmall(true);
-						sf.setShopTag("b2c");
-					}
-				} else if ("category".equalsIgnoreCase(ty)) {
-					sf.setCateIds(array.optJSONObject(i).optString("id"));
-				} else if ("userType".equalsIgnoreCase(ty)) {
-					// if(array.optJSONObject(i).optInt("id") == 51)
-					sf.setTmall(true);
-					// else
-					// sf.setTmall(false);
-				} else if ("baoyou".equalsIgnoreCase(ty)) {
-					// if(array.optJSONObject(i).optInt("id") == 61)
-					sf.setBaoYou(true);
-					// else
-					// sf.setBaoYou(false);
-				} else if ("quantype".equalsIgnoreCase(ty)) {
-					// if (array.optJSONObject(i).optInt("id") == 31){
-					sf.setQuan(1);
-					if (sf.isTmFlagship()) {
-						sf.setShopTag(sf.getShopTag() + ",dpyhq");
-					} else {
-						sf.setShopTag("dpyhq");
-					}
-					// }
-					// else
-					// sf.setQuan(2);
-				} else if ("hongbaotype".equalsIgnoreCase(ty)) {
-					if (array.optJSONObject(i).optInt("id") == 41)// 鏈夌孩锟�?
-						sf.setHongbao(1);
-					else// 鏃犵孩锟�?
-						sf.setHongbao(2);
-				} else if ("property".equalsIgnoreCase(ty)) {
-					String pid = (String) array.optJSONObject(i).opt("pid");
-					String id = (String) array.optJSONObject(i).opt("id");
-					boolean flag = false;
-					String str = null;
-					for (String string : params) {
-						flag = string.contains(pid + ":");
-						if (flag) {
-							str = string;
-							break;
-						}
-					}
-					if (flag) {
-						params.add(str + "," + id);
-						params.remove(str);
-					} else {
-						params.add(pid + ":" + id);
-					}
-				} else if ("fahuodi".equalsIgnoreCase(ty)) {
-					int id = array.optJSONObject(i).optInt("id");
-					sf.setProvinceId(id);
-				} else if ("materialId".equalsIgnoreCase(ty)) {
-					int id = array.optJSONObject(i).optInt("id");
-					sf.setProvinceId(id);
-				} else if ("tkRate1".equalsIgnoreCase(ty)) {
-					setSearchTkRate(0, sf);
-				} else if ("tkRate2".equalsIgnoreCase(ty)) {
-					setSearchTkRate(1, sf);
-				} else if ("tkRate3".equalsIgnoreCase(ty)) {
-					setSearchTkRate(2, sf);
-				} else if ("tkRate4".equalsIgnoreCase(ty)) {
-					setSearchTkRate(3, sf);
-				} else if ("tkRate5".equalsIgnoreCase(ty)) {
-					setSearchTkRate(4, sf);
-				}
+		if (!StringUtil.isNullOrEmpty(filter)) {
+			JSONObject jsonfilter = JSONObject.fromObject(filter);
+			Boolean coupon = jsonfilter.optBoolean("coupon");
+			if (coupon != null && coupon) {
+				sf.setQuan(1); // 鏈夊埜
 			}
-			sf.setParams(params);
+
+			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(kw);
-
-		TaoBaoSearchResult result = TaoBaoUtil.search(sf);
-		if (result == null) {
-			return null;
+		List<DaTaoKeDetailV2> daTaoKeList = null;
+		if (page == 1) {
+			daTaoKeList = daTaoKeGoodsDetailV2Service.listByDtitle(key);
 		}
+
+		// 娣樺疂api鎼滅储鍟嗗搧
+		TaoBaoSearchResult result = TaoBaoUtil.search(sf);
+
 		// 鎼滅储鏄惁鍦ㄨ惀閿�涓诲晢鍝佸簱
 		if (result != null && result.getTaoBaoGoodsBriefs() != null && result.getTaoBaoGoodsBriefs().size() > 0) {
-			// 鏆傛椂鏀惧純鏇存柊鍒拌惀閿�鍟嗗搧搴�
-			// String numIds = "";
-			// for (TaoBaoGoodsBrief goods : result.getTaoBaoGoodsBriefs()) {
-			// numIds += goods.getAuctionId() + ",";
-			// }
-			// if (numIds.endsWith(","))
-			// numIds = numIds.substring(0, numIds.length() - 1);
-			// try {
-			// List<TaoBaoGoodsBrief> goodsList =
-			// TaoKeApiUtil.getBatchGoodsInfos(numIds);
-			// Map<Long, Integer> map = new HashMap<>();
-			// for (TaoBaoGoodsBrief g : goodsList)
-			// map.put(g.getAuctionId(), g.getMaterialLibType());
-			// for (TaoBaoGoodsBrief goods : result.getTaoBaoGoodsBriefs())
-			// goods.setMaterialLibType(map.get(goods.getAuctionId()));
-
 			ThreadUtil.run(new Runnable() {
 				@Override
 				public void run() {
@@ -378,141 +582,81 @@
 						taoBaoGoodsCacheUtil.saveCommonTaoBaoGoodsInfo(goods);
 				}
 			});
-			// } catch (Exception e) {
-			// e.printStackTrace();
-			// }
-
 		}
 
-		List<TaoBaoSearchNav> navList = TaoBaoUtil.getBaseNav();
-		if (result.getNavList() != null)
-			navList.addAll(result.getNavList());
-		Gson gson = new GsonBuilder().create();
-		JSONObject data = new JSONObject();
-		data.put("nav", gson.toJson(navList));
-		List<GoodsDetailVO> list = new ArrayList<GoodsDetailVO>();
-		List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
-		if (taoBaoGoodsBriefs == null)
+		List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = null;
+		if (result != null) {
+			taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
+		}
+		if (taoBaoGoodsBriefs == null) {
 			taoBaoGoodsBriefs = new ArrayList<>();
+		}
 
-		try {
-			if (daTaoKeList != null && daTaoKeList.size() > 0) {
+		if (daTaoKeList != null && daTaoKeList.size() > 0) {
+			try {
 				Collections.reverse(daTaoKeList);
-				for (DaTaoKeDetail detail : daTaoKeList) {
+				for (DaTaoKeDetailV2 detail : daTaoKeList) {
 					taoBaoGoodsBriefs.add(0, TaoBaoUtil.convert(detail));
 				}
+			} catch (Exception e) {
 			}
-		} catch (Exception e) {
 		}
 
-		int fq = sf.getQuan();
-		int fh = sf.getHongbao();
-		boolean ft = sf.isTmall();
-		BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
-		BigDecimal shareRate = hongBaoManageService.getShareRate();
-		
-		if (fq == 0 && fh == 0 && !ft) {
-			if (result != null && taoBaoGoodsBriefs != null)
-				for (TaoBaoGoodsBrief bf : taoBaoGoodsBriefs) {
-					list.add(GoodsDetailVOFactory.convertTaoBao(bf, null, fanLiRate, shareRate));
-				}
-		} else {
-			if (taoBaoGoodsBriefs != null)
-				for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) {
-					list.add(GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, null, fanLiRate, shareRate));
-				}
-		}
-		
-		Gson gson2 = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
-				.excludeFieldsWithoutExposeAnnotation().create();
-		
-		data.put("result", gson2.toJson(list));
-		data.put("count", result.getTaoBaoHead().getDocsfound());
-		return data;
-	}
+		List<GoodsDetailVO> list = new ArrayList<GoodsDetailVO>();
+		ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate(acceptData.getPlatform(),
+				acceptData.getVersion());
 
-
-	/**
-	 * 澶ф窐瀹㈠晢鍝�
-	 * @param key
-	 * @param page
-	 * @param filter
-	 * @param order
-	 * @param startprice
-	 * @param endprice
-	 * @return
-	 */
-	private JSONObject searchDaTaoKeGoods(String key, int page, String filter, String order, String startprice,
-			String endprice) {
-		page = page + 1;
-		int sort = DaTaoKeApiUtil.SORT_DEFAULT;
-		if ("5".equalsIgnoreCase(order)) {
-			sort = DaTaoKeApiUtil.SORT_COMMISSION;
-		} else if ("1".equalsIgnoreCase(order)) {
-			sort = DaTaoKeApiUtil.SORT_SALES;
-		} else if ("2".equalsIgnoreCase(order)) {
-			sort = DaTaoKeApiUtil.SORT_PRICE_HIGH_TO_LOW;
-		} else if ("3".equalsIgnoreCase(order)) {
-			sort = DaTaoKeApiUtil.SORT_PRICE_LOW_TO_HIGH;
+		for (TaoBaoGoodsBrief goods : taoBaoGoodsBriefs) {
+			list.add(GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO));
 		}
 
-		List<GoodsDetailVO> listVO = new ArrayList<GoodsDetailVO>();
-		BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
-		BigDecimal shareRate = hongBaoManageService.getShareRate();
-
-		DaTaoKeGoodsResult result = DaTaoKeApiUtil.search(key, null, null, null, page, 20, sort);
-		if (result != null && result.getGoodsList() != null)
-			for (DaTaoKeDetailV2 goods : result.getGoodsList()) {
-				listVO.add(GoodsDetailVOFactory.convertTaoBao(TaoBaoUtil.convert(goods), null, fanLiRate, shareRate));
-			}
-
-		List<TaoBaoSearchNav> navList = new ArrayList<>();
-		Gson gson = new GsonBuilder().create();
-		Gson gson2 = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
+		Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
 				.excludeFieldsWithoutExposeAnnotation().create();
 
 		JSONObject data = new JSONObject();
-		data.put("nav", gson.toJson(navList));
-		data.put("result", gson2.toJson(listVO));
-		data.put("count", result.getTotalCount());
+		data.put("result", gson.toJson(list));
+		data.put("count", result.getTaoBaoHead().getDocsfound());
 
-		return data;
-	}
-
-	/**
-	 * 璁剧疆鏌ヨ浣i噾姣斾緥鑼冨洿
-	 * 
-	 * @param i
-	 * @param sf
-	 */
-	public void setSearchTkRate(int i, SearchFilter sf) {
-		// 鑾峰彇瀵瑰簲鍙傛暟
-		String value = configService.get("tkRate_range");
-
-		if (!StringUtil.isNullOrEmpty(value)) {
-
-			JSONArray tkRatearray = JSONArray.fromObject(value);
-
-			if (tkRatearray != null) {
-
-				String start = tkRatearray.optJSONObject(i).optString("start");
-
-				if (!StringUtil.isNullOrEmpty(start)) {
-					int tkRate = (int) (Float.parseFloat(start) * 100);
-					sf.setStartTkRate(tkRate);
+		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) {
 				}
-
-				String end = tkRatearray.optJSONObject(i).optString("end");
-				if (!StringUtil.isNullOrEmpty(end)) {
-					int tkRate = (int) (Float.parseFloat(end) * 100);
-					sf.setEndTkRate(tkRate);
+				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
@@ -522,91 +666,173 @@
 	 * @param endprice
 	 * @return
 	 */
-	private void searchJDGoods(String kw, int page, String filter, String order, String startprice,
-			String endprice, PrintWriter out) {
-		JDSearchFilter jdfilter = new JDSearchFilter();
-		jdfilter.setKey(SearchFilterUtil.filterSearchContent(kw));
-		jdfilter.setPageNo(page);
-		jdfilter.setPageSize(Constant.PAGE_SIZE);
+	private void searchJDGoods(AcceptData acceptData, String key, Integer page, String filter, Integer order,
+			PrintWriter out) {
 
-		if (!StringUtil.isNullOrEmpty(startprice)) {
-			jdfilter.setFromPrice(Integer.parseInt(startprice));
-		}
+		JDSearchResult result = null;
+		boolean hasCoupon = false;
+		String way = configService.get(ConfigKeyEnum.jdApiSearchKey.getKey());
+		if ("1".equals(way)) {
+			JDFilter filterAPI = new JDFilter();
+			filterAPI.setKeyword(SearchFilterUtil.filterSearchContent(key));
+			filterAPI.setPageIndex(page);
+			filterAPI.setPageSize(Constant.PAGE_SIZE);
 
-		if (!StringUtil.isNullOrEmpty(endprice)) {
-			jdfilter.setToPrice(Integer.parseInt(endprice));
-		}
-		
-		
-		int sort = 1;
-		if (!StringUtil.isNullOrEmpty(order)) {
-			sort = Integer.parseInt(order);
-		}
-		
-		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 5: // 杩斿埄姣斺�攁sc
-				jdfilter.setSort(JDSearchFilter.SORT_DESC);
-				jdfilter.setSortName(JDSearchFilter.SORTNAME_COMMISSION_SHARE);
-				break;
-			default: // 榛樿锛氶攢閲� desc
-				jdfilter.setSort(JDSearchFilter.SORT_DESC);
-				jdfilter.setSortName(JDSearchFilter.SORTNAME_ORDER_COUNT_30DAYS);
-				break;
-		}
-
-		if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(filter)) {
-			JSONArray array = JSONArray.fromObject(filter);
-			for (int i = 0; i < array.size(); i++) {
-				String ty = array.optJSONObject(i).optString("type");
-				 if ("quantype".equalsIgnoreCase(ty)) {
-					 jdfilter.setHasCoupon(1); // 鏈夊埜
+			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();
-		JDSearchResult result = JDUtil.searchByKey(jdfilter);
 		if (result != null) {
 			PageEntity pageEntity = result.getPageEntity();
 			if (pageEntity != null) {
 				count = pageEntity.getTotalCount();
 			}
-			
+
 			List<JDGoods> goodsList = result.getGoodsList();
 			if (goodsList != null && goodsList.size() > 0) {
-				BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
-				BigDecimal shareRate = hongBaoManageService.getShareRate();
 				Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
 						.excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
-				for (JDGoods goods: goodsList) {
-					GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertJDGoods(goods, null, fanLiRate, shareRate);
-					array.add(gson.toJson(goodsDetailVO));
+				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
@@ -616,19 +842,16 @@
 	 * @param endprice
 	 * @return
 	 */
-	private void searchPDDGoods(String kw, int page, String filter, String order, String startprice,
-			String endprice, PrintWriter out) {
+	private void searchPDDGoods(AcceptData acceptData, String key, Integer page, String filter, Integer order,
+			PrintWriter out) {
 		PDDSearchFilter pddfilter = new PDDSearchFilter();
-		pddfilter.setKw(SearchFilterUtil.filterSearchContent(kw));
+		pddfilter.setKw(SearchFilterUtil.filterSearchContent(key));
 		pddfilter.setPage(page);
 		pddfilter.setPageSize(Constant.PAGE_SIZE);
 
-		int sort = 1;
-		if (!StringUtil.isNullOrEmpty(order)) {
-			sort = Integer.parseInt(order);
-		}
-		
-		switch (sort) {
+		if (order != null) {
+			int sort = order.intValue();
+			switch (sort) {
 			case 1: // 閿�閲� desc
 				pddfilter.setSortType(6);
 				break;
@@ -638,51 +861,48 @@
 			case 3: // 浠锋牸鈥攁sc
 				pddfilter.setSortType(3);
 				break;
-			case 5: // 杩斿埄姣斺�攁sc
+			case 4: // 杩斿埄姣斺�攄esc
 				pddfilter.setSortType(2);
 				break;
-			case 6: // 杩斿埄姣斺�攁sc
-				pddfilter.setSortType(1);
-				break;
-			case 20: // 缁煎悎鎺掑簭
+			default: // 缁煎悎鎺掑簭
 				pddfilter.setSortType(0);
 				break;
-			default: // 榛樿锛氶攢閲� desc
-				pddfilter.setSortType(6);
-				break;
+			}
 		}
-		
-		
-		if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(filter)) {
-			JSONArray array = JSONArray.fromObject(filter);
-			for (int i = 0; i < array.size(); i++) {
-				String ty = array.optJSONObject(i).optString("type");
-				 if ("quantype".equalsIgnoreCase(ty)) {
-					 pddfilter.setHasCoupon(true); // 鏈夊埜
-				}
+
+		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) {
-				BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
-				BigDecimal shareRate = hongBaoManageService.getShareRate();
-				Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
-						.excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
-				for (PDDGoodsDetail goods: goodsList) {
-					GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertPDDGoods(goods, null, fanLiRate, shareRate);
+				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));

--
Gitblit v1.8.0