From b6c37e4bc38db88a360d0f2c6099183f9bb75bdc Mon Sep 17 00:00:00 2001
From: yujian <yujian>
Date: 星期一, 22 四月 2019 14:31:59 +0800
Subject: [PATCH] 券推送插入

---
 fanli/src/main/java/com/yeshi/fanli/controller/client/SearchController.java |  185 ++++++++++++++++++++++++----------------------
 1 files changed, 96 insertions(+), 89 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/SearchController.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/SearchController.java
index 9dfd6e0..d50db6e 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/client/SearchController.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/SearchController.java
@@ -3,16 +3,14 @@
 import java.io.PrintWriter;
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
 import javax.annotation.Resource;
-
-import net.sf.ehcache.Element;
-import net.sf.json.JSONArray;
-import net.sf.json.JSONObject;
+import javax.print.attribute.standard.NumberUp;
 
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Controller;
@@ -29,7 +27,7 @@
 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.System;
+import com.yeshi.fanli.entity.system.BusinessSystem;
 import com.yeshi.fanli.entity.taobao.PidUser;
 import com.yeshi.fanli.entity.taobao.SearchFilter;
 import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
@@ -38,10 +36,10 @@
 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.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.config.SystemService;
-import com.yeshi.fanli.service.inter.goods.HonestService;
 import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
 import com.yeshi.fanli.service.inter.lable.QualityGoodsService;
 import com.yeshi.fanli.service.inter.lable.TaoKeGoodsService;
@@ -50,19 +48,26 @@
 import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.EhcacheUtil;
 import com.yeshi.fanli.util.StringUtil;
+import com.yeshi.fanli.util.ThreadUtil;
+import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil;
 import com.yeshi.fanli.util.taobao.SearchFilterUtil;
 import com.yeshi.fanli.util.taobao.TaoBaoUtil;
+import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
+
+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 SystemService systemService;
-	
+	private BusinessSystemService businessSystemService;
+
 	@Resource
 	private ConfigService configService;
-	
+
 	@Resource
 	private SuperHotSearchService superHotSearchSerivce;
 
@@ -73,9 +78,6 @@
 	private HongBaoManageService manageService;
 
 	@Resource
-	private HonestService honestService;
-
-	@Resource
 	private TaoBaoUnionConfigService taoBaoUnionConfigService;
 
 	@Resource
@@ -84,9 +86,13 @@
 	@Resource
 	private QualityGoodsService qualityGoodsService;
 
+	@Resource
+	private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil;
+
 	@RequestMapping(value = "gethotsearch", method = RequestMethod.POST)
 	public void getHotSearch(AcceptData acceptData, PrintWriter out) {
-		System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages());
+		BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
+				acceptData.getPackages());
 		if (system == null) {
 			out.print(JsonUtil.loadFalseResult("绯荤粺涓嶅瓨鍦�"));
 			return;
@@ -100,7 +106,8 @@
 		List<HotSearch> hotSearchList = new ArrayList<HotSearch>();
 		for (SuperHotSearch superHotSearch : superHotSearchList) {
 			HotSearch hotSearch = superHotSearch.getHotSearch();
-			hotSearchList.add(hotSearch);
+			if (hotSearch != null)
+				hotSearchList.add(hotSearch);
 		}
 
 		JSONObject data = new JSONObject();
@@ -113,7 +120,7 @@
 
 	@RequestMapping("specialSearch")
 	public void specialSearch(AcceptData acceptData, long hid, int page, PrintWriter out) {
-		Honest honest = honestService.getOne(hid);
+		Honest honest = null;
 		if (honest == null) {
 			out.print(JsonUtil.loadFalseResult(""));
 			return;
@@ -140,11 +147,9 @@
 		data.put("nav", gson.toJson(navList));
 		List<TaoBaoGoodsBriefExtra> re = new ArrayList<TaoBaoGoodsBriefExtra>();
 		List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
-		Map<String, String> map = manageService.convertMap();
-		String proportion = map.get("hongbao_goods_proportion");
-		String fcRate = map.get("hongbao_fc_ratio");
+		BigDecimal proportion = manageService.getFanLiRate();
 		for (TaoBaoGoodsBrief bf : taoBaoGoodsBriefs) {
-			re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion, fcRate, ""));
+			re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
 		}
 		Gson gson2 = JsonUtil.getApiCommonGson();
 		data.put("result", gson2.toJson(re));
@@ -166,7 +171,8 @@
 			String endprice, String fastFilter, PrintWriter out) {
 		String bid = getHistorySearchBid(acceptData);
 		historySearchService.addHistorySearch(kw, bid);
-		System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages());
+		BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(),
+				acceptData.getPackages());
 		if (system == null) {
 			out.print(JsonUtil.loadFalseResult("绯荤粺涓嶅瓨鍦�"));
 			return;
@@ -315,9 +321,7 @@
 		int fq = sf.getQuan();
 		int fh = sf.getHongbao();
 		boolean ft = sf.isTmall();
-		Map<String, String> map = manageService.convertMap();
-		String proportion = map.get("hongbao_goods_proportion");
-		String fcRate = map.get("hongbao_fc_ratio");
+		BigDecimal proportion = manageService.getFanLiRate();
 		if (fq == 0 && fh == 0 && !ft) {
 			if (result != null && result.getTaoBaoGoodsBriefs() != null)
 				for (TaoBaoGoodsBrief bf : result.getTaoBaoGoodsBriefs()) {
@@ -326,10 +330,10 @@
 						double sales = count;
 						String salesCountMidea = String.format("%.1f", sales / 10000);
 						bf.setSalesCount(salesCountMidea + "涓�");
-						re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion, fcRate, ""));
+						re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
 					} else {
 						bf.setSalesCount(count + "");
-						re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion, fcRate, ""));
+						re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
 					}
 				}
 		} else {
@@ -341,13 +345,13 @@
 						double sales = count;
 						String salesCountMidea = String.format("%.1f", sales / 10000);
 						taoBaoGoodsBrief.setSalesCount(salesCountMidea + "涓�");
-						taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion,
-								fcRate, "");
+						taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
+								proportion.toString(), "");
 						re.add(taoBaoGoodsBriefExtra);
 					} else {
 						taoBaoGoodsBrief.setSalesCount(count + "");
-						taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion,
-								fcRate, "");
+						taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
+								proportion.toString(), "");
 						re.add(taoBaoGoodsBriefExtra);
 					}
 				}
@@ -357,32 +361,6 @@
 		data.put("result", gson2.toJson(re));
 		data.put("count", result.getTaoBaoHead().getDocsfound());
 		return data;
-	}
-
-	@RequestMapping(value = "gethistorysearch", method = RequestMethod.POST)
-	public void getHistorySearch(AcceptData acceptData, PrintWriter out) {
-		String bid = getHistorySearchBid(acceptData);
-		List<HistorySearch> historySearchList = historySearchService.getHistorySearch(bid);
-		if (historySearchList == null || historySearchList.size() == 0) {
-			out.print(JsonUtil.loadFalseResult("鏆傛棤鏁版嵁"));
-			return;
-		}
-		JSONObject data = new JSONObject();
-		data.put("count", historySearchList.size());
-		Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
-		data.put("historySearchList", gson.toJson(historySearchList));
-		out.print(JsonUtil.loadTrueResult(data));
-		return;
-	}
-
-	@RequestMapping(value = "clearhistorysearch", method = RequestMethod.POST)
-	public void clearHistorySearch(AcceptData acceptData, PrintWriter out) {
-		String bid = getHistorySearchBid(acceptData);
-		long count = historySearchService.clearHistorySearch(bid);
-		JSONObject data = new JSONObject();
-		data.put("count", count);
-		out.print(JsonUtil.loadTrueResult(data));
-		return;
 	}
 
 	@RequestMapping(value = "suggestsearch", method = RequestMethod.POST)
@@ -432,11 +410,12 @@
 
 		historySearchService.addHistorySearch(kw, bid);
 
-//		System system = systemService.getSystemCache(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("鏃犳硶鎼滅储閾炬帴"));
@@ -488,7 +467,8 @@
 		}
 
 		Gson gson = new GsonBuilder().create();
-		data.put("words", gson.toJson(listRecommendWords));
+		if (data != null)
+			data.put("words", gson.toJson(listRecommendWords));
 
 		out.print(JsonUtil.loadTrueResult(data));
 	}
@@ -520,7 +500,7 @@
 		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);
@@ -617,14 +597,43 @@
 					setSearchTkRate(3, sf);
 				} else if ("tkRate5".equalsIgnoreCase(ty)) {
 					setSearchTkRate(4, sf);
-				} 
+				}
 			}
 			sf.setParams(params);
 		}
-		
+
 		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 (TaobaoGoodsDownException e) {
+				e.printStackTrace();
+			}
+
 		}
 
 		List<TaoBaoSearchNav> navList = TaoBaoUtil.getBaseNav();
@@ -639,8 +648,7 @@
 		int fh = sf.getHongbao();
 		boolean ft = sf.isTmall();
 		Map<String, String> map = manageService.convertMap();
-		String proportion = map.get("hongbao_goods_proportion");
-		String fcRate = map.get("hongbao_fc_ratio");
+		BigDecimal proportion = manageService.getFanLiRate();
 		if (fq == 0 && fh == 0 && !ft) {
 			if (result != null && result.getTaoBaoGoodsBriefs() != null)
 				for (TaoBaoGoodsBrief bf : result.getTaoBaoGoodsBriefs()) {
@@ -649,10 +657,10 @@
 						double sales = count;
 						String salesCountMidea = String.format("%.1f", sales / 10000);
 						bf.setSalesCount(salesCountMidea + "涓�");
-						re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion, fcRate, ""));
+						re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
 					} else {
 						bf.setSalesCount(count + "");
-						re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion, fcRate, ""));
+						re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
 					}
 				}
 		} else {
@@ -664,13 +672,13 @@
 						double sales = count;
 						String salesCountMidea = String.format("%.1f", sales / 10000);
 						taoBaoGoodsBrief.setSalesCount(salesCountMidea + "涓�");
-						taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion,
-								fcRate, "");
+						taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
+								proportion.toString(), "");
 						re.add(taoBaoGoodsBriefExtra);
 					} else {
 						taoBaoGoodsBrief.setSalesCount(count + "");
-						taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion,
-								fcRate, "");
+						taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
+								proportion.toString(), "");
 						re.add(taoBaoGoodsBriefExtra);
 					}
 				}
@@ -694,7 +702,7 @@
 	 * @return
 	 */
 	private JSONObject searchQualityGoods(String key, int page, String filter, String order, String startprice,
-			String endprice ) {
+			String endprice) {
 
 		Integer hasQuan = null;
 		Integer userType = null;
@@ -703,7 +711,7 @@
 		Integer sort = null;
 		Double startTkRate = null;
 		Double endTkRate = null;
-		
+
 		int provinceId = -100;
 
 		// 璧峰浠锋牸
@@ -821,7 +829,7 @@
 							}
 						}
 					}
-				} 
+				}
 			}
 		}
 
@@ -831,10 +839,7 @@
 				userType, start_Price, end_Price, startTkRate, endTkRate, sort);
 
 		List<TaoBaoGoodsBriefExtra> listExtra = new ArrayList<TaoBaoGoodsBriefExtra>();
-		Map<String, String> map = manageService.convertMap();
-		String proportion = map.get("hongbao_goods_proportion");
-		String fcRate = map.get("hongbao_fc_ratio");
-
+		BigDecimal proportion = manageService.getFanLiRate();
 		/* 閬嶅巻鍒楄〃鏁版嵁 */
 		if (listQuery != null && listQuery.size() > 0) {
 			for (QualityFactory selectionGoods : listQuery) {
@@ -860,11 +865,12 @@
 					taoBaoGoodsBrief.setPictUrl(TbImgUtil.getTBSize320Img(pictUrl));
 				}
 
-				listExtra.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion, fcRate, null));
+				listExtra.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), null));
 			}
 		}
 
-		long count = qualityGoodsService.countRecommendBykey(key, hasQuan, userType, start_Price, end_Price, startTkRate, endTkRate);
+		long count = qualityGoodsService.countRecommendBykey(key, hasQuan, userType, start_Price, end_Price,
+				startTkRate, endTkRate);
 
 		// 璁剧疆鍙戣揣鍦板潃
 		TaoBaoSearchNav nav = new TaoBaoSearchNav();
@@ -904,33 +910,34 @@
 
 	/**
 	 * 璁剧疆鏌ヨ浣i噾姣斾緥鑼冨洿
+	 * 
 	 * @param i
 	 * @param sf
 	 */
 	public void setSearchTkRate(int i, SearchFilter sf) {
 		// 鑾峰彇瀵瑰簲鍙傛暟
 		String value = configService.get("tkRate_range");
-		
+
 		if (!StringUtil.isNullOrEmpty(value)) {
-			
+
 			JSONArray tkRatearray = JSONArray.fromObject(value);
-			
+
 			if (tkRatearray != null) {
-				
+
 				String start = tkRatearray.optJSONObject(i).optString("start");
-				
+
 				if (!StringUtil.isNullOrEmpty(start)) {
 					int tkRate = (int) (Float.parseFloat(start) * 100);
 					sf.setStartTkRate(tkRate);
 				}
-				
+
 				String end = tkRatearray.optJSONObject(i).optString("end");
 				if (!StringUtil.isNullOrEmpty(end)) {
 					int tkRate = (int) (Float.parseFloat(end) * 100);
 					sf.setEndTkRate(tkRate);
 				}
 			}
-			
+
 		}
 	}
 }

--
Gitblit v1.8.0