From a7454d8a6325566753358b37ffabfae2faa0ca7f Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 28 四月 2021 19:46:49 +0800
Subject: [PATCH] 拼多多授权调整,支持小程序跳转

---
 fanli/src/main/java/com/yeshi/fanli/controller/client/v1/SearchController.java | 2026 +++++++++++++++++++++++++++++-----------------------------
 1 files changed, 1,013 insertions(+), 1,013 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 138fd0f..a2777cd 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,1013 +1,1013 @@
-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 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, 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(),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);
-		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, 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://"))) {
-			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);
-		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);
-				}
-			}
-
-		}
-	}
-}
+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 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, 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(),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, 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://"))) {
+			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