From 9a24f2802a3d6fe3e82c05e52f2880d65ad04dcf Mon Sep 17 00:00:00 2001
From: yujian <yujian>
Date: 星期一, 29 四月 2019 08:59:47 +0800
Subject: [PATCH] Merge branch 'div_develop' into master_develop

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/goods/ShareGoodsServiceImpl.java |  244 +++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 215 insertions(+), 29 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/goods/ShareGoodsServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/goods/ShareGoodsServiceImpl.java
index 3fd8bf6..19fb9e8 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/goods/ShareGoodsServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/goods/ShareGoodsServiceImpl.java
@@ -12,6 +12,12 @@
 import javax.annotation.Resource;
 
 import org.springframework.stereotype.Service;
+import org.yeshi.utils.HttpUtil;
+import org.yeshi.utils.JsonUtil;
+import org.yeshi.utils.QRCodeUtil;
+import org.yeshi.utils.entity.FileUploadResult;
+import org.yeshi.utils.exception.HttpException;
+import org.yeshi.utils.tencentcloud.COSManager;
 
 import com.yeshi.fanli.dao.mybatis.HongBaoManageMapper;
 import com.yeshi.fanli.dao.mybatis.UserInfoMapper;
@@ -29,24 +35,22 @@
 import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
 import com.yeshi.fanli.log.LogHelper;
 import com.yeshi.fanli.service.inter.config.ConfigService;
+import com.yeshi.fanli.service.inter.goods.CommonGoodsService;
 import com.yeshi.fanli.service.inter.goods.ShareGoodsService;
+import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
 import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
 import com.yeshi.fanli.service.inter.user.TBPidService;
 import com.yeshi.fanli.service.inter.user.UserAccountService;
+import com.yeshi.fanli.service.inter.user.UserShareGoodsRecordService;
 import com.yeshi.fanli.util.AESUtil;
 import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.FileUtil;
 import com.yeshi.fanli.util.ImageUtil;
 import com.yeshi.fanli.util.RedisManager;
 import com.yeshi.fanli.util.StringUtil;
+import com.yeshi.fanli.util.TaoBaoConstant;
 import com.yeshi.fanli.util.taobao.TaoBaoUtil;
 import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
-import org.yeshi.utils.HttpUtil;
-import org.yeshi.utils.JsonUtil;
-import org.yeshi.utils.QRCodeUtil;
-import org.yeshi.utils.entity.FileUploadResult;
-import org.yeshi.utils.exception.HttpException;
-import org.yeshi.utils.tencentcloud.COSManager;
 
 @Service
 public class ShareGoodsServiceImpl implements ShareGoodsService {
@@ -78,6 +82,15 @@
 	@Resource
 	private UserAccountService userAccountService;
 
+	@Resource
+	private HongBaoManageService hongBaoManageService;
+
+	@Resource
+	private UserShareGoodsRecordService userShareGoodsRecordService;
+
+	@Resource
+	private CommonGoodsService commonGoodsService;
+
 	@Override
 	public void addShareGoodsHistory(UserShareGoodsHistory history) {
 		UserShareGoodsHistory userShareGoodsHistory = userShareGoodsHistoryMapper
@@ -89,6 +102,7 @@
 			userShareGoodsHistoryMapper.updateByPrimaryKeySelective(userShareGoodsHistory);
 		} else
 			userShareGoodsHistoryMapper.insertSelective(history);
+
 	}
 
 	@Override
@@ -121,12 +135,14 @@
 
 		// 娌℃湁鑾峰彇鍒拌浆杩囬摼鐨勫晢鍝佽鎯�
 		if (StringUtil.isNullOrEmpty(goods.getCouponLink()) && !goods.getAuctionUrl().contains("s.click.taobao.com")) {
-			TaoBaoLink taoBaoLink = TaoBaoUtil.getTbLinkForShare(auctionId, tbPid.getPid(), taoBaoUnionConfig);
+			TaoBaoGoodsBrief taoBaoLink = TaoKeApiUtil.specialConvertCoupon(auctionId, info); // TaoBaoUtil.getTbLinkForShare(auctionId,
+																								// tbPid.getPid(),
+																								// taoBaoUnionConfig);
 			if (taoBaoLink == null) {
 				throw new ShareGoodsException(201, "杞摼澶辫触");
 			}
 			goods.setCouponLink(taoBaoLink.getCouponLink());
-			goods.setAuctionUrl(taoBaoLink.getClickUrl());
+			goods.setAuctionUrl(taoBaoLink.getAuctionUrl());
 		}
 		return addShareGoodsHistory(uid, goods);
 	}
@@ -136,7 +152,8 @@
 		if (StringUtil.isNullOrEmpty(goods.getCouponLink()) && StringUtil.isNullOrEmpty(goods.getAuctionUrl())) {
 			throw new ShareGoodsException(10, "杞摼澶辫触");
 		}
-		BigDecimal rate = new BigDecimal(hongBaoManageMapper.selectByKey("hongbao_goods_proportion").getValue());
+
+		BigDecimal rate = hongBaoManageService.getShareRate();
 
 		// 鍒涘缓娣樺彛浠�
 		TaoBaoLink tbLink = new TaoBaoLink(); // TaoBaoUtil.getTbLinkForShare(goods.getAuctionId(),
@@ -337,7 +354,7 @@
 	}
 
 	@Override
-	public TaoBaoLink getTaoBaoLinkForShare(Long uid, Long auctionId) throws ShareGoodsException {
+	public TaoBaoLink getTaoBaoLinkForShare(Long uid, Long auctionId, String relationId) throws ShareGoodsException {
 
 		if (uid == null || uid <= 0) {
 			throw new ShareGoodsException(1, "鐢ㄦ埛ID涓嶈兘涓虹┖");
@@ -347,19 +364,30 @@
 			throw new ShareGoodsException(2, "鍟嗗搧ID涓嶈兘涓虹┖");
 		}
 
-		TBPid tbPid = tbPidService.getTBPid(uid, PidUser.TYPE_SHARE_GOODS);
-		if (tbPid == null) {
-			throw new ShareGoodsException(3, "鑾峰彇鎺ㄥ箍浣嶅け璐�");
-		}
-		String appId = tbPid.getPid().split("_")[2];
-		String adzoneId = tbPid.getPid().split("_")[3];
-		TaoBaoUnionConfig taoBaoUnionConfig = taoBaoUnionConfigService.getConfigByAppIdCache(appId);
-
 		TaoKeAppInfo info = new TaoKeAppInfo();
-		info.setAdzoneId(adzoneId);
-		info.setAppKey(taoBaoUnionConfig.getAppKey());
-		info.setAppSecret(taoBaoUnionConfig.getAppSecret());
-		info.setPid(tbPid.getPid());
+
+		if (!StringUtil.isNullOrEmpty(relationId)) {
+			String pid = TaoBaoConstant.TAOBAO_RELATION_PID_DEFAULT;
+			String appId = pid.split("_")[2];
+			String adzoneId = pid.split("_")[3];
+			TaoBaoUnionConfig taoBaoUnionConfig = taoBaoUnionConfigService.getConfigByAppIdCache(appId);
+			info.setAdzoneId(adzoneId);
+			info.setAppKey(taoBaoUnionConfig.getAppKey());
+			info.setAppSecret(taoBaoUnionConfig.getAppSecret());
+			info.setPid(pid);
+		} else {
+			TBPid tbPid = tbPidService.getTBPid(uid, PidUser.TYPE_SHARE_GOODS);
+			if (tbPid == null) {
+				throw new ShareGoodsException(3, "鑾峰彇鎺ㄥ箍浣嶅け璐�");
+			}
+			String appId = tbPid.getPid().split("_")[2];
+			TaoBaoUnionConfig taoBaoUnionConfig = taoBaoUnionConfigService.getConfigByAppIdCache(appId);
+			String adzoneId = tbPid.getPid().split("_")[3];
+			info.setAdzoneId(adzoneId);
+			info.setAppKey(taoBaoUnionConfig.getAppKey());
+			info.setAppSecret(taoBaoUnionConfig.getAppSecret());
+			info.setPid(tbPid.getPid());
+		}
 		TaoBaoGoodsBrief goods = null;
 		try {
 			goods = TaoKeApiUtil.searchGoodsDetail(auctionId, info);
@@ -372,13 +400,24 @@
 		}
 
 		if (StringUtil.isNullOrEmpty(goods.getCouponLink()) && !goods.getAuctionUrl().contains("s.click.taobao.com")) {
-			TaoBaoLink taoBaoLink = TaoBaoUtil.getTbLinkForShare(auctionId, tbPid.getPid(), taoBaoUnionConfig);
+			TaoBaoUnionConfig taoBaoUnionConfig = taoBaoUnionConfigService
+					.getConfigByAppIdCache(info.getPid().split("_")[2]);
+			TaoBaoGoodsBrief taoBaoLink = TaoKeApiUtil.specialConvertCoupon(auctionId, info);
 			if (taoBaoLink == null) {
 				throw new ShareGoodsException(201, "鍟嗗搧杞摼澶辫触");
 			}
 			goods.setCouponLink(taoBaoLink.getCouponLink());
-			goods.setAuctionUrl(taoBaoLink.getClickUrl());
+			goods.setAuctionUrl(taoBaoLink.getAuctionUrl());
 		}
+
+		if (!StringUtil.isNullOrEmpty(relationId)) {
+			if (!StringUtil.isNullOrEmpty(goods.getAuctionUrl()))
+				goods.setAuctionUrl(goods.getAuctionUrl() + "&relationId=" + relationId);
+			if (!StringUtil.isNullOrEmpty(goods.getCouponLink()))
+				goods.setCouponLink(goods.getCouponLink() + "&relationId=" + relationId);
+		}
+
+		// 淇濆瓨鍟嗗搧璇︽儏
 
 		// 鍒涘缓娣樺彛浠�
 		TaoBaoLink tbLink = new TaoBaoLink();
@@ -400,6 +439,10 @@
 
 		tbLink.setGoods(goods);
 
+		// 瀛樺偍鍒嗕韩鍟嗗搧鐨勪俊鎭紝鐢ㄤ簬鍔犲揩鍒嗕韩缃戦〉鎺ュ彛璇锋眰閫熷害
+		if (Constant.IS_OUTNET)
+			redisManager.saveTaoBaoGoodsBriefTemp(goods);
+
 		return tbLink;
 	}
 
@@ -418,18 +461,133 @@
 		if (tbPid == null) {
 			throw new ShareGoodsException(3, "鑾峰彇鎺ㄥ箍浣嶅け璐�");
 		}
-		String appId = tbPid.getPid().split("_")[2];
-		String adzoneId = tbPid.getPid().split("_")[3];
+		return getTaoBaoLink(uid, auctionId, tbPid.getPid());
+	}
+
+	@Override
+	public TaoBaoLink getTaoBaoLink(Long uid, Long auctionId, String pid) throws ShareGoodsException {
+
+		if (uid == null || uid <= 0) {
+			throw new ShareGoodsException(1, "鐢ㄦ埛ID涓嶈兘涓虹┖");
+		}
+
+		if (auctionId == null || auctionId <= 0) {
+			throw new ShareGoodsException(2, "鍟嗗搧ID涓嶈兘涓虹┖");
+		}
+
+		if (StringUtil.isNullOrEmpty(pid)) {
+			throw new ShareGoodsException(3, "鏃犳帹骞夸綅");
+		}
+
+		String appId = pid.split("_")[2];
+		String adzoneId = pid.split("_")[3];
 		TaoBaoUnionConfig taoBaoUnionConfig = taoBaoUnionConfigService.getConfigByAppIdCache(appId);
 
 		TaoKeAppInfo info = new TaoKeAppInfo();
 		info.setAdzoneId(adzoneId);
 		info.setAppKey(taoBaoUnionConfig.getAppKey());
 		info.setAppSecret(taoBaoUnionConfig.getAppSecret());
-		info.setPid(tbPid.getPid());
+		info.setPid(pid);
 		TaoBaoGoodsBrief goods = null;
 		try {
 			goods = TaoKeApiUtil.searchGoodsDetailForConvert(auctionId, info);
+		} catch (TaobaoGoodsDownException e) {
+			throw new ShareGoodsException(4, "鍟嗗搧宸蹭笅鏋�");
+		} finally {
+
+		}
+		if (goods == null) {
+			throw new ShareGoodsException(5, "鑾峰彇鍟嗗搧璇︽儏澶辫触");
+		}
+
+		if (StringUtil.isNullOrEmpty(goods.getCouponLink()) && !goods.getAuctionUrl().contains("s.click.taobao.com")) {
+			TaoBaoGoodsBrief taoBaoLink = TaoKeApiUtil.specialConvertCoupon(auctionId, info);
+			if (taoBaoLink == null) {
+				throw new ShareGoodsException(201, "鍟嗗搧杞摼澶辫触");
+			}
+			goods.setCouponLink(taoBaoLink.getCouponLink());
+			goods.setAuctionUrl(taoBaoLink.getAuctionUrl());
+		}
+
+		// 鍒涘缓娣樺彛浠�
+		TaoBaoLink tbLink = new TaoBaoLink();
+		tbLink.setAuctionId(goods.getAuctionId());
+		tbLink.setClickUrl(goods.getAuctionUrl());
+		tbLink.setCouponLink(goods.getCouponLink());
+		return tbLink;
+	}
+
+	@Override
+	public TaoBaoLink getTaoBaoLinkForBuyWithSpecial(Long uid, String specialId, Long auctionId)
+			throws ShareGoodsException {
+		if (uid == null || uid <= 0) {
+			throw new ShareGoodsException(1, "鐢ㄦ埛ID涓嶈兘涓虹┖");
+		}
+
+		if (auctionId == null || auctionId <= 0) {
+			throw new ShareGoodsException(2, "鍟嗗搧ID涓嶈兘涓虹┖");
+		}
+
+		TaoKeAppInfo app = new TaoKeAppInfo();
+		app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY);
+		app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
+		app.setPid(TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT);
+		TaoBaoGoodsBrief goods = TaoKeApiUtil.specialConvertCoupon(auctionId, app);
+		if (goods == null) {
+			throw new ShareGoodsException(1, "");
+		}
+
+		TaoBaoLink taoBaoLink = new TaoBaoLink();
+		taoBaoLink.setAuctionId(auctionId);
+		taoBaoLink.setClickUrl(goods.getAuctionUrl());
+		taoBaoLink.setCouponLink(goods.getCouponLink());
+		taoBaoLink.setGoods(goods);
+
+		return taoBaoLink;
+	}
+
+	@Override
+	public UserShareGoodsHistory getShareGoodsHistory(Long uid, Long auctionId) {
+		return userShareGoodsHistoryMapper.selectByUidAndAuctionId(uid, auctionId);
+	}
+
+	@Override
+	public TaoBaoLink getTaoBaoLinkForShare(Long uid, Long auctionId, String relationId, String pid)
+			throws ShareGoodsException {
+		if (uid == null || uid <= 0) {
+			throw new ShareGoodsException(1, "鐢ㄦ埛ID涓嶈兘涓虹┖");
+		}
+
+		if (auctionId == null || auctionId <= 0) {
+			throw new ShareGoodsException(2, "鍟嗗搧ID涓嶈兘涓虹┖");
+		}
+
+		TaoKeAppInfo info = new TaoKeAppInfo();
+
+		if (!StringUtil.isNullOrEmpty(relationId)) {
+			String appId = pid.split("_")[2];
+			String adzoneId = pid.split("_")[3];
+			TaoBaoUnionConfig taoBaoUnionConfig = taoBaoUnionConfigService.getConfigByAppIdCache(appId);
+			info.setAdzoneId(adzoneId);
+			info.setAppKey(taoBaoUnionConfig.getAppKey());
+			info.setAppSecret(taoBaoUnionConfig.getAppSecret());
+			info.setPid(pid);
+		} else {
+			TBPid tbPid = tbPidService.getTBPid(uid, PidUser.TYPE_SHARE_GOODS);
+			if (tbPid == null) {
+				throw new ShareGoodsException(3, "鑾峰彇鎺ㄥ箍浣嶅け璐�");
+			}
+			String appId = tbPid.getPid().split("_")[2];
+			TaoBaoUnionConfig taoBaoUnionConfig = taoBaoUnionConfigService.getConfigByAppIdCache(appId);
+			String adzoneId = tbPid.getPid().split("_")[3];
+			info.setAdzoneId(adzoneId);
+			info.setAppKey(taoBaoUnionConfig.getAppKey());
+			info.setAppSecret(taoBaoUnionConfig.getAppSecret());
+			info.setPid(tbPid.getPid());
+		}
+		TaoBaoGoodsBrief goods = null;
+		try {
+			goods = TaoKeApiUtil.searchGoodsDetail(auctionId, info);
 		} catch (TaobaoGoodsDownException e) {
 			throw new ShareGoodsException(4, "鍟嗗搧宸蹭笅鏋�");
 		} finally {
@@ -439,19 +597,47 @@
 		}
 
 		if (StringUtil.isNullOrEmpty(goods.getCouponLink()) && !goods.getAuctionUrl().contains("s.click.taobao.com")) {
-			TaoBaoLink taoBaoLink = TaoBaoUtil.getTbLinkForShare(auctionId, tbPid.getPid(), taoBaoUnionConfig);
+			TaoBaoGoodsBrief taoBaoLink = TaoKeApiUtil.specialConvertCoupon(auctionId, info);
 			if (taoBaoLink == null) {
 				throw new ShareGoodsException(201, "鍟嗗搧杞摼澶辫触");
 			}
 			goods.setCouponLink(taoBaoLink.getCouponLink());
-			goods.setAuctionUrl(taoBaoLink.getClickUrl());
+			goods.setAuctionUrl(taoBaoLink.getAuctionUrl());
 		}
+
+		if (!StringUtil.isNullOrEmpty(relationId)) {
+			if (!StringUtil.isNullOrEmpty(goods.getAuctionUrl()))
+				goods.setAuctionUrl(goods.getAuctionUrl() + "&relationId=" + relationId);
+			if (!StringUtil.isNullOrEmpty(goods.getCouponLink()))
+				goods.setCouponLink(goods.getCouponLink() + "&relationId=" + relationId);
+		}
+
+		// 淇濆瓨鍟嗗搧璇︽儏
 
 		// 鍒涘缓娣樺彛浠�
 		TaoBaoLink tbLink = new TaoBaoLink();
 		tbLink.setAuctionId(goods.getAuctionId());
 		tbLink.setClickUrl(goods.getAuctionUrl());
 		tbLink.setCouponLink(goods.getCouponLink());
+
+		if (!StringUtil.isNullOrEmpty(tbLink.getCouponLink())) {// 閫氳繃绔嬪嵆鎺ㄥ箍鏂瑰紡鑾峰彇娣樺彛浠ゆ垚鍔�
+			String quanToken = TaoKeApiUtil.getTKToken(goods.getPictUrl(), goods.getTitle(), tbLink.getCouponLink());
+			if (!StringUtil.isNullOrEmpty(quanToken)) {
+				tbLink.setTaoToken(quanToken);
+			}
+		} else if (!StringUtil.isNullOrEmpty(tbLink.getClickUrl())) {
+			String quanToken = TaoKeApiUtil.getTKToken(goods.getPictUrl(), goods.getTitle(), tbLink.getClickUrl());
+			if (!StringUtil.isNullOrEmpty(quanToken)) {
+				tbLink.setTaoToken(quanToken);
+			}
+		}
+
+		tbLink.setGoods(goods);
+
+		// 瀛樺偍鍒嗕韩鍟嗗搧鐨勪俊鎭紝鐢ㄤ簬鍔犲揩鍒嗕韩缃戦〉鎺ュ彛璇锋眰閫熷害
+		if (Constant.IS_OUTNET)
+			redisManager.saveTaoBaoGoodsBriefTemp(goods);
+
 		return tbLink;
 	}
 

--
Gitblit v1.8.0