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/v1/SearchController.java | 1992 ++++++++++++++++++++++++++++++----------------------------
 1 files changed, 1,024 insertions(+), 968 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/SearchController.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/SearchController.java
index cb831d6..f92f37c 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/SearchController.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/SearchController.java
@@ -1,968 +1,1024 @@
-package com.yeshi.fanli.controller.client.v1;
-
-import java.io.PrintWriter;
-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 javax.annotation.Resource;
-
-import org.springframework.cache.annotation.Cacheable;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.yeshi.utils.JsonUtil;
-import org.yeshi.utils.taobao.TbImgUtil;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.yeshi.fanli.entity.accept.AcceptData;
-import com.yeshi.fanli.entity.bus.lable.QualityFactory;
-import com.yeshi.fanli.entity.bus.recommend.Honest;
-import com.yeshi.fanli.entity.bus.search.HotSearch;
-import com.yeshi.fanli.entity.bus.su.search.SuperHotSearch;
-import com.yeshi.fanli.entity.system.BusinessSystem;
-import com.yeshi.fanli.entity.taobao.PidUser;
-import com.yeshi.fanli.entity.taobao.SearchFilter;
-import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
-import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBriefExtra;
-import com.yeshi.fanli.entity.taobao.TaoBaoProvince;
-import com.yeshi.fanli.entity.taobao.TaoBaoSearchNav;
-import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
-import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig;
-import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetail;
-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.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.util.Constant;
-import com.yeshi.fanli.util.EhcacheUtil;
-import com.yeshi.fanli.util.StringUtil;
-import com.yeshi.fanli.util.ThreadUtil;
-import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil;
-import com.yeshi.fanli.util.taobao.SearchFilterUtil;
-import com.yeshi.fanli.util.taobao.TaoBaoUtil;
-
-import net.sf.ehcache.Element;
-import net.sf.json.JSONArray;
-import net.sf.json.JSONObject;
-
-@Controller
-@RequestMapping("api/v1/search")
-public class SearchController {
-
-	@Resource
-	private BusinessSystemService businessSystemService;
-
-	@Resource
-	private ConfigService configService;
-
-	@Resource
-	private SuperHotSearchService superHotSearchSerivce;
-
-	@Resource
-	private HistorySearchService historySearchService;
-
-	@Resource
-	private HongBaoManageService manageService;
-
-	@Resource
-	private TaoBaoUnionConfigService taoBaoUnionConfigService;
-
-	@Resource
-	private TaoKeGoodsService taoKeGoodsService;
-
-	@Resource
-	private QualityGoodsService qualityGoodsService;
-
-	@Resource
-	private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil;
-	
-	@Resource
-	private TaoBaoShopService taoBaoShopService;
-	
-
-	@Resource
-	private DaTaoKeGoodsDetailService daTaoKeGoodsDetailService;
-
-	@RequestMapping(value = "gethotsearch", method = RequestMethod.POST)
-	public void getHotSearch(AcceptData acceptData, PrintWriter out) {
-		BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
-				acceptData.getPackages());
-		if (system == null) {
-			out.print(JsonUtil.loadFalseResult("绯荤粺涓嶅瓨鍦�"));
-			return;
-		}
-		List<SuperHotSearch> superHotSearchList = superHotSearchSerivce
-				.getSuperHotSearchBySystemIdCache(system.getId());
-		if (superHotSearchList == null || superHotSearchList.size() == 0) {
-			out.print(JsonUtil.loadFalseResult("娌℃湁鏁版嵁"));
-			return;
-		}
-		List<HotSearch> hotSearchList = new ArrayList<HotSearch>();
-		for (SuperHotSearch superHotSearch : superHotSearchList) {
-			HotSearch hotSearch = superHotSearch.getHotSearch();
-			if (hotSearch != null)
-				hotSearchList.add(hotSearch);
-		}
-
-		JSONObject data = new JSONObject();
-		data.put("count", hotSearchList.size());
-		data.put("hotSearchList", hotSearchList);
-		String result = JsonUtil.loadTrueResult(data);
-		out.print(result);
-		return;
-	}
-
-	@RequestMapping("specialSearch")
-	public void specialSearch(AcceptData acceptData, long hid, int page, PrintWriter out) {
-		Honest honest = null;
-		if (honest == null) {
-			out.print(JsonUtil.loadFalseResult(""));
-			return;
-		}
-		String key = hid + "#" + page;
-		Element element = EhcacheUtil.getCache("temai").get(key);
-		if (element != null) {
-			String value = (String) element.getObjectValue();
-			if (value != null) {
-				out.print(value);
-				return;
-			}
-		}
-
-		List<TaoBaoUnionConfig> config = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID);
-
-		SearchFilter searchFilter = SearchFilterUtil.getSearchFilter(honest, page);
-		TaoBaoSearchResult result = TaoBaoUtil.search3(searchFilter, config.get(0));
-		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<TaoBaoGoodsBriefExtra> re = new ArrayList<TaoBaoGoodsBriefExtra>();
-		List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
-		BigDecimal proportion = manageService.getFanLiRate();
-		for (TaoBaoGoodsBrief bf : taoBaoGoodsBriefs) {
-			re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
-		}
-		Gson gson2 = JsonUtil.getApiCommonGson();
-		data.put("result", gson2.toJson(re));
-		int count = 0;
-		if (result.getTaoBaoHead() != null) {
-			count = result.getTaoBaoHead().getDocsfound();
-		}
-		data.put("count", count);
-
-		String loadTrueResult = JsonUtil.loadTrueResult(data);
-		if (count != 0) {
-			EhcacheUtil.getCache("temai").put(new Element(key, loadTrueResult));
-		}
-		out.print(loadTrueResult);
-	}
-
-	@RequestMapping(value = "search")
-	public void search(AcceptData acceptData, String kw, int page, String filter, String order, String startprice,
-			String endprice, String fastFilter, PrintWriter out) {
-		String bid = getHistorySearchBid(acceptData);
-		historySearchService.addHistorySearch(kw, bid);
-		BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
-				acceptData.getPackages());
-		if (system == null) {
-			out.print(JsonUtil.loadFalseResult("绯荤粺涓嶅瓨鍦�"));
-			return;
-		}
-
-		if (!StringUtil.isNullOrEmpty(kw) && (kw.startsWith("http://") || kw.startsWith("https://"))) {
-			out.print(JsonUtil.loadFalseResult("鏃犳硶鎼滅储閾炬帴"));
-			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;
-			}
-		}
-		JSONObject data = search(kw, page, filter, order, startprice, endprice);
-		out.print(JsonUtil.loadTrueResult(data));
-	}
-
-	@Cacheable(value = "goodsCache", key = "#md5")
-	public JSONObject searchClass(AcceptData acceptData, String kw, int page, String filter, String order,
-			String startprice, String endprice, String md5) {
-		java.lang.System.out.println("searchClass");
-		JSONObject data = search(kw, page, filter, order, startprice, endprice);
-		return data;
-	}
-
-	private JSONObject search(String kw, int page, String filter, String order, String startprice, String endprice) {
-		page = page + 1;
-
-		SearchFilter sf = new SearchFilter();
-		sf.setKey(SearchFilterUtil.filterSearchContent(kw));
-		sf.setPage(page);
-		sf.setSort(0);
-
-		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) {
-				sf.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
-			} else if (Integer.parseInt(order) == 2) {
-				sf.setSort(TaoBaoUtil.SORT_PRICE_HIGH_TO_LOW);
-			} else if (Integer.parseInt(order) == 3) {
-				sf.setSort(TaoBaoUtil.SORT_PRICE_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);
-				}
-			}
-			sf.setParams(params);
-		}
-		TaoBaoSearchResult result = TaoBaoUtil.search(sf);
-		if (result == null) {
-			return null;
-		}
-
-		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<TaoBaoGoodsBriefExtra> re = new ArrayList<TaoBaoGoodsBriefExtra>();
-		List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
-		int fq = sf.getQuan();
-		int fh = sf.getHongbao();
-		boolean ft = sf.isTmall();
-		BigDecimal proportion = manageService.getFanLiRate();
-		if (fq == 0 && fh == 0 && !ft) {
-			if (result != null && result.getTaoBaoGoodsBriefs() != null)
-				for (TaoBaoGoodsBrief bf : result.getTaoBaoGoodsBriefs()) {
-					int count = bf.getBiz30day();
-					if (count >= 10000) { // 瀵归攢閲忔暟鎹仛澶勭悊 椤甸潰灞曠ず7.3涓�
-						double sales = count;
-						String salesCountMidea = String.format("%.1f", sales / 10000);
-						bf.setSalesCount(salesCountMidea + "涓�");
-						re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
-					} else {
-						bf.setSalesCount(count + "");
-						re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
-					}
-				}
-		} else {
-			TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra;
-			if (taoBaoGoodsBriefs != null)
-				for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) {
-					int count = taoBaoGoodsBrief.getBiz30day();
-					if (count >= 10000) {
-						double sales = count;
-						String salesCountMidea = String.format("%.1f", sales / 10000);
-						taoBaoGoodsBrief.setSalesCount(salesCountMidea + "涓�");
-						taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
-								proportion.toString(), "");
-						re.add(taoBaoGoodsBriefExtra);
-					} else {
-						taoBaoGoodsBrief.setSalesCount(count + "");
-						taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
-								proportion.toString(), "");
-						re.add(taoBaoGoodsBriefExtra);
-					}
-				}
-		}
-		Gson gson2 = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
-				.excludeFieldsWithoutExposeAnnotation().create();
-		data.put("result", gson2.toJson(re));
-		data.put("count", result.getTaoBaoHead().getDocsfound());
-		return data;
-	}
-
-	@RequestMapping(value = "suggestsearch", method = RequestMethod.POST)
-	public void getSugguestSearch(AcceptData acceptData, String kw, PrintWriter out) {
-		List<String> list = TaoBaoUtil.getSuguestSearch(kw);
-		if (list != null && list.size() > 0) {
-			JSONArray array = new JSONArray();
-			for (String st : list)
-				array.add(st);
-			out.print(JsonUtil.loadTrueResult(array));
-		} else {
-			out.print(JsonUtil.loadFalseResult("鏆傛棤寤鸿鍐呭"));
-		}
-		return;
-	}
-
-	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());
-	}
-
-	/**
-	 * 鎼滅储-鏂扮増
-	 * 
-	 * @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, String kw, int page, String filter, String order, String startprice,
-			String endprice, Double startTkRate, Double endTkRate, String fastFilter, PrintWriter out) {
-
-		String bid = getHistorySearchBid(acceptData);
-
-		historySearchService.addHistorySearch(kw, bid);
-
-//		BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
-//				acceptData.getPackages());
-//		if (system == null) {
-//			out.print(JsonUtil.loadFalseResult("绯荤粺涓嶅瓨鍦�"));
-//			return;
-//		}
-
-		if (!StringUtil.isNullOrEmpty(kw) && (kw.startsWith("http://") || kw.startsWith("https://"))) {
-			out.print(JsonUtil.loadFalseResult("鏃犳硶鎼滅储閾炬帴"));
-			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;
-			}
-		}
-
-		// 鏄惁鏄帹鑽�
-		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;
-				}
-			}
-		}
-
-		JSONObject data = null;
-		if (!recommend) {
-
-			// 娣樺疂鎺ュ彛璇锋眰
-			data = searchGoods(kw, page, filter, order, startprice, endprice);
-		} else {
-			// 鎺ㄨ崘锛氱簿閫夊簱
-			data = searchQualityGoods(kw, page, filter, order, startprice, endprice);
-		}
-
-		// 鑾峰彇鎺ㄨ崘璇�
-		List<String> listRecommendWords = new ArrayList<String>();
-		// 缁煎悎 鏌ヨ绗竴椤垫椂鑾峰彇鍊欓�夎瘝
-		if (page == 0) {
-			listRecommendWords = TaoBaoUtil.getSuguestSearch(kw);
-			if (listRecommendWords == null || listRecommendWords.size() == 0) {
-				listRecommendWords = new ArrayList<String>();
-			}
-		}
-
-		Gson gson = new GsonBuilder().create();
-		if (data != null)
-			data.put("words", gson.toJson(listRecommendWords));
-
-		out.print(JsonUtil.loadTrueResult(data));
-	}
-
-	/**
-	 * 鎵ц鎼滅储-鏂扮増
-	 * 
-	 * @param kw
-	 * @param page
-	 * @param filter
-	 * @param order
-	 * @param startprice
-	 * @param endprice
-	 * @return
-	 */
-	private JSONObject searchGoods(String kw, int page, String filter, String order, String startprice,
-			String endprice) {
-		page = page + 1;
-
-		SearchFilter sf = new SearchFilter();
-		sf.setKey(SearchFilterUtil.filterSearchContent(kw));
-		sf.setPage(page);
-		sf.setSort(0);
-
-		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) {
-				sf.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
-			} else if (Integer.parseInt(order) == 2) {
-				sf.setSort(TaoBaoUtil.SORT_PRICE_HIGH_TO_LOW);
-			} else if (Integer.parseInt(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) {
-				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);
-				}
-			}
-			sf.setParams(params);
-		}
-
-		// 鎼滅储澶ф窐瀹�
-		List<DaTaoKeDetail> daTaoKeList = null;
-		if (page == 1)
-			daTaoKeList = daTaoKeGoodsDetailService.listByDtitle(kw);
-
-		TaoBaoSearchResult result = TaoBaoUtil.search(sf);
-		if (result == null) {
-			return null;
-		}
-		// 鎼滅储鏄惁鍦ㄨ惀閿�涓诲晢鍝佸簱
-		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() {
-					// 鏇存柊鍒扮珐瀛�
-					for (TaoBaoGoodsBrief goods : result.getTaoBaoGoodsBriefs())
-						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<TaoBaoGoodsBriefExtra> re = new ArrayList<TaoBaoGoodsBriefExtra>();
-		List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
-		if (taoBaoGoodsBriefs == null)
-			taoBaoGoodsBriefs = new ArrayList<>();
-
-		try {
-			if (daTaoKeList != null && daTaoKeList.size() > 0) {
-				Collections.reverse(daTaoKeList);
-				for (DaTaoKeDetail detail : daTaoKeList) {
-					taoBaoGoodsBriefs.add(0,TaoBaoUtil.convert(detail));
-				}
-			}
-		} catch (Exception e) {
-		}
-
-		int fq = sf.getQuan();
-		int fh = sf.getHongbao();
-		boolean ft = sf.isTmall();
-		BigDecimal proportion = manageService.getFanLiRate();
-		if (fq == 0 && fh == 0 && !ft) {
-			if (result != null && taoBaoGoodsBriefs != null)
-				for (TaoBaoGoodsBrief bf : taoBaoGoodsBriefs) {
-					int count = bf.getBiz30day();
-					if (count >= 10000) { // 瀵归攢閲忔暟鎹仛澶勭悊 椤甸潰灞曠ず7.3涓�
-						double sales = count;
-						String salesCountMidea = String.format("%.1f", sales / 10000);
-						bf.setSalesCount(salesCountMidea + "涓�");
-						re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
-					} else {
-						bf.setSalesCount(count + "");
-						re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
-					}
-				}
-		} else {
-			TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra;
-			if (taoBaoGoodsBriefs != null)
-				for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) {
-					int count = taoBaoGoodsBrief.getBiz30day();
-					if (count >= 10000) {
-						double sales = count;
-						String salesCountMidea = String.format("%.1f", sales / 10000);
-						taoBaoGoodsBrief.setSalesCount(salesCountMidea + "涓�");
-						taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
-								proportion.toString(), "");
-						re.add(taoBaoGoodsBriefExtra);
-					} else {
-						taoBaoGoodsBrief.setSalesCount(count + "");
-						taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
-								proportion.toString(), "");
-						re.add(taoBaoGoodsBriefExtra);
-					}
-				}
-		}
-		Gson gson2 = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
-				.excludeFieldsWithoutExposeAnnotation().create();
-		data.put("result", gson2.toJson(re));
-		data.put("count", result.getTaoBaoHead().getDocsfound());
-		return data;
-	}
-
-	/**
-	 * 鎵ц鎼滅储绮鹃�夊簱
-	 * 
-	 * @param kw
-	 * @param page
-	 * @param filter
-	 * @param order
-	 * @param startprice
-	 * @param endprice
-	 * @return
-	 */
-	private JSONObject searchQualityGoods(String key, int page, String filter, String order, String startprice,
-			String endprice) {
-
-		Integer hasQuan = null;
-		Integer userType = null;
-		Double start_Price = null;
-		Double end_Price = null;
-		Integer sort = null;
-		Double startTkRate = null;
-		Double endTkRate = null;
-
-		int provinceId = -100;
-
-		// 璧峰浠锋牸
-		if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(startprice)) {
-			start_Price = Double.parseDouble(startprice);
-		}
-		// 缁撴潫浠锋牸
-		if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(endprice)) {
-			end_Price = Double.parseDouble(endprice);
-		}
-
-		// 鎺掑簭
-		if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(order)) {
-
-			if (Integer.parseInt(order) == 4) {
-				sort = 20; // 缁煎悎鏃讹細閲囩敤榛樿鏉冮噸鎺掑簭
-			} else {
-				sort = Integer.parseInt(order);
-			}
-
-		}
-
-		/* 鍏朵粬绛涢�夋潯浠� */
-		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 ("userType".equalsIgnoreCase(ty)) {
-					userType = 1; // 澶╃尗
-				} else if ("quantype".equalsIgnoreCase(ty)) {
-					hasQuan = 1; // 鏈夊埜
-				} else if ("hongbaotype".equalsIgnoreCase(ty)) {
-
-				} else if ("fahuodi".equalsIgnoreCase(ty)) {
-					provinceId = array.optJSONObject(i).optInt("id");
-				} else if ("tkRate1".equalsIgnoreCase(ty)) {
-					// 鑾峰彇瀵瑰簲鍙傛暟
-					String value = configService.get("tkRate_range");
-					if (!StringUtil.isNullOrEmpty(value)) {
-						JSONArray tkRatearray = JSONArray.fromObject(value);
-						if (tkRatearray != null) {
-							String start = tkRatearray.optJSONObject(0).optString("start");
-							if (!StringUtil.isNullOrEmpty(start)) {
-								startTkRate = Double.parseDouble(start);
-							}
-							String end = tkRatearray.optJSONObject(0).optString("end");
-							if (!StringUtil.isNullOrEmpty(end)) {
-								endTkRate = Double.parseDouble(end);
-							}
-						}
-					}
-				} else if ("tkRate2".equalsIgnoreCase(ty)) {
-					// 鑾峰彇瀵瑰簲鍙傛暟
-					String value = configService.get("tkRate_range");
-					if (!StringUtil.isNullOrEmpty(value)) {
-						JSONArray tkRatearray = JSONArray.fromObject(value);
-						if (tkRatearray != null) {
-							String start = tkRatearray.optJSONObject(1).optString("start");
-							if (!StringUtil.isNullOrEmpty(start)) {
-								startTkRate = Double.parseDouble(start);
-							}
-							String end = tkRatearray.optJSONObject(1).optString("end");
-							if (!StringUtil.isNullOrEmpty(end)) {
-								endTkRate = Double.parseDouble(end);
-							}
-						}
-					}
-				} else if ("tkRate3".equalsIgnoreCase(ty)) {
-					// 鑾峰彇瀵瑰簲鍙傛暟
-					String value = configService.get("tkRate_range");
-					if (!StringUtil.isNullOrEmpty(value)) {
-						JSONArray tkRatearray = JSONArray.fromObject(value);
-						if (tkRatearray != null) {
-							String start = tkRatearray.optJSONObject(2).optString("start");
-							if (!StringUtil.isNullOrEmpty(start)) {
-								startTkRate = Double.parseDouble(start);
-							}
-							String end = tkRatearray.optJSONObject(2).optString("end");
-							if (!StringUtil.isNullOrEmpty(end)) {
-								endTkRate = Double.parseDouble(end);
-							}
-						}
-					}
-				} else if ("tkRate4".equalsIgnoreCase(ty)) {
-					// 鑾峰彇瀵瑰簲鍙傛暟
-					String value = configService.get("tkRate_range");
-					if (!StringUtil.isNullOrEmpty(value)) {
-						JSONArray tkRatearray = JSONArray.fromObject(value);
-						if (tkRatearray != null) {
-							String start = tkRatearray.optJSONObject(3).optString("start");
-							if (!StringUtil.isNullOrEmpty(start)) {
-								startTkRate = Double.parseDouble(start);
-							}
-							String end = tkRatearray.optJSONObject(3).optString("end");
-							if (!StringUtil.isNullOrEmpty(end)) {
-								endTkRate = Double.parseDouble(end);
-							}
-						}
-					}
-				} else if ("tkRate5".equalsIgnoreCase(ty)) {
-					// 鑾峰彇瀵瑰簲鍙傛暟
-					String value = configService.get("tkRate_range");
-					if (!StringUtil.isNullOrEmpty(value)) {
-						JSONArray tkRatearray = JSONArray.fromObject(value);
-						if (tkRatearray != null) {
-							String start = tkRatearray.optJSONObject(4).optString("start");
-							if (!StringUtil.isNullOrEmpty(start)) {
-								startTkRate = Double.parseDouble(start);
-							}
-							String end = tkRatearray.optJSONObject(4).optString("end");
-							if (!StringUtil.isNullOrEmpty(end)) {
-								endTkRate = Double.parseDouble(end);
-							}
-						}
-					}
-				}
-			}
-		}
-
-		int pageSize = Constant.PAGE_SIZE;
-
-		List<QualityFactory> listQuery = qualityGoodsService.listRecommendBykey(page * pageSize, pageSize, key, hasQuan,
-				userType, start_Price, end_Price, startTkRate, endTkRate, sort);
-
-		List<TaoBaoGoodsBriefExtra> listExtra = new ArrayList<TaoBaoGoodsBriefExtra>();
-		BigDecimal proportion = manageService.getFanLiRate();
-		/* 閬嶅巻鍒楄〃鏁版嵁 */
-		if (listQuery != null && listQuery.size() > 0) {
-			for (QualityFactory selectionGoods : listQuery) {
-
-				TaoBaoGoodsBrief taoBaoGoodsBrief = selectionGoods.getTaoBaoGoodsBrief();
-
-				if (taoBaoGoodsBrief == null) {
-					continue;
-				}
-
-				int biz30day = taoBaoGoodsBrief.getBiz30day();
-				if (biz30day >= 10000) {
-					double sales = biz30day;
-					String salesCountMidea = String.format("%.1f", sales / 10000);
-					taoBaoGoodsBrief.setSalesCount(salesCountMidea + "涓�");
-				} else {
-					taoBaoGoodsBrief.setSalesCount(biz30day + "");
-				}
-
-				// 鏀瑰彉鍥剧墖灏哄
-				String pictUrl = taoBaoGoodsBrief.getPictUrl();
-				if (!StringUtil.isNullOrEmpty(pictUrl) && !pictUrl.contains("320x320")) {
-					taoBaoGoodsBrief.setPictUrl(TbImgUtil.getTBSize320Img(pictUrl));
-				}
-
-				listExtra.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), null));
-			}
-		}
-
-		long count = qualityGoodsService.countRecommendBykey(key, hasQuan, userType, start_Price, end_Price,
-				startTkRate, endTkRate);
-
-		// 璁剧疆鍙戣揣鍦板潃
-		TaoBaoSearchNav nav = new TaoBaoSearchNav();
-		nav.setName("鍙戣揣鍦伴�夋嫨");
-		nav.setFlag("address");
-		nav.setId(11110);
-		nav.setType("fahuodi");
-
-		List<TaoBaoSearchNav> navList = new ArrayList<>();
-
-		List<TaoBaoSearchNav> childNavList = new ArrayList<>();
-		List<TaoBaoProvince> provinceList = TaoBaoUtil.getTaoBaoProvinceList();
-		for (TaoBaoProvince province : provinceList) {
-			TaoBaoSearchNav childNav = new TaoBaoSearchNav();
-			childNav.setName(province.getName());
-			childNav.setId(Integer.parseInt(province.getId()));
-			childNav.setType("fahuodi-child");
-			if (Integer.parseInt(province.getId()) == provinceId)
-				childNav.setSelector(1);
-			childNavList.add(childNav);
-		}
-
-		nav.setSubIds(childNavList);
-		navList.add(nav);
-
-		Gson gson = new GsonBuilder().create();
-		Gson gson2 = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
-				.excludeFieldsWithoutExposeAnnotation().create();
-
-		JSONObject data = new JSONObject();
-		data.put("nav", gson.toJson(navList));
-		data.put("result", gson2.toJson(listExtra));
-		data.put("count", count);
-
-		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);
-				}
-
-				String end = tkRatearray.optJSONObject(i).optString("end");
-				if (!StringUtil.isNullOrEmpty(end)) {
-					int tkRate = (int) (Float.parseFloat(end) * 100);
-					sf.setEndTkRate(tkRate);
-				}
-			}
-
-		}
-	}
-}
+package com.yeshi.fanli.controller.client.v1;
+
+import java.io.PrintWriter;
+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 javax.annotation.Resource;
+
+import com.yeshi.fanli.entity.SystemEnum;
+import com.yeshi.fanli.entity.bus.search.HistorySearch;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.yeshi.utils.JsonUtil;
+import org.yeshi.utils.taobao.TbImgUtil;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.yeshi.goods.facade.dto.taobao.dataoke.DaTaoKeGoodsResult;
+import com.yeshi.fanli.entity.accept.AcceptData;
+import com.yeshi.fanli.entity.bus.lable.QualityFactory;
+import com.yeshi.fanli.entity.bus.recommend.Honest;
+import com.yeshi.fanli.entity.bus.search.HotSearch;
+import com.yeshi.fanli.entity.system.BusinessSystem;
+import com.yeshi.fanli.entity.system.ConfigKeyEnum;
+import com.yeshi.fanli.entity.taobao.PidUser;
+import com.yeshi.fanli.entity.taobao.SearchFilter;
+import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
+import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBriefExtra;
+import com.yeshi.fanli.entity.taobao.TaoBaoProvince;
+import com.yeshi.fanli.entity.taobao.TaoBaoSearchNav;
+import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
+import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig;
+import com.yeshi.goods.facade.entity.taobao.dataoke.DaTaoKeDetailV2;
+import com.yeshi.fanli.service.inter.config.BusinessSystemService;
+import com.yeshi.fanli.service.inter.config.ConfigService;
+import com.yeshi.fanli.service.inter.config.HotSearchService;
+import com.yeshi.fanli.service.inter.lable.QualityGoodsService;
+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.goods.facade.service.DaTaoKeGoodsDetailV2Service;
+import com.yeshi.fanli.service.inter.user.HistorySearchService;
+import com.yeshi.fanli.util.Constant;
+import com.yeshi.fanli.util.EhcacheUtil;
+import com.yeshi.fanli.util.StringUtil;
+import com.yeshi.fanli.util.ThreadUtil;
+import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil;
+import com.yeshi.goods.facade.utils.taobao.DaTaoKeApiUtil;
+import com.yeshi.fanli.util.taobao.SearchFilterUtil;
+import com.yeshi.fanli.util.taobao.TaoBaoUtil;
+import com.yeshi.fanli.vo.brand.TaoBaoShopVO;
+
+import net.sf.ehcache.Element;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+@Controller
+@RequestMapping("api/v1/search")
+public class SearchController {
+
+    @Resource
+    private BusinessSystemService businessSystemService;
+
+    @Resource
+    private ConfigService configService;
+
+    @Resource
+    private HotSearchService hotSearchService;
+
+    @Resource
+    private HistorySearchService historySearchService;
+
+    @Resource
+    private HongBaoManageService manageService;
+
+    @Resource
+    private TaoBaoUnionConfigService taoBaoUnionConfigService;
+
+    @Resource
+    private QualityGoodsService qualityGoodsService;
+
+    @Resource
+    private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil;
+
+    @Resource
+    private TaoBaoShopService taoBaoShopService;
+
+    @Resource
+    private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service;
+
+
+    /**
+     * 鐑棬鎼滅储
+     *
+     * @param acceptData
+     * @param goodsType
+     * @param out
+     */
+    @RequestMapping(value = "gethotsearch", method = RequestMethod.POST)
+    public void getHotSearch(AcceptData acceptData, Integer goodsType, PrintWriter out) {
+        // 榛樿娣樺疂
+        if (goodsType == null) {
+            goodsType = Constant.SOURCE_TYPE_TAOBAO;
+        }
+
+        List<HotSearch> list = hotSearchService.getHotSearchCache(goodsType, acceptData.getSystem());
+        if (list == null || list.size() == 0) {
+            out.print(JsonUtil.loadFalseResult("娌℃湁鏁版嵁"));
+            return;
+        }
+
+        JSONObject data = new JSONObject();
+        data.put("count", list.size());
+        data.put("hotSearchList", list);
+        out.print(JsonUtil.loadTrueResult(data));
+    }
+
+    @RequestMapping("specialSearch")
+    public void specialSearch(AcceptData acceptData, long hid, int page, PrintWriter out) {
+        Honest honest = null;
+        if (honest == null) {
+            out.print(JsonUtil.loadFalseResult(""));
+            return;
+        }
+        String key = hid + "#" + page;
+        Element element = EhcacheUtil.getCache("temai").get(key);
+        if (element != null) {
+            String value = (String) element.getObjectValue();
+            if (value != null) {
+                out.print(value);
+                return;
+            }
+        }
+
+        List<TaoBaoUnionConfig> config = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID);
+
+        SearchFilter searchFilter = SearchFilterUtil.getSearchFilter(honest, page);
+        TaoBaoSearchResult result = TaoBaoUtil.search3(searchFilter, config.get(0));
+        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<TaoBaoGoodsBriefExtra> re = new ArrayList<TaoBaoGoodsBriefExtra>();
+        List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
+        BigDecimal proportion = manageService.getFanLiRate(acceptData.getSystem());
+        for (TaoBaoGoodsBrief bf : taoBaoGoodsBriefs) {
+            re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
+        }
+        Gson gson2 = JsonUtil.getApiCommonGson();
+        data.put("result", gson2.toJson(re));
+        int count = 0;
+        if (result.getTaoBaoHead() != null) {
+            count = result.getTaoBaoHead().getDocsfound();
+        }
+        data.put("count", count);
+
+        String loadTrueResult = JsonUtil.loadTrueResult(data);
+        if (count != 0) {
+            EhcacheUtil.getCache("temai").put(new Element(key, loadTrueResult));
+        }
+        out.print(loadTrueResult);
+    }
+
+    @RequestMapping(value = "search")
+    public void search(AcceptData acceptData, String kw, Long uid, int page, String filter, String order, String startprice,
+                       String endprice, String fastFilter, PrintWriter out) {
+
+        ThreadUtil.run(new Runnable() {
+            @Override
+            public void run() {
+                HistorySearch search = new HistorySearch();
+                search.setDevice(StringUtil.isNullOrEmpty(acceptData.getUtdid()) ? acceptData.getDevice() : acceptData.getUtdid());
+                search.setKey(kw);
+                search.setSystem(acceptData.getSystem());
+                search.setUid(uid);
+                historySearchService.addHistorySearch(search);
+            }
+        });
+        BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
+                acceptData.getPackages(), acceptData.getSystem());
+        if (system == null) {
+            out.print(JsonUtil.loadFalseResult("绯荤粺涓嶅瓨鍦�"));
+            return;
+        }
+
+        if (!StringUtil.isNullOrEmpty(kw) && (kw.startsWith("http://") || kw.startsWith("https://"))) {
+            out.print(JsonUtil.loadFalseResult("鏃犳硶鎼滅储閾炬帴"));
+            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;
+            }
+        }
+        JSONObject data = search(acceptData, kw, page, filter, order, startprice, endprice);
+        out.print(JsonUtil.loadTrueResult(data));
+    }
+
+    @Cacheable(value = "goodsCache", key = "#md5")
+    public JSONObject searchClass(AcceptData acceptData, String kw, int page, String filter, String order,
+                                  String startprice, String endprice, String md5) {
+        java.lang.System.out.println("searchClass");
+        JSONObject data = search(acceptData, kw, page, filter, order, startprice, endprice);
+        return data;
+    }
+
+    private JSONObject search(AcceptData acceptData, String kw, int page, String filter, String order, String startprice, String endprice) {
+        page = page + 1;
+
+        SearchFilter sf = new SearchFilter();
+        sf.setKey(SearchFilterUtil.filterSearchContent(kw));
+        sf.setPage(page);
+        sf.setSort(0);
+
+        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) {
+                sf.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
+            } else if (Integer.parseInt(order) == 2) {
+                sf.setSort(TaoBaoUtil.SORT_PRICE_HIGH_TO_LOW);
+            } else if (Integer.parseInt(order) == 3) {
+                sf.setSort(TaoBaoUtil.SORT_PRICE_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);
+                }
+            }
+            sf.setParams(params);
+        }
+        TaoBaoSearchResult result = TaoBaoUtil.search(sf, null, null);
+        if (result == null) {
+            return null;
+        }
+
+        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<TaoBaoGoodsBriefExtra> re = new ArrayList<TaoBaoGoodsBriefExtra>();
+        List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
+        int fq = sf.getQuan();
+        int fh = sf.getHongbao();
+        boolean ft = sf.isTmall();
+        BigDecimal proportion = manageService.getFanLiRate(acceptData.getSystem());
+        if (fq == 0 && fh == 0 && !ft) {
+            if (result != null && result.getTaoBaoGoodsBriefs() != null)
+                for (TaoBaoGoodsBrief bf : result.getTaoBaoGoodsBriefs()) {
+                    int count = bf.getBiz30day();
+                    if (count >= 10000) { // 瀵归攢閲忔暟鎹仛澶勭悊 椤甸潰灞曠ず7.3涓�
+                        double sales = count;
+                        String salesCountMidea = String.format("%.1f", sales / 10000);
+                        bf.setSalesCount(salesCountMidea + "涓�");
+                        re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
+                    } else {
+                        bf.setSalesCount(count + "");
+                        re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
+                    }
+                }
+        } else {
+            TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra;
+            if (taoBaoGoodsBriefs != null)
+                for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) {
+                    int count = taoBaoGoodsBrief.getBiz30day();
+                    if (count >= 10000) {
+                        double sales = count;
+                        String salesCountMidea = String.format("%.1f", sales / 10000);
+                        taoBaoGoodsBrief.setSalesCount(salesCountMidea + "涓�");
+                        taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
+                                proportion.toString(), "");
+                        re.add(taoBaoGoodsBriefExtra);
+                    } else {
+                        taoBaoGoodsBrief.setSalesCount(count + "");
+                        taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
+                                proportion.toString(), "");
+                        re.add(taoBaoGoodsBriefExtra);
+                    }
+                }
+        }
+        Gson gson2 = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
+                .excludeFieldsWithoutExposeAnnotation().create();
+        data.put("result", gson2.toJson(re));
+        data.put("count", result.getTaoBaoHead().getDocsfound());
+        return data;
+    }
+
+    @RequestMapping(value = "suggestsearch", method = RequestMethod.POST)
+    public void getSugguestSearch(AcceptData acceptData, String kw, PrintWriter out) {
+        List<String> list = TaoBaoUtil.getSuguestSearch(kw);
+        if (list != null && list.size() > 0) {
+            JSONArray array = new JSONArray();
+            for (String st : list)
+                array.add(st);
+            out.print(JsonUtil.loadTrueResult(array));
+        } else {
+            out.print(JsonUtil.loadFalseResult("鏆傛棤寤鸿鍐呭"));
+        }
+        return;
+    }
+
+    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());
+    }
+
+    /**
+     * 鎼滅储-鏂扮増
+     *
+     * @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, String kw, Long uid, int page, String filter, String order, String startprice,
+                            String endprice, Double startTkRate, Double endTkRate, String fastFilter, PrintWriter out) {
+
+        ThreadUtil.run(new Runnable() {
+            @Override
+            public void run() {
+                HistorySearch search = new HistorySearch();
+                search.setDevice(StringUtil.isNullOrEmpty(acceptData.getUtdid()) ? acceptData.getDevice() : acceptData.getUtdid());
+                search.setKey(kw);
+                search.setSystem(acceptData.getSystem());
+                search.setUid(uid);
+                historySearchService.addHistorySearch(search);
+            }
+        });
+
+        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));
+            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;
+            }
+        }
+
+        // 鏄惁鏄帹鑽�
+        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;
+                }
+            }
+        }
+
+        JSONObject data = null;
+        if (!recommend) {
+            // 娣樺疂鎺ュ彛璇锋眰
+            data = searchGoods(acceptData, kw, page, filter, order, startprice, endprice, acceptData.getSystem());
+        } else {
+            // 鎺ㄨ崘锛氱簿閫夊簱
+            // data = searchQualityGoods(kw, page, filter, order, startprice,
+            // endprice);
+            data = searchDaTaoKeGoods(acceptData, kw, page, filter, order, startprice, endprice);
+        }
+
+        // 鑾峰彇鎺ㄨ崘璇�
+        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, acceptData.getSystem());
+            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)));
+            }
+        }
+
+        Gson gson = new GsonBuilder().create();
+        if (data != null)
+            data.put("words", gson.toJson(listRecommendWords));
+
+        out.print(JsonUtil.loadTrueResult(data));
+    }
+
+    /**
+     * 鎵ц鎼滅储-鏂扮増
+     *
+     * @param kw
+     * @param page
+     * @param filter
+     * @param order
+     * @param startprice
+     * @param endprice
+     * @return
+     */
+    private JSONObject searchGoods(AcceptData acceptData, String kw, int page, String filter, String order, String startprice,
+                                   String endprice, SystemEnum system) {
+        page = page + 1;
+
+        SearchFilter sf = new SearchFilter();
+        sf.setKey(SearchFilterUtil.filterSearchContent(kw));
+        sf.setPage(page);
+        sf.setSort(0);
+
+        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) {
+                sf.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
+            } else if (Integer.parseInt(order) == 2) {
+                sf.setSort(TaoBaoUtil.SORT_PRICE_HIGH_TO_LOW);
+            } else if (Integer.parseInt(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) {
+                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, system);
+                } else if ("tkRate2".equalsIgnoreCase(ty)) {
+                    setSearchTkRate(1, sf, system);
+                } else if ("tkRate3".equalsIgnoreCase(ty)) {
+                    setSearchTkRate(2, sf, system);
+                } else if ("tkRate4".equalsIgnoreCase(ty)) {
+                    setSearchTkRate(3, sf, system);
+                } else if ("tkRate5".equalsIgnoreCase(ty)) {
+                    setSearchTkRate(4, sf, system);
+                }
+            }
+            sf.setParams(params);
+        }
+
+        // 鎼滅储澶ф窐瀹�
+        List<DaTaoKeDetailV2> daTaoKeList = null;
+        if (page == 1)
+            daTaoKeList = daTaoKeGoodsDetailV2Service.listByDtitle(kw);
+
+        TaoBaoSearchResult result = TaoBaoUtil.search(sf, null, null);
+        if (result == null) {
+            return null;
+        }
+        // 鎼滅储鏄惁鍦ㄨ惀閿�涓诲晢鍝佸簱
+        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() {
+                    // 鏇存柊鍒扮珐瀛�
+                    for (TaoBaoGoodsBrief goods : result.getTaoBaoGoodsBriefs())
+                        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<TaoBaoGoodsBriefExtra> re = new ArrayList<TaoBaoGoodsBriefExtra>();
+        List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
+        if (taoBaoGoodsBriefs == null)
+            taoBaoGoodsBriefs = new ArrayList<>();
+
+        try {
+            if (daTaoKeList != null && daTaoKeList.size() > 0) {
+                Collections.reverse(daTaoKeList);
+                for (DaTaoKeDetailV2 detail : daTaoKeList) {
+                    taoBaoGoodsBriefs.add(0, TaoBaoUtil.convert(detail));
+                }
+            }
+        } catch (Exception e) {
+        }
+
+        int fq = sf.getQuan();
+        int fh = sf.getHongbao();
+        boolean ft = sf.isTmall();
+        BigDecimal proportion = manageService.getFanLiRate(acceptData.getSystem());
+        if (fq == 0 && fh == 0 && !ft) {
+            if (result != null && taoBaoGoodsBriefs != null)
+                for (TaoBaoGoodsBrief bf : taoBaoGoodsBriefs) {
+                    int count = bf.getBiz30day();
+                    if (count >= 10000) { // 瀵归攢閲忔暟鎹仛澶勭悊 椤甸潰灞曠ず7.3涓�
+                        double sales = count;
+                        String salesCountMidea = String.format("%.1f", sales / 10000);
+                        bf.setSalesCount(salesCountMidea + "涓�");
+                        re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
+                    } else {
+                        bf.setSalesCount(count + "");
+                        re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
+                    }
+                }
+        } else {
+            TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra;
+            if (taoBaoGoodsBriefs != null)
+                for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) {
+                    int count = taoBaoGoodsBrief.getBiz30day();
+                    if (count >= 10000) {
+                        double sales = count;
+                        String salesCountMidea = String.format("%.1f", sales / 10000);
+                        taoBaoGoodsBrief.setSalesCount(salesCountMidea + "涓�");
+                        taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
+                                proportion.toString(), "");
+                        re.add(taoBaoGoodsBriefExtra);
+                    } else {
+                        taoBaoGoodsBrief.setSalesCount(count + "");
+                        taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
+                                proportion.toString(), "");
+                        re.add(taoBaoGoodsBriefExtra);
+                    }
+                }
+        }
+        Gson gson2 = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
+                .excludeFieldsWithoutExposeAnnotation().create();
+        data.put("result", gson2.toJson(re));
+        data.put("count", result.getTaoBaoHead().getDocsfound());
+        return data;
+    }
+
+    /**
+     * 鎵ц鎼滅储绮鹃�夊簱
+     *
+     * @param key
+     * @param page
+     * @param filter
+     * @param order
+     * @param startprice
+     * @param endprice
+     * @return
+     */
+    private JSONObject searchQualityGoods(AcceptData acceptData, String key, int page, String filter, String order, String startprice,
+                                          String endprice, SystemEnum system) {
+
+        Integer hasQuan = null;
+        Integer userType = null;
+        Double start_Price = null;
+        Double end_Price = null;
+        Integer sort = null;
+        Double startTkRate = null;
+        Double endTkRate = null;
+
+        int provinceId = -100;
+
+        // 璧峰浠锋牸
+        if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(startprice)) {
+            start_Price = Double.parseDouble(startprice);
+        }
+        // 缁撴潫浠锋牸
+        if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(endprice)) {
+            end_Price = Double.parseDouble(endprice);
+        }
+
+        // 鎺掑簭
+        if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(order)) {
+
+            if (Integer.parseInt(order) == 4) {
+                sort = 20; // 缁煎悎鏃讹細閲囩敤榛樿鏉冮噸鎺掑簭
+            } else {
+                sort = Integer.parseInt(order);
+            }
+
+        }
+
+        /* 鍏朵粬绛涢�夋潯浠� */
+        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 ("userType".equalsIgnoreCase(ty)) {
+                    userType = 1; // 澶╃尗
+                } else if ("quantype".equalsIgnoreCase(ty)) {
+                    hasQuan = 1; // 鏈夊埜
+                } else if ("hongbaotype".equalsIgnoreCase(ty)) {
+
+                } else if ("fahuodi".equalsIgnoreCase(ty)) {
+                    provinceId = array.optJSONObject(i).optInt("id");
+                } else if ("tkRate1".equalsIgnoreCase(ty)) {
+                    // 鑾峰彇瀵瑰簲鍙傛暟
+                    String value = configService.getValue(ConfigKeyEnum.tkRateRange.getKey(), system);
+                    if (!StringUtil.isNullOrEmpty(value)) {
+                        JSONArray tkRatearray = JSONArray.fromObject(value);
+                        if (tkRatearray != null) {
+                            String start = tkRatearray.optJSONObject(0).optString("start");
+                            if (!StringUtil.isNullOrEmpty(start)) {
+                                startTkRate = Double.parseDouble(start);
+                            }
+                            String end = tkRatearray.optJSONObject(0).optString("end");
+                            if (!StringUtil.isNullOrEmpty(end)) {
+                                endTkRate = Double.parseDouble(end);
+                            }
+                        }
+                    }
+                } else if ("tkRate2".equalsIgnoreCase(ty)) {
+                    // 鑾峰彇瀵瑰簲鍙傛暟
+                    String value = configService.getValue(ConfigKeyEnum.tkRateRange.getKey(), system);
+                    if (!StringUtil.isNullOrEmpty(value)) {
+                        JSONArray tkRatearray = JSONArray.fromObject(value);
+                        if (tkRatearray != null) {
+                            String start = tkRatearray.optJSONObject(1).optString("start");
+                            if (!StringUtil.isNullOrEmpty(start)) {
+                                startTkRate = Double.parseDouble(start);
+                            }
+                            String end = tkRatearray.optJSONObject(1).optString("end");
+                            if (!StringUtil.isNullOrEmpty(end)) {
+                                endTkRate = Double.parseDouble(end);
+                            }
+                        }
+                    }
+                } else if ("tkRate3".equalsIgnoreCase(ty)) {
+                    // 鑾峰彇瀵瑰簲鍙傛暟
+                    String value = configService.getValue(ConfigKeyEnum.tkRateRange.getKey(), system);
+                    if (!StringUtil.isNullOrEmpty(value)) {
+                        JSONArray tkRatearray = JSONArray.fromObject(value);
+                        if (tkRatearray != null) {
+                            String start = tkRatearray.optJSONObject(2).optString("start");
+                            if (!StringUtil.isNullOrEmpty(start)) {
+                                startTkRate = Double.parseDouble(start);
+                            }
+                            String end = tkRatearray.optJSONObject(2).optString("end");
+                            if (!StringUtil.isNullOrEmpty(end)) {
+                                endTkRate = Double.parseDouble(end);
+                            }
+                        }
+                    }
+                } else if ("tkRate4".equalsIgnoreCase(ty)) {
+                    // 鑾峰彇瀵瑰簲鍙傛暟
+                    String value = configService.getValue(ConfigKeyEnum.tkRateRange.getKey(), system);
+                    if (!StringUtil.isNullOrEmpty(value)) {
+                        JSONArray tkRatearray = JSONArray.fromObject(value);
+                        if (tkRatearray != null) {
+                            String start = tkRatearray.optJSONObject(3).optString("start");
+                            if (!StringUtil.isNullOrEmpty(start)) {
+                                startTkRate = Double.parseDouble(start);
+                            }
+                            String end = tkRatearray.optJSONObject(3).optString("end");
+                            if (!StringUtil.isNullOrEmpty(end)) {
+                                endTkRate = Double.parseDouble(end);
+                            }
+                        }
+                    }
+                } else if ("tkRate5".equalsIgnoreCase(ty)) {
+                    // 鑾峰彇瀵瑰簲鍙傛暟
+                    String value = configService.getValue(ConfigKeyEnum.tkRateRange.getKey(), system);
+                    if (!StringUtil.isNullOrEmpty(value)) {
+                        JSONArray tkRatearray = JSONArray.fromObject(value);
+                        if (tkRatearray != null) {
+                            String start = tkRatearray.optJSONObject(4).optString("start");
+                            if (!StringUtil.isNullOrEmpty(start)) {
+                                startTkRate = Double.parseDouble(start);
+                            }
+                            String end = tkRatearray.optJSONObject(4).optString("end");
+                            if (!StringUtil.isNullOrEmpty(end)) {
+                                endTkRate = Double.parseDouble(end);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        int pageSize = Constant.PAGE_SIZE;
+
+        List<QualityFactory> listQuery = qualityGoodsService.listRecommendBykey(page * pageSize, pageSize, key, hasQuan,
+                userType, start_Price, end_Price, startTkRate, endTkRate, sort);
+
+        List<TaoBaoGoodsBriefExtra> listExtra = new ArrayList<TaoBaoGoodsBriefExtra>();
+        BigDecimal proportion = manageService.getFanLiRate(acceptData.getSystem());
+        /* 閬嶅巻鍒楄〃鏁版嵁 */
+        if (listQuery != null && listQuery.size() > 0) {
+            for (QualityFactory selectionGoods : listQuery) {
+
+                TaoBaoGoodsBrief taoBaoGoodsBrief = selectionGoods.getTaoBaoGoodsBrief();
+
+                if (taoBaoGoodsBrief == null) {
+                    continue;
+                }
+
+                int biz30day = taoBaoGoodsBrief.getBiz30day();
+                if (biz30day >= 10000) {
+                    double sales = biz30day;
+                    String salesCountMidea = String.format("%.1f", sales / 10000);
+                    taoBaoGoodsBrief.setSalesCount(salesCountMidea + "涓�");
+                } else {
+                    taoBaoGoodsBrief.setSalesCount(biz30day + "");
+                }
+
+                // 鏀瑰彉鍥剧墖灏哄
+                String pictUrl = taoBaoGoodsBrief.getPictUrl();
+                if (!StringUtil.isNullOrEmpty(pictUrl) && !pictUrl.contains("320x320")) {
+                    taoBaoGoodsBrief.setPictUrl(TbImgUtil.getTBSize320Img(pictUrl));
+                }
+
+                listExtra.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), null));
+            }
+        }
+
+        long count = qualityGoodsService.countRecommendBykey(key, hasQuan, userType, start_Price, end_Price,
+                startTkRate, endTkRate);
+
+        // 璁剧疆鍙戣揣鍦板潃
+        TaoBaoSearchNav nav = new TaoBaoSearchNav();
+        nav.setName("鍙戣揣鍦伴�夋嫨");
+        nav.setFlag("address");
+        nav.setId(11110);
+        nav.setType("fahuodi");
+
+        List<TaoBaoSearchNav> navList = new ArrayList<>();
+
+        List<TaoBaoSearchNav> childNavList = new ArrayList<>();
+        List<TaoBaoProvince> provinceList = TaoBaoUtil.getTaoBaoProvinceList();
+        for (TaoBaoProvince province : provinceList) {
+            TaoBaoSearchNav childNav = new TaoBaoSearchNav();
+            childNav.setName(province.getName());
+            childNav.setId(Integer.parseInt(province.getId()));
+            childNav.setType("fahuodi-child");
+            if (Integer.parseInt(province.getId()) == provinceId)
+                childNav.setSelector(1);
+            childNavList.add(childNav);
+        }
+
+        nav.setSubIds(childNavList);
+        navList.add(nav);
+
+        Gson gson = new GsonBuilder().create();
+        Gson gson2 = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
+                .excludeFieldsWithoutExposeAnnotation().create();
+
+        JSONObject data = new JSONObject();
+        data.put("nav", gson.toJson(navList));
+        data.put("result", gson2.toJson(listExtra));
+        data.put("count", count);
+
+        return data;
+    }
+
+    private JSONObject searchDaTaoKeGoods(AcceptData acceptData, 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;
+        }
+
+        List<TaoBaoGoodsBriefExtra> listExtra = new ArrayList<TaoBaoGoodsBriefExtra>();
+        BigDecimal proportion = manageService.getFanLiRate(acceptData.getSystem());
+
+        DaTaoKeGoodsResult result = DaTaoKeApiUtil.search(key, null, null, null, page, 20, sort);
+        if (result != null && result.getGoodsList() != null)
+            for (DaTaoKeDetailV2 goods : result.getGoodsList()) {
+                listExtra.add(
+                        TaoBaoUtil.getTaoBaoGoodsBriefExtra(TaoBaoUtil.convert(goods), proportion.toString(), null));
+            }
+
+        List<TaoBaoSearchNav> navList = new ArrayList<>();
+        Gson gson = new GsonBuilder().create();
+        Gson gson2 = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
+                .excludeFieldsWithoutExposeAnnotation().create();
+
+        JSONObject data = new JSONObject();
+        data.put("nav", gson.toJson(navList));
+        data.put("result", gson2.toJson(listExtra));
+        data.put("count", result.getTotalCount());
+
+        return data;
+    }
+
+    /**
+     * 璁剧疆鏌ヨ浣i噾姣斾緥鑼冨洿
+     *
+     * @param i
+     * @param sf
+     */
+    public void setSearchTkRate(int i, SearchFilter sf, SystemEnum system) {
+        // 鑾峰彇瀵瑰簲鍙傛暟
+        String value = configService.getValue(ConfigKeyEnum.tkRateRange.getKey(), system);
+
+        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);
+                }
+
+                String end = tkRatearray.optJSONObject(i).optString("end");
+                if (!StringUtil.isNullOrEmpty(end)) {
+                    int tkRate = (int) (Float.parseFloat(end) * 100);
+                    sf.setEndTkRate(tkRate);
+                }
+            }
+
+        }
+    }
+}

--
Gitblit v1.8.0