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