From 30d8e227e8d823b6c38c3b9c90ac2df03b63befe Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 25 二月 2025 16:41:22 +0800 Subject: [PATCH] 淘宝转链接口更新 --- fanli/src/main/java/com/yeshi/fanli/service/manger/goods/TaoBaoLinkManager.java | 217 ++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 161 insertions(+), 56 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/manger/goods/TaoBaoLinkManager.java b/fanli/src/main/java/com/yeshi/fanli/service/manger/goods/TaoBaoLinkManager.java index 9ced18d..22a2ec6 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/manger/goods/TaoBaoLinkManager.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/manger/goods/TaoBaoLinkManager.java @@ -1,8 +1,12 @@ package com.yeshi.fanli.service.manger.goods; -import com.yeshi.fanli.dto.taobao.DaTaoKeFilterResult; -import com.yeshi.fanli.entity.taobao.*; -import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2; +import com.yeshi.common.entity.taobao.TaoKeAppInfo; +import com.yeshi.fanli.entity.SystemEnum; +import com.yeshi.fanli.entity.SystemPIDInfo; +import com.yeshi.fanli.entity.taobao.PidUser; +import com.yeshi.fanli.entity.taobao.TBPid; +import com.yeshi.fanli.entity.taobao.TaoBaoLink; +import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig; import com.yeshi.fanli.exception.taobao.TaoBaoConvertLinkException; import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; import com.yeshi.fanli.exception.tlj.UserTaoLiJinNewbiesException; @@ -10,21 +14,25 @@ import com.yeshi.fanli.log.LogType; import com.yeshi.fanli.service.inter.redpack.UserTaoLiJinNewbiesService; import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService; -import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service; import com.yeshi.fanli.service.inter.user.TBPidService; -import com.yeshi.fanli.util.Constant; -import com.yeshi.fanli.util.RedisManager; -import com.yeshi.fanli.util.StringUtil; -import com.yeshi.fanli.util.TaoBaoConstant; +import com.yeshi.fanli.service.manger.PIDManager; +import com.yeshi.fanli.util.*; import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil; -import com.yeshi.fanli.util.dataoke.DaTaoKeApiUtil; -import com.yeshi.fanli.util.taobao.DaTaoKeUtil; import com.yeshi.fanli.util.taobao.TaoBaoUtil; import com.yeshi.fanli.util.taobao.TaoKeApiUtil; +import com.yeshi.goods.facade.dto.taobao.dataoke.DaTaoKeFilterResult; +import com.yeshi.goods.facade.entity.taobao.TaoBaoCouponCache; +import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief; +import com.yeshi.goods.facade.service.DaTaoKeGoodsDetailV2Service; +import com.yeshi.goods.facade.service.TaoBaoCouponCacheService; +import com.yeshi.goods.facade.utils.factory.TaoBaoCouponCacheFactory; +import com.yeshi.goods.facade.utils.taobao.DaTaoKeApiUtil; import org.springframework.stereotype.Component; +import org.yeshi.utils.TimeUtil; import javax.annotation.Resource; import java.math.BigDecimal; +import java.util.Date; @Component public class TaoBaoLinkManager { @@ -50,27 +58,33 @@ @Resource private UserTaoLiJinNewbiesService userTaoLiJinNewbiesService; + @Resource + private TaoBaoCouponCacheService taoBaoCouponCacheService; + + @Resource + private PIDManager pidManager; + + /** - * 鑾峰彇娣樺疂璐拱閾炬帴 + * 鍙鍒� * - * @param uid * @param auctionId + * @param specialId * @param pid * @return */ - public TaoBaoLink getTaoBaoLinkForBuy(Long uid, Long auctionId, String pid) throws TaoBaoConvertLinkException { - if (uid == null || uid <= 0) { - throw new TaoBaoConvertLinkException(1, "鐢ㄦ埛ID涓嶈兘涓虹┖"); - } - - if (auctionId == null || auctionId <= 0) { + public TaoBaoLink getTaoBaoLinkForRecieveCoupon(SystemEnum system, String auctionId, String specialId, String pid) throws TaoBaoConvertLinkException { + if (StringUtil.isNullOrEmpty(auctionId)) { throw new TaoBaoConvertLinkException(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); + if (pid == null) + app.setPid(pidManager.getPidCache(system, Constant.SOURCE_TYPE_TAOBAO, SystemPIDInfo.PidType.fanli)); + else + app.setPid(pid); TaoBaoLink taoBaoLink = new TaoBaoLink(); taoBaoLink.setAuctionId(auctionId); @@ -86,23 +100,8 @@ String link = null; try { - link = DaTaoKeApiUtil.convertLink(auctionId, app.getPid()); + link = DaTaoKeApiUtil.convertLink(auctionId, app.getPid(),false); } catch (Exception e) { - } - DaTaoKeDetailV2 v2 = daTaoKeGoodsDetailV2Service.selectByAuctionId(auctionId); - if (v2 != null) { - try { - TaoBaoGoodsBrief goods = redisManager.getTaoBaoGoodsBrief(auctionId); - if (goods != null) { - if (DaTaoKeUtil.canFilterCouponInfo(goods, v2)) { - // link = DaTaoKeApiUtil.convertLink(auctionId, - // app.getPid()); - - } - } - } catch (TaobaoGoodsDownException e) { - throw new TaoBaoConvertLinkException(4, "鍟嗗搧ID涓嶈兘涓虹┖"); - } } if (!StringUtil.isNullOrEmpty(link)) { @@ -111,10 +110,14 @@ if (!StringUtil.isNullOrEmpty(link)) { taoBaoLink.setCouponLink(link); + //缂撳瓨 + + cacheCouponInfo(auctionId, link, app.getPid()); + return taoBaoLink; } - TaoBaoGoodsBrief goods = TaoKeApiUtil.specialConvertCoupon(auctionId, app); + TaoBaoGoodsBrief goods = TaoKeApiUtil.specialConvertCouponV2(auctionId, app, specialId, null); if (goods == null) { throw new TaoBaoConvertLinkException(1, ""); } @@ -125,7 +128,105 @@ if (!StringUtil.isNullOrEmpty(goods.getYsylClickUrl())) taoBaoLink.setCouponLink(goods.getYsylClickUrl()); taoBaoLink.setGoods(goods); + //缂撳瓨 + goods.setCouponLink(taoBaoLink.getCouponLink()); + cacheCouponInfo(auctionId, taoBaoLink.getCouponLink(), app.getPid()); return taoBaoLink; + } + + /** + * 鑾峰彇娣樺疂璐拱閾炬帴 + * + * @param uid + * @param auctionId + * @param pid + * @return + */ + public TaoBaoLink getTaoBaoLinkForBuy(SystemEnum system, Long uid, String auctionId, String specialId, String pid) throws TaoBaoConvertLinkException { + if (uid == null || uid <= 0) { + throw new TaoBaoConvertLinkException(1, "鐢ㄦ埛ID涓嶈兘涓虹┖"); + } + return getTaoBaoLinkForRecieveCoupon(system, auctionId, specialId, pid); + } + + + /** + * 璁板綍娣樺疂杞摼鐨勫埜淇℃伅 + * + * @param goods + * @param pid + */ + private void cacheCouponInfo(TaoBaoGoodsBrief goods, String pid) { + if (goods.getCouponAmount() == null || goods.getCouponAmount().compareTo(new BigDecimal(0)) <= 0) { + return; + } + + if (StringUtil.isNullOrEmpty(goods.getCouponLink())) + return; + + if (StringUtil.isNullOrEmpty(goods.getCouponEffectiveStartTime()) || StringUtil.isNullOrEmpty(goods.getCouponEffectiveEndTime())) + return; + + try { + TaoBaoCouponCache cache = TaoBaoCouponCacheFactory.create(goods.getAuctionId(), goods.getCouponActivityId(), goods.getCouponAmount(), goods.getCouponStartFee(), new Date(TimeUtil.convertToTimeTemp(goods.getCouponEffectiveStartTime(), "yyyy-MM-dd")), new Date(TimeUtil.convertToTimeTemp(goods.getCouponEffectiveEndTime(), "yyyy-MM-dd")), pid, goods.getCouponLink()); + if (cache != null) { + //寮傛淇濆瓨 + ThreadUtil.run(new Runnable() { + @Override + public void run() { + taoBaoCouponCacheService.save(cache); + } + }); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + + private void cacheCouponInfo(String auctionId, String link, String pid) { + String activityId = TaoBaoUtil.getActivityIdFromCouponLink(link); + if (StringUtil.isNullOrEmpty(activityId)) + return; + //寮傛淇濆瓨 + ThreadUtil.run(new Runnable() { + @Override + public void run() { + TaoKeApiUtil.QuanInfo coupon = TaoKeApiUtil.getQuanInfo(auctionId, activityId); + if (coupon == null) + return; + TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief(); + goods.setCouponLink(link); + goods.setCouponAmount(coupon.coupon_amount); + goods.setCouponStartFee(coupon.coupon_start_fee); + goods.setCouponEffectiveStartTime(coupon.coupon_start_time); + goods.setCouponEffectiveEndTime(coupon.coupon_end_time); + goods.setAuctionId(auctionId); + goods.setCouponActivityId(activityId); + + + if (goods.getCouponAmount() == null || goods.getCouponAmount().compareTo(new BigDecimal(0)) <= 0) { + return; + } + + if (StringUtil.isNullOrEmpty(goods.getCouponLink())) + return; + + if (StringUtil.isNullOrEmpty(goods.getCouponEffectiveStartTime()) || StringUtil.isNullOrEmpty(goods.getCouponEffectiveEndTime())) + return; + + try { + TaoBaoCouponCache cache = TaoBaoCouponCacheFactory.create(goods.getAuctionId(), goods.getCouponActivityId(), goods.getCouponAmount(), goods.getCouponStartFee(), new Date(TimeUtil.convertToTimeTemp(goods.getCouponEffectiveStartTime(), "yyyy-MM-dd")), new Date(TimeUtil.convertToTimeTemp(goods.getCouponEffectiveEndTime(), "yyyy-MM-dd") + 1000 * 60 * 60 * 24L), pid, goods.getCouponLink()); + if (cache != null) { + taoBaoCouponCacheService.save(cache); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + + } /** @@ -137,12 +238,13 @@ * @param pid * @return */ - public TaoBaoLink getTaoBaoLinkForShare(Long uid, Long auctionId, String relationId, String pid) throws TaoBaoConvertLinkException { + public TaoBaoLink getTaoBaoLinkForShare(SystemEnum system, Long uid, String auctionId, String relationId, String pid) throws + TaoBaoConvertLinkException { if (uid == null || uid <= 0) { throw new TaoBaoConvertLinkException(1, "鐢ㄦ埛ID涓嶈兘涓虹┖"); } - if (auctionId == null || auctionId <= 0) { + if (StringUtil.isNullOrEmpty(auctionId)) { throw new TaoBaoConvertLinkException(2, "鍟嗗搧ID涓嶈兘涓虹┖"); } @@ -150,7 +252,7 @@ if (!StringUtil.isNullOrEmpty(relationId)) { if (StringUtil.isNullOrEmpty(pid)) - pid = TaoBaoConstant.TAOBAO_RELATION_PID_DEFAULT; + pid = pidManager.getPidCache(system, Constant.SOURCE_TYPE_TAOBAO, SystemPIDInfo.PidType.share); String appId = pid.split("_")[2]; String adzoneId = pid.split("_")[3]; TaoBaoUnionConfig taoBaoUnionConfig = taoBaoUnionConfigService.getConfigByAppIdCache(appId); @@ -184,7 +286,7 @@ if (StringUtil.isNullOrEmpty(goods.getCouponLink()) && !goods.getAuctionUrl().contains("s.click.taobao.com")) { - TaoBaoGoodsBrief taoBaoLink = TaoKeApiUtil.specialConvertCoupon(auctionId, info); + TaoBaoGoodsBrief taoBaoLink = TaoKeApiUtil.specialConvertCouponV2(auctionId, info, null, relationId); if (taoBaoLink == null) { throw new TaoBaoConvertLinkException(201, "鍟嗗搧杞摼澶辫触"); } @@ -193,29 +295,31 @@ } String link = taoBaoGoodsCacheUtil.getBaseConvertLink(auctionId, info.getPid()); - if (link != null) { + if (link != null) {//鏈夌紦瀛� goods.setCouponLink(link); - } else {// 缂撳瓨 + } else {// 娌℃湁缂撳瓨 DaTaoKeFilterResult result = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods); if (result.getFilterType() == DaTaoKeFilterResult.FILTER_TYPE_COUPON || result.getFilterType() == DaTaoKeFilterResult.FILTER_TYPE_PRICE_AND_COUPON) { - link = DaTaoKeApiUtil.convertLink(auctionId, info.getPid()); + link = DaTaoKeApiUtil.convertLink(auctionId, info.getPid(),true); } else if (goods.getCouponAmount() != null && goods.getCouponAmount().compareTo(new BigDecimal(0)) > 0) {// 鏈夊埜 - link = DaTaoKeApiUtil.convertLink(auctionId, info.getPid()); + link = DaTaoKeApiUtil.convertLink(auctionId, info.getPid(),true); } if (!StringUtil.isNullOrEmpty(link)) { goods.setCouponLink(link); taoBaoGoodsCacheUtil.cacheBaseConvertLink(auctionId, info.getPid(), link); - } - - if (StringUtil.isNullOrEmpty(link)) { - TaoBaoGoodsBrief taoBaoLink = TaoKeApiUtil.specialConvertCoupon(auctionId, info); + //淇濆瓨鍒搁摼鎺� + cacheCouponInfo(goods, info.getPid()); + } else { + TaoBaoGoodsBrief taoBaoLink = TaoKeApiUtil.specialConvertCouponV2(auctionId, info, null, relationId); if (taoBaoLink == null) { throw new TaoBaoConvertLinkException(201, "鍟嗗搧杞摼澶辫触"); } goods.setCouponLink(taoBaoLink.getCouponLink()); goods.setAuctionUrl(taoBaoLink.getAuctionUrl()); + //淇濆瓨鍒搁摼鎺� + cacheCouponInfo(goods, info.getPid()); } } @@ -236,13 +340,13 @@ if (!StringUtil.isNullOrEmpty(tbLink.getCouponLink())) {// 閫氳繃绔嬪嵆鎺ㄥ箍鏂瑰紡鑾峰彇娣樺彛浠ゆ垚鍔� String quanToken = convertLinkManager.createTaoBaoToken(uid, goods.getPictUrl(), goods.getTitle(), - tbLink.getCouponLink()); + tbLink.getCouponLink(), false); if (!StringUtil.isNullOrEmpty(quanToken)) { tbLink.setTaoToken(quanToken); } } else if (!StringUtil.isNullOrEmpty(tbLink.getClickUrl())) { String quanToken = convertLinkManager.createTaoBaoToken(uid, goods.getPictUrl(), goods.getTitle(), - tbLink.getClickUrl()); + tbLink.getClickUrl(), false); if (!StringUtil.isNullOrEmpty(quanToken)) { tbLink.setTaoToken(quanToken); } @@ -269,11 +373,11 @@ * @param pid * @return */ - public TaoBaoLink getTaoLiJinLinkForBuy(Long uid, Long auctionId, String pid) throws TaoBaoConvertLinkException { + public TaoBaoLink getTaoLiJinLinkForBuy(Long uid, String auctionId, String pid) throws TaoBaoConvertLinkException { if (uid == null || uid <= 0) throw new TaoBaoConvertLinkException(1, "鐢ㄦ埛ID涓嶈兘涓虹┖"); - if (auctionId == null || auctionId <= 0) + if (StringUtil.isNullOrEmpty(auctionId)) throw new TaoBaoConvertLinkException(1, "鍟嗗搧ID涓嶈兘涓虹┖"); TaoBaoGoodsBrief goods = null; @@ -311,12 +415,13 @@ * @param pid * @return */ - public TaoBaoLink getTaoLiJinLinkForShare(Long uid, Long auctionId, String relationId, String pid) throws TaoBaoConvertLinkException { + public TaoBaoLink getTaoLiJinLinkForShare(SystemEnum system, Long uid, String auctionId, String relationId, String pid) throws + TaoBaoConvertLinkException { if (uid == null || uid <= 0) { throw new TaoBaoConvertLinkException(1, "鐢ㄦ埛ID涓嶈兘涓虹┖"); } - if (auctionId == null || auctionId <= 0) { + if (StringUtil.isNullOrEmpty(auctionId)) { throw new TaoBaoConvertLinkException(2, "鍟嗗搧ID涓嶈兘涓虹┖"); } @@ -324,7 +429,7 @@ if (!StringUtil.isNullOrEmpty(relationId)) { if (StringUtil.isNullOrEmpty(pid)) - pid = TaoBaoConstant.TAOBAO_RELATION_PID_DEFAULT; + pid = pidManager.getPidCache(system, Constant.SOURCE_TYPE_TAOBAO, SystemPIDInfo.PidType.share); String appId = pid.split("_")[2]; String adzoneId = pid.split("_")[3]; TaoBaoUnionConfig taoBaoUnionConfig = taoBaoUnionConfigService.getConfigByAppIdCache(appId); @@ -359,7 +464,7 @@ if (StringUtil.isNullOrEmpty(goods.getCouponLink()) && !goods.getAuctionUrl().contains("s.click.taobao.com")) { TaoBaoUnionConfig taoBaoUnionConfig = taoBaoUnionConfigService .getConfigByAppIdCache(info.getPid().split("_")[2]); - TaoBaoGoodsBrief taoBaoLink = TaoKeApiUtil.specialConvertCoupon(auctionId, info); + TaoBaoGoodsBrief taoBaoLink = TaoKeApiUtil.specialConvertCouponV2(auctionId, info, null, relationId); if (taoBaoLink == null) { throw new TaoBaoConvertLinkException(201, "鍟嗗搧杞摼澶辫触"); } -- Gitblit v1.8.0