From 573c491b4a1ba60e12a5678a01c1546c0077c1ee Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 30 七月 2019 09:07:42 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- fanli/src/main/java/com/yeshi/fanli/controller/client/v1/SearchController.java | 161 ++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 120 insertions(+), 41 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 c87fbf3..257ec87 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 @@ -3,28 +3,27 @@ import java.io.PrintWriter; import java.math.BigDecimal; import java.util.ArrayList; -import java.util.HashMap; +import java.util.Collections; import java.util.HashSet; import java.util.List; -import java.util.Map; import java.util.Set; import javax.annotation.Resource; -import javax.print.attribute.standard.NumberUp; 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.TaoBaoAuthUtil; import org.yeshi.utils.taobao.TbImgUtil; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.yeshi.fanli.dto.dataoke.DaTaoKeGoodsResult; import com.yeshi.fanli.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.HistorySearch; import com.yeshi.fanli.entity.bus.search.HotSearch; import com.yeshi.fanli.entity.bus.su.search.SuperHotSearch; import com.yeshi.fanli.entity.system.BusinessSystem; @@ -36,23 +35,27 @@ import com.yeshi.fanli.entity.taobao.TaoBaoSearchNav; import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult; import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig; -import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; +import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetail; +import com.yeshi.fanli.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.SuperHotSearchService; import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService; import com.yeshi.fanli.service.inter.lable.QualityGoodsService; import com.yeshi.fanli.service.inter.lable.TaoKeGoodsService; +import com.yeshi.fanli.service.inter.taobao.TaoBaoShopService; import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService; +import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailService; import com.yeshi.fanli.service.inter.user.HistorySearchService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.EhcacheUtil; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.ThreadUtil; import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil; +import com.yeshi.fanli.util.dataoke.DaTaoKeApiUtil; import com.yeshi.fanli.util.taobao.SearchFilterUtil; import com.yeshi.fanli.util.taobao.TaoBaoUtil; -import com.yeshi.fanli.util.taobao.TaoKeApiUtil; +import com.yeshi.fanli.vo.brand.TaoBaoShopVO; import net.sf.ehcache.Element; import net.sf.json.JSONArray; @@ -88,6 +91,12 @@ @Resource private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil; + + @Resource + private TaoBaoShopService taoBaoShopService; + + @Resource + private DaTaoKeGoodsDetailService daTaoKeGoodsDetailService; @RequestMapping(value = "gethotsearch", method = RequestMethod.POST) public void getHotSearch(AcceptData acceptData, PrintWriter out) { @@ -410,15 +419,20 @@ historySearchService.addHistorySearch(kw, bid); - BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(), - acceptData.getPackages()); - if (system == null) { - out.print(JsonUtil.loadFalseResult("绯荤粺涓嶅瓨鍦�")); - return; - } + // BusinessSystem system = + // businessSystemService.getBusinessSystemCache(acceptData.getPlatform(), + // acceptData.getPackages()); + // if (system == null) { + // out.print(JsonUtil.loadFalseResult("绯荤粺涓嶅瓨鍦�")); + // return; + // } if (!StringUtil.isNullOrEmpty(kw) && (kw.startsWith("http://") || kw.startsWith("https://"))) { - out.print(JsonUtil.loadFalseResult("鏃犳硶鎼滅储閾炬帴")); + JSONObject data = new JSONObject(); + data.put("result", new JSONArray()); + data.put("count", 0); + data.put("nav", new JSONArray()); + out.print(JsonUtil.loadTrueResult(data)); return; } @@ -449,11 +463,14 @@ JSONObject data = null; if (!recommend) { + // 娣樺疂鎺ュ彛璇锋眰 data = searchGoods(kw, page, filter, order, startprice, endprice); } else { // 鎺ㄨ崘锛氱簿閫夊簱 - data = searchQualityGoods(kw, page, filter, order, startprice, endprice); + // data = searchQualityGoods(kw, page, filter, order, startprice, + // endprice); + data = searchDaTaoKeGoods(kw, page, filter, order, startprice, endprice); } // 鑾峰彇鎺ㄨ崘璇� @@ -463,6 +480,12 @@ listRecommendWords = TaoBaoUtil.getSuguestSearch(kw); if (listRecommendWords == null || listRecommendWords.size() == 0) { listRecommendWords = new ArrayList<String>(); + } + + List<TaoBaoShopVO> listShop =taoBaoShopService.getShopByKey(kw); + if (listShop != null && listShop.size() > 0 && listShop.get(0).getListGoods() != null + && listShop.get(0).getListGoods().size() > 2) { + data.put("shop", JsonUtil.getApiCommonGson().toJson(listShop.get(0))); } } @@ -602,37 +625,44 @@ sf.setParams(params); } + // 鎼滅储澶ф窐瀹� + List<DaTaoKeDetail> daTaoKeList = null; + if (page == 1) + daTaoKeList = daTaoKeGoodsDetailService.listByDtitle(kw); + TaoBaoSearchResult result = TaoBaoUtil.search(sf); if (result == null) { return null; } // 鎼滅储鏄惁鍦ㄨ惀閿�涓诲晢鍝佸簱 if (result != null && result.getTaoBaoGoodsBriefs() != null && result.getTaoBaoGoodsBriefs().size() > 0) { - String numIds = ""; - for (TaoBaoGoodsBrief goods : result.getTaoBaoGoodsBriefs()) { - numIds += goods.getAuctionId() + ","; - } - if (numIds.endsWith(",")) - numIds = numIds.substring(0, numIds.length() - 1); - try { - List<TaoBaoGoodsBrief> goodsList = TaoKeApiUtil.getBatchGoodsInfos(numIds); - Map<Long, Integer> map = new HashMap<>(); - for (TaoBaoGoodsBrief g : goodsList) - map.put(g.getAuctionId(), g.getMaterialLibType()); - for (TaoBaoGoodsBrief goods : result.getTaoBaoGoodsBriefs()) - goods.setMaterialLibType(map.get(goods.getAuctionId())); + // 鏆傛椂鏀惧純鏇存柊鍒拌惀閿�鍟嗗搧搴� + // 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 (TaobaoGoodsDownException e) { - e.printStackTrace(); - } + ThreadUtil.run(new Runnable() { + @Override + public void run() { + // 鏇存柊鍒扮珐瀛� + for (TaoBaoGoodsBrief goods : result.getTaoBaoGoodsBriefs()) + taoBaoGoodsCacheUtil.saveCommonTaoBaoGoodsInfo(goods); + } + }); + // } catch (Exception e) { + // e.printStackTrace(); + // } } @@ -644,14 +674,26 @@ data.put("nav", gson.toJson(navList)); List<TaoBaoGoodsBriefExtra> re = new ArrayList<TaoBaoGoodsBriefExtra>(); List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs(); + if (taoBaoGoodsBriefs == null) + taoBaoGoodsBriefs = new ArrayList<>(); + + try { + if (daTaoKeList != null && daTaoKeList.size() > 0) { + Collections.reverse(daTaoKeList); + for (DaTaoKeDetail detail : daTaoKeList) { + taoBaoGoodsBriefs.add(0, TaoBaoUtil.convert(detail)); + } + } + } catch (Exception e) { + } + int fq = sf.getQuan(); int fh = sf.getHongbao(); boolean ft = sf.isTmall(); - Map<String, String> map = manageService.convertMap(); BigDecimal proportion = manageService.getFanLiRate(); if (fq == 0 && fh == 0 && !ft) { - if (result != null && result.getTaoBaoGoodsBriefs() != null) - for (TaoBaoGoodsBrief bf : result.getTaoBaoGoodsBriefs()) { + if (result != null && taoBaoGoodsBriefs != null) + for (TaoBaoGoodsBrief bf : taoBaoGoodsBriefs) { int count = bf.getBiz30day(); if (count >= 10000) { // 瀵归攢閲忔暟鎹仛澶勭悊 椤甸潰灞曠ず7.3涓� double sales = count; @@ -908,6 +950,43 @@ return data; } + private JSONObject searchDaTaoKeGoods(String key, int page, String filter, String order, String startprice, + String endprice) { + page = page + 1; + int sort = DaTaoKeApiUtil.SORT_DEFAULT; + if ("5".equalsIgnoreCase(order)) { + sort = DaTaoKeApiUtil.SORT_COMMISSION; + } else if ("1".equalsIgnoreCase(order)) { + sort = DaTaoKeApiUtil.SORT_SALES; + } else if ("2".equalsIgnoreCase(order)) { + sort = DaTaoKeApiUtil.SORT_PRICE_HIGH_TO_LOW; + } else if ("3".equalsIgnoreCase(order)) { + sort = DaTaoKeApiUtil.SORT_PRICE_LOW_TO_HIGH; + } + + List<TaoBaoGoodsBriefExtra> listExtra = new ArrayList<TaoBaoGoodsBriefExtra>(); + BigDecimal proportion = manageService.getFanLiRate(); + + 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噾姣斾緥鑼冨洿 * -- Gitblit v1.8.0