From 73a3d86a47d8da711b609cd224c63526f7d00f9b Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 22 七月 2020 12:49:06 +0800 Subject: [PATCH] 比价相关的bug修复 --- fanli/src/main/java/com/yeshi/fanli/service/manger/goods/TaoBaoLinkManager.java | 149 ++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 116 insertions(+), 33 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 7f35024..fcfffab 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,10 +1,10 @@ package com.yeshi.fanli.service.manger.goods; import com.yeshi.common.entity.taobao.TaoKeAppInfo; -import com.yeshi.goods.facade.dto.taobao.dataoke.DaTaoKeFilterResult; -import com.yeshi.fanli.entity.taobao.*; -import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief; -import com.yeshi.goods.facade.entity.taobao.dataoke.DaTaoKeDetailV2; +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; @@ -12,21 +12,24 @@ 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.goods.facade.service.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.util.*; import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil; -import com.yeshi.goods.facade.utils.taobao.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 { @@ -51,6 +54,9 @@ @Resource private UserTaoLiJinNewbiesService userTaoLiJinNewbiesService; + + @Resource + private TaoBaoCouponCacheService taoBaoCouponCacheService; /** * 鑾峰彇娣樺疂璐拱閾炬帴 @@ -91,21 +97,6 @@ link = DaTaoKeApiUtil.convertLink(auctionId, app.getPid()); } 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)) { taoBaoGoodsCacheUtil.cacheBaseConvertLink(auctionId, app.getPid(), link); @@ -113,6 +104,10 @@ if (!StringUtil.isNullOrEmpty(link)) { taoBaoLink.setCouponLink(link); + //缂撳瓨 + + cacheCouponInfo(auctionId, link, app.getPid()); + return taoBaoLink; } @@ -127,7 +122,90 @@ 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 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(Long 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(); + } + } + }); + + } /** @@ -139,7 +217,8 @@ * @param pid * @return */ - public TaoBaoLink getTaoBaoLinkForShare(Long uid, Long auctionId, String relationId, String pid) throws TaoBaoConvertLinkException { + public TaoBaoLink getTaoBaoLinkForShare(Long uid, Long auctionId, String relationId, String pid) throws + TaoBaoConvertLinkException { if (uid == null || uid <= 0) { throw new TaoBaoConvertLinkException(1, "鐢ㄦ埛ID涓嶈兘涓虹┖"); } @@ -195,29 +274,32 @@ } 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()); } else if (goods.getCouponAmount() != null && goods.getCouponAmount().compareTo(new BigDecimal(0)) > 0) {// 鏈夊埜 link = DaTaoKeApiUtil.convertLink(auctionId, info.getPid()); + } if (!StringUtil.isNullOrEmpty(link)) { goods.setCouponLink(link); taoBaoGoodsCacheUtil.cacheBaseConvertLink(auctionId, info.getPid(), link); - } - - if (StringUtil.isNullOrEmpty(link)) { + //淇濆瓨鍒搁摼鎺� + cacheCouponInfo(goods, info.getPid()); + } else { TaoBaoGoodsBrief taoBaoLink = TaoKeApiUtil.specialConvertCoupon(auctionId, info, null, relationId); if (taoBaoLink == null) { throw new TaoBaoConvertLinkException(201, "鍟嗗搧杞摼澶辫触"); } goods.setCouponLink(taoBaoLink.getCouponLink()); goods.setAuctionUrl(taoBaoLink.getAuctionUrl()); + //淇濆瓨鍒搁摼鎺� + cacheCouponInfo(goods, info.getPid()); } } @@ -313,7 +395,8 @@ * @param pid * @return */ - public TaoBaoLink getTaoLiJinLinkForShare(Long uid, Long auctionId, String relationId, String pid) throws TaoBaoConvertLinkException { + public TaoBaoLink getTaoLiJinLinkForShare(Long uid, Long auctionId, String relationId, String pid) throws + TaoBaoConvertLinkException { if (uid == null || uid <= 0) { throw new TaoBaoConvertLinkException(1, "鐢ㄦ埛ID涓嶈兘涓虹┖"); } -- Gitblit v1.8.0