From ad9fbd2c18f280ef9bba47f28353d367cf2d94e8 Mon Sep 17 00:00:00 2001
From: yujian <yujian>
Date: 星期二, 14 五月 2019 11:28:03 +0800
Subject: [PATCH] Merge branch 'div_12'

---
 fanli/src/main/java/com/yeshi/fanli/controller/h5/H5RecommendController.java |  307 ++++++++++++++++++++++----------------------------
 1 files changed, 136 insertions(+), 171 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/h5/H5RecommendController.java b/fanli/src/main/java/com/yeshi/fanli/controller/h5/H5RecommendController.java
index 59e7ea4..a41c2ea 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/h5/H5RecommendController.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/h5/H5RecommendController.java
@@ -4,54 +4,49 @@
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 
 import javax.annotation.Resource;
 
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
+import org.yeshi.utils.JsonUtil;
+import org.yeshi.utils.taobao.TbImgUtil;
 
 import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
 import com.yeshi.fanli.entity.accept.AcceptData;
 import com.yeshi.fanli.entity.bus.recommend.RecommendBanner;
-import com.yeshi.fanli.entity.bus.recommend.RecommendSection;
-import com.yeshi.fanli.entity.bus.recommend.RecommendSectionGoods;
 import com.yeshi.fanli.entity.bus.share.UserShareGoodsHistory;
 import com.yeshi.fanli.entity.bus.su.recommend.SuperRecommendBanner;
-import com.yeshi.fanli.entity.bus.su.recommend.SuperRecommendSection;
-import com.yeshi.fanli.entity.system.System;
+import com.yeshi.fanli.entity.system.BusinessSystem;
+import com.yeshi.fanli.entity.taobao.ClientTBPid;
 import com.yeshi.fanli.entity.taobao.PidUser;
-import com.yeshi.fanli.entity.taobao.TBPid;
 import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
 import com.yeshi.fanli.entity.taobao.TaoBaoLink;
 import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig;
 import com.yeshi.fanli.entity.taobao.TaoKeAppInfo;
+import com.yeshi.fanli.exception.ShareGoodsException;
+import com.yeshi.fanli.exception.share.UserShareGoodsRecordException;
 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.SystemConfigService;
-import com.yeshi.fanli.service.inter.config.SystemService;
-import com.yeshi.fanli.service.inter.goods.CollectionGoodsService;
-import com.yeshi.fanli.service.inter.goods.RecommendSectionGoodsService;
 import com.yeshi.fanli.service.inter.goods.ShareGoodsService;
 import com.yeshi.fanli.service.inter.goods.SuperRecommendBannerService;
-import com.yeshi.fanli.service.inter.goods.SuperRecommendSectionService;
 import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService;
 import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
 import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
-import com.yeshi.fanli.service.inter.user.ScanHistoryService;
 import com.yeshi.fanli.service.inter.user.TBPidService;
+import com.yeshi.fanli.service.inter.user.UserShareGoodsGroupService;
 import com.yeshi.fanli.util.AESUtil;
 import com.yeshi.fanli.util.Constant;
+import com.yeshi.fanli.util.MoneyBigDecimalUtil;
 import com.yeshi.fanli.util.RedisManager;
 import com.yeshi.fanli.util.StringUtil;
-import com.yeshi.fanli.util.Utils;
+import com.yeshi.fanli.util.ThreadUtil;
 import com.yeshi.fanli.util.taobao.TaoBaoUtil;
 import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
-import org.yeshi.utils.JsonUtil;
 
-import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
 
 @Controller
@@ -65,22 +60,13 @@
 	private SuperRecommendBannerService superRecommendBannerService;
 
 	@Resource
-	private SuperRecommendSectionService superRecommendSectionService;
-
-	@Resource
 	private HongBaoManageService hongBaoManageService;
-
-	@Resource
-	private RecommendSectionGoodsService recommendSectionGoodsService;
 
 	@Resource
 	private RedisManager redisManager;
 
 	@Resource
-	private SystemService systemService;
-
-	@Resource
-	private CollectionGoodsService collectionGoodsService;
+	private BusinessSystemService businessSystemService;
 
 	@Resource
 	private ConfigService configService;
@@ -92,9 +78,6 @@
 	private TaoBaoGoodsBriefService taoBaoGoodsBriefService;
 
 	@Resource
-	private ScanHistoryService scanHistoryService;
-
-	@Resource
 	private TBPidService tbPidService;
 
 	@Resource
@@ -102,6 +85,9 @@
 
 	@Resource
 	private TaoBaoUnionConfigService taoBaoUnionConfigService;
+
+	@Resource
+	private UserShareGoodsGroupService userShareGoodsGroupService;
 
 	/**
 	 * 
@@ -114,7 +100,8 @@
 	@RequestMapping(value = "getRecommenBanner", method = RequestMethod.GET)
 	public void getRecommendBanner(AcceptData acceptData, String callback, PrintWriter out) {
 
-		System system = systemService.getSystem("WEB", Constant.systemCommonConfig.getH5PackageName());
+		BusinessSystem system = businessSystemService.getBusinessSystem("WEB",
+				Constant.systemCommonConfig.getH5PackageName());
 		JSONObject json = new JSONObject();
 		if (system == null) {
 			out.print(JsonUtil.loadFalseResult(1, H5ControllerUtil.NOSYSTEM));
@@ -157,97 +144,6 @@
 
 	/**
 	 * 
-	 * 鏂规硶璇存槑: 鎺ㄨ崘鍟嗗搧鍒楄〃
-	 * 
-	 * @author mawurui createTime 2018骞�5鏈�11鏃� 涓婂崍11:26:03
-	 * @param acceptData
-	 * @param index
-	 * @param out
-	 */
-	@RequestMapping(value = "getRecommendSection", method = RequestMethod.GET)
-	public void getRecommendSection(AcceptData acceptData, String callback, PrintWriter out) {
-
-		System system = systemService.getSystem("WEB", Constant.systemCommonConfig.getH5PackageName());
-		if (system == null) {
-			out.print(JsonUtil.loadFalseResult(1, H5ControllerUtil.NOSYSTEM));
-			return;
-		}
-		List<SuperRecommendSection> superRecommendSectionList = superRecommendSectionService
-				.getSuperRecommendSectionBySystemId(system.getId());
-		List<RecommendSection> recommendSectionList = null;
-		for (SuperRecommendSection superRecommendSection : superRecommendSectionList) {
-			if (recommendSectionList == null) {
-				recommendSectionList = new ArrayList<RecommendSection>();
-			}
-			RecommendSection recommendSection = superRecommendSection.getRecommendSection();
-
-			// 鏆傛椂鏀瑰彉娣樼壒浠风殑璺宠浆鍦板潃
-			if (system.getId() == 7) {
-				recommendSection.setJumpUrl(recommendSection.getJumpUrl().replace("column.html", "column_ttj.html"));
-			}
-
-			recommendSectionList.add(recommendSection);
-		}
-		if (recommendSectionList == null) {
-			out.print(JsonUtil.loadFalseResult(1, H5ControllerUtil.NODATA));
-			return;
-		}
-		Utils.sort(recommendSectionList);
-		int size = recommendSectionList.size();
-
-		List<RecommendSectionGoods> recommendSectionGoodsList = null;
-		JSONObject data = new JSONObject();
-		data.put("count", size);
-		JSONArray dataArr = new JSONArray();
-		JSONObject validData = null;
-		Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
-				.excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
-		Map<String, String> convertMap = hongBaoManageService.convertMap();
-		String proportion = convertMap.get("hongbao_goods_proportion");
-		String fcRate = convertMap.get("hongbao_fc_ratio");
-
-		Map<Long, List<RecommendSectionGoods>> map = recommendSectionGoodsService.getAllSectionGoodsMap();
-		for (int i = 0; i < size; i++) {
-			validData = new JSONObject();
-			RecommendSection recommendSection = recommendSectionList.get(i);
-			recommendSectionGoodsList = map.get(recommendSection.getId());
-			if (recommendSectionGoodsList == null) {
-				continue;
-			}
-			Utils.sort(recommendSectionGoodsList);
-			if (recommendSection.getCounts() < recommendSectionGoodsList.size()) {
-				recommendSectionGoodsList = recommendSectionGoodsList.subList(0, recommendSection.getCounts());
-			}
-			validData.put("count", recommendSectionGoodsList.size());
-			validData.put("recommendSection", gson.toJson(recommendSection));
-
-			// 鏇挎崲TaoBaoGoodsBrief
-			JSONArray array = new JSONArray();
-			Gson gson2 = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
-			for (RecommendSectionGoods rss : recommendSectionGoodsList) {
-				JSONObject obj = JSONObject.fromObject(gson2.toJson(rss));
-				String json = gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(
-						gson2.fromJson(obj.optJSONObject("taoBaoGoodsBrief").toString(), TaoBaoGoodsBrief.class),
-						proportion, fcRate, ""));
-				obj.put("taoBaoGoodsBrief", json);
-				array.add(obj);
-			}
-
-			validData.put("recommendSectionGoodsList", array);
-			dataArr.add(validData);
-		}
-		data.put("data", dataArr);
-
-		String result = JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data));
-		if (Constant.IS_OUTNET)
-			redisManager.cacheCommonString("client-api-getRecommendSection", result, 3 * 60);
-
-		out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(result)));
-		return;
-	}
-
-	/**
-	 * 
 	 * 鏂规硶璇存槑: 鑾峰彇鍟嗗搧璇︽儏
 	 * 
 	 * @author mawurui createTime 2018骞�5鏈�11鏃� 涓婂崍11:37:02
@@ -266,87 +162,156 @@
 			out.print(JsonUtil.loadFalseResult(1, "璇蜂笂浼爄d"));
 			return;
 		}
-
-		List<TaoBaoUnionConfig> configList = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_SHARE_GOODS);
-		UserShareGoodsHistory shareHistory = null;
-		String pid = configList.get(0).getDefaultPid();
 		if (!StringUtil.isNullOrEmpty(uid)) {
-			try {
-				uid = AESUtil.decrypt(uid, Constant.UIDAESKEY);
-				TBPid tbPid = tbPidService.getTBPid(Long.parseLong(uid), PidUser.TYPE_SHARE_GOODS);
-				if (tbPid != null)
-					pid = tbPid.getPid();
-
-				// 鏌ヨ璇ID,UID,鍟嗗搧ID涓嬫槸鍚︽湁杩欎釜鍟嗗搧鐨勪俊鎭�
-				// 鍒ゆ柇杩欎釜浜у搧鏄惁浠嶢PP涓垎浜�屾潵
-				try {
-					shareHistory = shareGoodsService.getShareGoodsHistoryDetail(Long.parseLong(uid),
-							Long.parseLong(id));
-				} catch (Exception e) {
-
-				}
-
-			} catch (Exception e) {
-
-			}
+			uid = AESUtil.decrypt(uid, Constant.UIDAESKEY);
 		}
 
 		TaoBaoGoodsBrief goods = null;
-		try {
+		String token = null;
+		if (!StringUtil.isNullOrEmpty(uid)) {
+			// 鏌ヨ鏄惁鏈夊垎浜褰�
+			UserShareGoodsHistory shareHistory = null;
+			try {
+				shareHistory = shareGoodsService.getShareGoodsHistoryDetail(Long.parseLong(uid), Long.parseLong(id));
+			} catch (NumberFormatException e) {
+				e.printStackTrace();
+			} catch (ShareGoodsException e) {
+				e.printStackTrace();
+			}
+
+			if (shareHistory != null) {// 鏈夊垎浜褰�
+				token = shareHistory.getTkCode();
+				goods = redisManager.getTaoBaoGoodsTemp(Long.parseLong(id));
+				if (goods == null)
+					try {
+						goods = TaoKeApiUtil.searchGoodsDetail(Long.parseLong(id));
+					} catch (NumberFormatException e) {
+						e.printStackTrace();
+					} catch (TaobaoGoodsDownException e) {
+						e.printStackTrace();
+					}
+
+			} else {// 娌℃湁鍒嗕韩璁板綍锛岄渶瑕佺洿鎺ュ垎浜�
+				List<TaoBaoUnionConfig> configList = taoBaoUnionConfigService
+						.getConfigByTypeCache(PidUser.TYPE_SHARE_GOODS);
+				String pid = null;
+				ClientTBPid tbPid = tbPidService.getSharePid();
+				if (tbPid != null)
+					pid = tbPid.getPid();
+				else {
+					pid = configList.get(0).getDefaultPid();
+				}
+
+				// 鑾峰彇
+				TaoKeAppInfo app = new TaoKeAppInfo();
+				app.setAdzoneId(pid.split("_")[3]);
+				app.setAppKey(configList.get(0).getAppKey());
+				app.setAppSecret(configList.get(0).getAppSecret());
+				app.setPid(pid);
+				try {
+					goods = TaoKeApiUtil.searchGoodsDetail(Long.parseLong(id), app);
+				} catch (NumberFormatException e) {
+					e.printStackTrace();
+				} catch (TaobaoGoodsDownException e) {
+					e.printStackTrace();
+				}
+				if (goods != null) {
+					String url = goods.getAuctionUrl();
+					if (!StringUtil.isNullOrEmpty(goods.getCouponLink())) {
+						url = goods.getCouponLink();
+					}
+					token = TaoKeApiUtil.getTKToken(goods.getPictUrl(), goods.getTitle(), url);
+				}
+			}
+
+		} else {
+			List<TaoBaoUnionConfig> configList = taoBaoUnionConfigService
+					.getConfigByTypeCache(PidUser.TYPE_SHARE_GOODS);
+			String pid = tbPidService.getSharePid().getPid();
 			TaoKeAppInfo app = new TaoKeAppInfo();
 			app.setAdzoneId(pid.split("_")[3]);
 			app.setAppKey(configList.get(0).getAppKey());
 			app.setAppSecret(configList.get(0).getAppSecret());
 			app.setPid(pid);
-			goods = TaoKeApiUtil.searchGoodsDetail(Long.parseLong(id), app);
-		} catch (NumberFormatException e) {
-			e.printStackTrace();
-		} catch (TaobaoGoodsDownException e) {
-			e.printStackTrace();
+			try {
+				goods = TaoKeApiUtil.searchGoodsDetail(Long.parseLong(id), app);
+			} catch (NumberFormatException e) {
+				e.printStackTrace();
+			} catch (TaobaoGoodsDownException e) {
+				e.printStackTrace();
+			}
+			if (goods != null) {
+				String url = goods.getAuctionUrl();
+				if (!StringUtil.isNullOrEmpty(goods.getCouponLink())) {
+					url = goods.getCouponLink();
+				}
+				if (!url.contains("uland.taobao.com") && !url.contains("s.click.taobao.com")) {
+					TaoBaoGoodsBrief linkInfo = TaoKeApiUtil.specialConvertCoupon(Long.parseLong(id), app);
+					url = linkInfo.getCouponLink();
+					if (StringUtil.isNullOrEmpty(url))
+						url = linkInfo.getAuctionUrl();
+				}
+
+				token = TaoKeApiUtil.getTKToken(goods.getPictUrl(), goods.getTitle(), url);
+			}
 		}
+
 		if (goods == null) {
 			out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("鍟嗗搧淇℃伅鑾峰彇澶辫触")));
 			return;
 		}
 
-		// 鍒稿悗浠�
-		BigDecimal afterCouponPrice = TaoBaoUtil.getAfterUseCouplePrice(goods);
-		TaoBaoLink link = null;
-
-		if (shareHistory != null) {
-			link = new TaoBaoLink();
-			link.setTaoToken(shareHistory.getTkCode());
-		} else {
-			link = new TaoBaoLink();
-			try {
-				String url = goods.getCouponLink();
-				if (StringUtil.isNullOrEmpty(url))
-					url = goods.getAuctionUrl();
-				String tbk = TaoKeApiUtil.getTKToken(goods.getPictUrl(), goods.getTitle(), url);
-				link.setTaoToken(tbk);
-			} catch (Exception e) {
-				link = null;
-			}
-		}
-		if (link == null) {
-			out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("娣樺彛浠ょ敓鎴愬け璐�")));
+		if (StringUtil.isNullOrEmpty(token)) {
+			out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("鍙d护鐢熸垚澶辫触")));
 			return;
 		}
+
+		// 鍒稿悗浠�
+		BigDecimal afterCouponPrice = TaoBaoUtil.getAfterUseCouplePrice(goods);
+		TaoBaoLink link = new TaoBaoLink();
+		link.setTaoToken(token);
 
 		JSONObject data = new JSONObject();
 		data.put("title", goods.getTitle());
 		if (goods.getImgList() == null)
 			goods.setImgList(new ArrayList<>());
-		goods.getImgList().add(0, goods.getPictUrl());
+		goods.getImgList().add(0, TbImgUtil.getTBSizeImg(goods.getPictUrl(), 300));
 		data.put("imgs", goods.getImgList());
+		data.put("couponPrice", afterCouponPrice);
+		// 鑰佺増鏈吋瀹�
 		data.put("quanPrice", afterCouponPrice);
 		data.put("zkPrice", goods.getZkPrice());
 		data.put("shareContent", "闀挎寜澶嶅埗鏈鏂囧瓧锛屾墦寮�銆愭墜鏈烘窐瀹濄�戝嵆鍙鍙栥�愮壒鍒紭鎯犲埜銆戣喘涔颁笅鍗曪紝");
 		data.put("token", link.getTaoToken());
-		data.put("quan", !StringUtil.isNullOrEmpty(goods.getCouponInfo()));
 		data.put("reservePrice", goods.getReservePrice());
 		data.put("shopType", goods.getUserType() == 1 ? 2 : 1);
+		if (!StringUtil.isNullOrEmpty(goods.getCouponInfo()) && !"鏃�".equalsIgnoreCase(goods.getCouponInfo())) {
+			data.put("couponAmount", MoneyBigDecimalUtil.getWithNoZera(goods.getCouponAmount()));
+			data.put("coupon", true);
+			// 鑰佺増鏈吋瀹�
+			data.put("quan", true);
+		} else {
+			data.put("coupon", false);
+			// 鑰佺増鏈吋瀹�
+			data.put("quan", true);
+		}
 		out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data)));
+
+		final String tempUid = uid;
+		ThreadUtil.run(new Runnable() {
+
+			@Override
+			public void run() {
+				try {
+					if (!StringUtil.isNullOrEmpty(tempUid))
+						userShareGoodsGroupService.updateBrowseRecord(Long.parseLong(tempUid), Long.parseLong(id), 1);
+				} catch (NumberFormatException e) {
+					e.printStackTrace();
+				} catch (UserShareGoodsRecordException e) {
+					e.printStackTrace();
+				}
+			}
+		});
 		return;
 	}
 }

--
Gitblit v1.8.0