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 | 2037 ++++++++++++++++++++++++++++++----------------------------- 1 files changed, 1,024 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..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,1013 +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 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 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