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