From 98b1a0affd69bbe63223c21fdd2c404e8bedfccb Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 20 五月 2020 17:25:08 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/div' into 2.1.2

---
 fanli/src/main/java/com/yeshi/fanli/controller/h5/H5RecommendController.java |  247 ++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 220 insertions(+), 27 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 ea63ae3..06c96ed 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
@@ -3,6 +3,7 @@
 import java.io.PrintWriter;
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 import javax.annotation.Resource;
@@ -14,38 +15,50 @@
 import org.yeshi.utils.taobao.TbImgUtil;
 
 import com.google.gson.Gson;
+import com.yeshi.fanli.dto.jd.JDCouponInfo;
+import com.yeshi.fanli.dto.jd.JDPingouInfo;
+import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
 import com.yeshi.fanli.entity.accept.AcceptData;
 import com.yeshi.fanli.entity.bus.recommend.RecommendBanner;
 import com.yeshi.fanli.entity.bus.share.UserShareGoodsHistory;
 import com.yeshi.fanli.entity.bus.su.recommend.SuperRecommendBanner;
 import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinRecord;
+import com.yeshi.fanli.entity.jd.JDGoods;
 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.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.ShareGoodsException;
 import com.yeshi.fanli.exception.share.UserShareGoodsRecordException;
 import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
+import com.yeshi.fanli.log.LogHelper;
+import com.yeshi.fanli.log.LogManager;
+import com.yeshi.fanli.log.LogType;
 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.goods.ShareGoodsService;
 import com.yeshi.fanli.service.inter.goods.SuperRecommendBannerService;
 import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService;
-import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
+import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
 import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
 import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinRecordService;
 import com.yeshi.fanli.service.inter.user.TBPidService;
 import com.yeshi.fanli.service.inter.user.UserShareGoodsGroupService;
+import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService;
 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.TaoBaoConstant;
 import com.yeshi.fanli.util.ThreadUtil;
+import com.yeshi.fanli.util.jd.JDApiUtil;
+import com.yeshi.fanli.util.jd.JDUtil;
+import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil;
+import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil;
 import com.yeshi.fanli.util.taobao.TaoBaoUtil;
 import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
 
@@ -90,10 +103,12 @@
 
 	@Resource
 	private UserShareGoodsGroupService userShareGoodsGroupService;
-	
+
 	@Resource
 	private UserTaoLiJinRecordService userTaoLiJinRecordService;
-	
+
+	@Resource
+	private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService;
 
 	/**
 	 * 
@@ -162,11 +177,11 @@
 			out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("鍟嗗搧淇℃伅鑾峰彇澶辫触")));
 			return;
 		}
-		
+
 		Long auctionId = record.getGoodsId();
 		String tljLink = record.getSendUrl();
-		BigDecimal tljMoney= record.getPerFace();
-		
+		BigDecimal tljMoney = record.getPerFace();
+
 		TaoBaoGoodsBrief goods = null;
 		try {
 			goods = redisManager.getTaoBaoGoodsBrief(auctionId);
@@ -199,7 +214,7 @@
 		data.put("quanPrice", afterCouponPrice);
 		data.put("zkPrice", goods.getZkPrice());
 		data.put("shareContent", "闀挎寜澶嶅埗鏈鏂囧瓧锛屾墦寮�銆愭墜鏈烘窐瀹濄�戝嵆鍙鍙栥�愮壒鍒紭鎯犲埜銆戣喘涔颁笅鍗曪紝");
-		data.put("token", link.getTaoToken());
+		data.put("token", TaoBaoUtil.filterTaoToken(link.getTaoToken()));
 		data.put("reservePrice", goods.getReservePrice());
 		data.put("shopType", goods.getUserType() == 1 ? 2 : 1);
 		if (!StringUtil.isNullOrEmpty(goods.getCouponInfo()) && !"鏃�".equalsIgnoreCase(goods.getCouponInfo())) {
@@ -208,9 +223,9 @@
 		} else {
 			data.put("coupon", false);
 		}
-		
+
 		data.put("tljMoney", tljMoney);
-		
+
 		out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data)));
 	}
 
@@ -229,6 +244,12 @@
 	@RequestMapping(value = "getGoodsDetail", method = RequestMethod.GET)
 	public void getGoodsDetail(final AcceptData acceptData, final String id, String tid, String uid, String callback,
 			PrintWriter out) {
+		if (!StringUtil.isNullOrEmpty(uid))
+			uid = uid.replace(" ", "+");
+
+		LogManager.getLogger(LogType.taobaoTrade)
+				.info(String.format("娣樺疂鍒嗕韩鍟嗗搧H5璁块棶:\n  鍟嗗搧ID:%s \n  鍘熷鐢ㄦ埛ID:%s \n", id, uid));
+		
 		long begin = java.lang.System.currentTimeMillis();
 		if (StringUtil.isNullOrEmpty(id)) {
 			out.print(JsonUtil.loadFalseResult(1, "璇蜂笂浼爄d"));
@@ -272,22 +293,14 @@
 					}
 
 			} 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();
-				}
-
+				LogHelper.test("娌℃湁鍒嗕韩璁板綍:uid:" + uid + "  actionid:" + id);
 				// 鑾峰彇
 				TaoKeAppInfo app = new TaoKeAppInfo();
-				app.setAdzoneId(pid.split("_")[3]);
-				app.setAppKey(configList.get(0).getAppKey());
-				app.setAppSecret(configList.get(0).getAppSecret());
-				app.setPid(pid);
+				app.setPid(TaoBaoConstant.TAOBAO_RELATION_PID_DEFAULT);
+				app.setAdzoneId(app.getPid().split("_")[3]);
+				app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY);
+				app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
+
 				try {
 					goods = TaoKeApiUtil.searchGoodsDetail(Long.parseLong(id), app);
 				} catch (NumberFormatException e) {
@@ -300,6 +313,9 @@
 					if (!StringUtil.isNullOrEmpty(goods.getCouponLink())) {
 						url = goods.getCouponLink();
 					}
+					String relationId = userExtraTaoBaoInfoService.getRelationIdByUid(Long.parseLong(uid));
+					if (!StringUtil.isNullOrEmpty(relationId))
+						url += "&relationId=" + relationId;
 					token = TaoKeApiUtil.getTKToken(goods.getPictUrl(), goods.getTitle(), url);
 				}
 			}
@@ -362,7 +378,7 @@
 		data.put("quanPrice", afterCouponPrice);
 		data.put("zkPrice", goods.getZkPrice());
 		data.put("shareContent", "闀挎寜澶嶅埗鏈鏂囧瓧锛屾墦寮�銆愭墜鏈烘窐瀹濄�戝嵆鍙鍙栥�愮壒鍒紭鎯犲埜銆戣喘涔颁笅鍗曪紝");
-		data.put("token", link.getTaoToken());
+		data.put("token", TaoBaoUtil.filterTaoToken(link.getTaoToken()));
 		data.put("reservePrice", goods.getReservePrice());
 		data.put("shopType", goods.getUserType() == 1 ? 2 : 1);
 		if (!StringUtil.isNullOrEmpty(goods.getCouponInfo()) && !"鏃�".equalsIgnoreCase(goods.getCouponInfo())) {
@@ -375,7 +391,7 @@
 			// 鑰佺増鏈吋瀹�
 			data.put("quan", true);
 		}
-		
+
 		out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data)));
 
 		final String tempUid = uid;
@@ -395,4 +411,181 @@
 		});
 		return;
 	}
+
+	/**
+	 * 浜笢鍒嗕韩鍟嗗搧淇℃伅
+	 * 
+	 * @param acceptData
+	 * @param id
+	 * @param uid
+	 * @param callback
+	 * @param out
+	 */
+	@RequestMapping(value = "getJDGoodsDetail")
+	public void getJDGoodsDetail(final AcceptData acceptData, final Long id, String uid, String callback,
+			PrintWriter out) {
+		if (id == null) {
+			out.print(JsonUtil.loadFalseResult(1, "璇蜂笂浼爄d"));
+			return;
+		}
+
+		if (!StringUtil.isNullOrEmpty(uid)) {
+			uid = AESUtil.decrypt(uid, Constant.UIDAESKEY);
+		}
+
+		JDGoods jdGoods = JDApiUtil.queryGoodsDetail(id);
+		if (jdGoods == null) {
+			jdGoods = JDApiUtil.getGoodsDetail(id);
+		}
+
+		if (jdGoods == null) {
+			out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("鍟嗗搧淇℃伅鑾峰彇澶辫触")));
+			return;
+		}
+
+		List<String> imageList = jdGoods.getImageList();
+		if (imageList == null) {
+			imageList = new ArrayList<>();
+			imageList.add(jdGoods.getPicUrl());
+		}
+
+		boolean hasCoupon = false;
+		String couponUrl = null;
+		BigDecimal discount = new BigDecimal(0);
+		JDCouponInfo couponInfo = JDUtil.getShowCouponInfo(jdGoods);
+		if (couponInfo != null) {
+			hasCoupon = true;
+			discount = couponInfo.getDiscount();
+			couponUrl = couponInfo.getLink();
+		}
+
+		boolean jdzy = false;
+		String owner = jdGoods.getOwner();
+		if (!StringUtil.isNullOrEmpty(owner) && "g".equalsIgnoreCase(owner)) {
+			jdzy = true;
+		}
+
+		String materialId = "https://item.jd.com/" + id + ".html";
+		String jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_SHARE + "",
+				uid);
+
+		int priceType = 1;
+		BigDecimal price = jdGoods.getPrice();
+		;
+		JDPingouInfo pinGouInfo = jdGoods.getPinGouInfo();
+		if (pinGouInfo != null) {
+			priceType = 2; // 鎷艰喘浠�
+			price = pinGouInfo.getPingouPrice();
+		}
+
+		JSONObject data = new JSONObject();
+		data.put("jdzy", jdzy);
+		data.put("imgs", imageList);
+		data.put("title", jdGoods.getSkuName());
+		data.put("zkPrice", price);
+		data.put("priceType", priceType);
+		data.put("coupon", hasCoupon);
+		data.put("couponAmount", discount);
+		data.put("couponPrice", JDUtil.getQuanPrice(jdGoods));
+		data.put("helpLink", configService.get("jd_share_h5_help_link"));
+		data.put("jumpLink", jumpLink);
+		JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
+
+		final String tempUid = uid;
+		ThreadUtil.run(new Runnable() {
+			@Override
+			public void run() {
+				try {
+					if (!StringUtil.isNullOrEmpty(tempUid))
+						userShareGoodsGroupService.updateBrowseNum(Long.parseLong(tempUid), id,
+								Constant.SOURCE_TYPE_JD);
+				} catch (NumberFormatException e) {
+					e.printStackTrace();
+				} catch (UserShareGoodsRecordException e) {
+					e.printStackTrace();
+				}
+			}
+		});
+		return;
+	}
+
+	/**
+	 * 鎷煎澶氬垎浜晢鍝佽鎯�
+	 * 
+	 * @param acceptData
+	 * @param id
+	 * @param uid
+	 * @param callback
+	 * @param out
+	 */
+	@RequestMapping(value = "getPDDGoodsDetail")
+	public void getPDDGoodsDetail(final AcceptData acceptData, final Long id, String uid, String callback,
+			PrintWriter out) {
+		if (id == null) {
+			out.print(JsonUtil.loadFalseResult(1, "璇蜂笂浼爄d"));
+			return;
+		}
+
+		if (!StringUtil.isNullOrEmpty(uid)) {
+			uid = AESUtil.decrypt(uid, Constant.UIDAESKEY);
+		}
+
+		PDDGoodsDetail pddGoods = PinDuoDuoApiUtil.getGoodsDetail(id);
+		if (pddGoods == null) {
+			out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("鍟嗗搧淇℃伅鑾峰彇澶辫触")));
+			return;
+		}
+
+		List<String> imageList = null;
+		String[] goodsGalleryUrls = pddGoods.getGoodsGalleryUrls();
+		if (goodsGalleryUrls != null) {
+			imageList = Arrays.asList(goodsGalleryUrls);
+		}
+		if (imageList == null) {
+			imageList = new ArrayList<>();
+			String goodsImageUrl = pddGoods.getGoodsImageUrl();
+			if (!StringUtil.isNullOrEmpty(goodsImageUrl)) {
+				imageList.add(goodsImageUrl);
+			}
+		}
+
+		BigDecimal hundred = new BigDecimal(100);
+		Boolean hasCoupon = pddGoods.getHasCoupon();
+		BigDecimal amount = new BigDecimal(0);
+		if (hasCoupon != null && hasCoupon) {
+			amount = MoneyBigDecimalUtil.div(new BigDecimal(pddGoods.getCouponDiscount()), hundred).setScale(2);
+		} else {
+			hasCoupon = false;
+		}
+
+		String jumpLink = PinDuoDuoApiUtil.getPromotionUrl(id, PinDuoDuoApiUtil.PID_SHARE + "", uid);
+
+		JSONObject data = new JSONObject();
+		data.put("imgs", imageList);
+		data.put("title", pddGoods.getGoodsName());
+		data.put("zkPrice", MoneyBigDecimalUtil.div(new BigDecimal(pddGoods.getMinGroupPrice()), hundred).setScale(2));
+		data.put("coupon", hasCoupon);
+		data.put("couponAmount", amount);
+		data.put("couponPrice", PinDuoDuoUtil.getQuanPrice(pddGoods));
+		data.put("helpLink", configService.get("pdd_share_h5_help_link"));
+		data.put("jumpLink", jumpLink);
+		JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
+
+		final String tempUid = uid;
+		ThreadUtil.run(new Runnable() {
+			@Override
+			public void run() {
+				try {
+					if (!StringUtil.isNullOrEmpty(tempUid))
+						userShareGoodsGroupService.updateBrowseNum(Long.parseLong(tempUid), id,
+								Constant.SOURCE_TYPE_PDD);
+				} catch (NumberFormatException e) {
+					e.printStackTrace();
+				} catch (UserShareGoodsRecordException e) {
+					e.printStackTrace();
+				}
+			}
+		});
+		return;
+	}
 }

--
Gitblit v1.8.0