From 81da61b828e29b7745e1382dfbbaeb685dc083ef Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 23 一月 2024 17:17:55 +0800
Subject: [PATCH] 抖音转链修改

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoGoodsUpdateServiceImpl.java |  905 ++++++++++++++++++++++++++++++--------------------------
 1 files changed, 484 insertions(+), 421 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoGoodsUpdateServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoGoodsUpdateServiceImpl.java
index 97ce55d..4724b9a 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoGoodsUpdateServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoGoodsUpdateServiceImpl.java
@@ -1,421 +1,484 @@
-package com.yeshi.fanli.service.impl.taobao;
-
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.annotation.Resource;
-
-import org.springframework.context.annotation.Lazy;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.google.gson.Gson;
-import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoGoodsBriefMapper;
-import com.yeshi.fanli.dao.taobao.TaoBaoGoodsUpdateDao;
-import com.yeshi.fanli.entity.goods.CommonGoods;
-import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
-import com.yeshi.fanli.exception.goods.CommonGoodsException;
-import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
-import com.yeshi.fanli.exception.taobao.TaobaoGoodsUpdateException;
-import com.yeshi.fanli.log.LogHelper;
-import com.yeshi.fanli.service.inter.activity.ActivityGoodsUpdateService;
-import com.yeshi.fanli.service.inter.dynamic.GoodsEvaluateService;
-import com.yeshi.fanli.service.inter.goods.CommonGoodsService;
-import com.yeshi.fanli.service.inter.lable.QualityFactoryGoodsUpdateService;
-import com.yeshi.fanli.service.inter.taobao.ShareHotGoodsService;
-import com.yeshi.fanli.service.inter.taobao.TLJBuyGoodsUpdateService;
-import com.yeshi.fanli.service.inter.taobao.TLJFreeBuyGoodsUpdateService;
-import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService;
-import com.yeshi.fanli.util.CMQManager;
-import com.yeshi.fanli.util.StringUtil;
-import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil;
-import com.yeshi.fanli.util.factory.CommonGoodsFactory;
-import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
-
-@Service
-public class TaoBaoGoodsUpdateServiceImpl implements TaoBaoGoodsUpdateService {
-
-    @Resource
-    private ActivityGoodsUpdateService activityGoodsUpdateService;
-
-    @Resource
-    private QualityFactoryGoodsUpdateService qualityFactoryGoodsUpdateService;
-
-    @Resource
-    private TaoBaoGoodsBriefMapper taoBaoGoodsBriefMapper;
-
-    @Resource
-    private CommonGoodsService commonGoodsService;
-
-    @Lazy
-    @Resource
-    private ShareHotGoodsService shareHotGoodsService;
-
-    @Lazy
-    @Resource
-    private TLJBuyGoodsUpdateService tljBuyGoodsUpdateService;
-
-    @Resource
-    private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil;
-
-    @Resource
-    private TaoBaoGoodsUpdateDao taoBaoGoodsUpdateDao;
-
-    @Lazy
-    @Resource
-    private TLJFreeBuyGoodsUpdateService tljFreeBuyGoodsUpdateService;
-    @Lazy
-    @Resource
-    private GoodsEvaluateService goodsEvaluateService;
-
-    @Override
-    public void startUpdate() {
-        // 鏇存柊鏃堕棿瓒呰繃6涓皬鏃剁殑鍋氭洿鏂�
-        List<TaoBaoGoodsBrief> list = taoBaoGoodsBriefMapper
-                .queryGoodsByMaxUpdateTime(new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 6L), 0, 5000);
-        for (TaoBaoGoodsBrief goods : list) {
-            try {
-                TaoBaoGoodsBrief newGoods = TaoKeApiUtil.searchGoodsDetail(goods.getAuctionId());
-                if (newGoods != null) {
-                    try {
-                        updateTaoBaoGoods(newGoods);
-                    } catch (TaobaoGoodsUpdateException e) {
-                        e.printStackTrace();
-                    }
-                }
-
-            } catch (TaobaoGoodsDownException e) {
-                offlineTaoBaoGoods(goods.getAuctionId());
-            } catch (Exception e) {
-
-            }
-        }
-    }
-
-    @Transactional
-    @Override
-    public void deleteTaoBaoGoods(Long auctionId) {
-        // 鍒犻櫎绮鹃�夊簱鐩稿叧鐨勬暟鎹�
-        qualityFactoryGoodsUpdateService.deleteByTaoBaoGoodsId(auctionId);
-
-        // 鍒犻櫎鍟嗗搧鏈韩鏁版嵁
-        taoBaoGoodsBriefMapper.deleteByAuctionId(auctionId);
-    }
-
-    @Transactional
-    @Override
-    public void offlineTaoBaoGoods(Long auctionId) {
-        // 鏇存柊鍔ㄦ�佹暟鎹�
-        activityGoodsUpdateService.downTaoBaoGoods(auctionId);
-
-        // 鍒犻櫎绮鹃�夊簱鐩稿叧鐨勬暟鎹�
-        qualityFactoryGoodsUpdateService.deleteByTaoBaoGoodsId(auctionId);
-
-        // 鍒犻櫎鍟嗗搧鏈韩鏁版嵁
-        taoBaoGoodsBriefMapper.deleteByAuctionId(auctionId);
-
-        // 鏇存柊绠�鐗堝晢鍝佺姸鎬佷负涓嬫灦
-        commonGoodsService.offlineCommonGoods(auctionId, CommonGoods.GOODS_TYPE_TB);
-
-        // 鍒嗕韩鐖嗘鏁版嵁鍒犻櫎
-        shareHotGoodsService.deleteByGoodsId(auctionId);
-
-        goodsEvaluateService.offlineTaoBaoGoods(auctionId + "");
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void updateTaoBaoGoods(TaoBaoGoodsBrief goods) throws TaobaoGoodsUpdateException {
-        if (goods == null)
-            throw new TaobaoGoodsUpdateException(1, "鍟嗗搧涓虹┖");
-
-        if (goods.getAuctionId() == null || goods.getAuctionId() == 0)
-            throw new TaobaoGoodsUpdateException(2, "鍟嗗搧ID涓虹┖");
-
-        // 璁剧疆鍟嗗搧姝e父涓婄嚎
-        goods.setState(0);
-        // 鏇存柊鏀惰棌淇℃伅
-        try {
-            commonGoodsService.updateCommonGoods(CommonGoodsFactory.create(goods));
-        } catch (CommonGoodsException e) {
-            e.printStackTrace();
-        }
-
-        TaoBaoGoodsBrief tb = taoBaoGoodsBriefMapper.selectByPrimaryKey(goods.getAuctionId());
-        if (tb != null) {
-            goods.setId(tb.getId());
-            TaoBaoGoodsBrief updateGoods = getUpdateTaoBaoGoodsBrief(goods);
-            System.out.println("鏇寸粏淇℃伅:" + new Gson().toJson(updateGoods));
-            taoBaoGoodsBriefMapper.updateByPrimaryKeySelective(updateGoods);
-        }
-
-        // 鏇存柊鍔ㄦ�佸晢鍝�
-        activityGoodsUpdateService.updateRecommendActivityGoods(goods);
-
-        // 鏇存柊鍒嗕韩搴撶殑鍟嗗搧
-        shareHotGoodsService.updateShareGoods(goods);
-
-        // 鏇存柊鑷喘绔嬪噺搴撳晢鍝�
-        tljBuyGoodsUpdateService.updateGoods(goods);
-
-        // 鏇存柊鏂颁汉鍏嶅崟搴撳晢鍝�
-        tljFreeBuyGoodsUpdateService.updateGoods(goods);
-
-        goodsEvaluateService.updateTaoBaoGoods(goods);
-
-        // 鎬昏鍟嗗搧鏇存柊
-        updateImplTBGoods(goods);
-    }
-
-    @Override
-    public void deleteOutOfDate() {
-        List<Long> list = taoBaoGoodsBriefMapper
-                .queryCanDeleteGoods(new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24 * 2), 0, 2000);
-        for (Long auctionId : list) {
-            deleteTaoBaoGoods(auctionId);
-        }
-    }
-
-    @Override
-    public TaoBaoGoodsBrief getUpdateTaoBaoGoodsBrief(TaoBaoGoodsBrief goods) {
-        String auctionUrl = "https://item.taobao.com/item.htm?id=" + goods.getAuctionId();
-        String couponLink = "";
-        TaoBaoGoodsBrief updateGoods = new TaoBaoGoodsBrief(goods.getId());
-        updateGoods.setUpdatetime(new Date());
-        updateGoods.setState(0);
-        // 闃叉鏄浆閾剧殑閾炬帴锛屾暟鎹繃闀�
-        updateGoods.setAuctionUrl(auctionUrl);
-        updateGoods.setCouponLink(couponLink);
-        // 鏇存柊鏍囬锛屽晢鍝佸浘鐗囷紝閿�閲忥紝浠锋牸锛屽埜淇℃伅锛岃繑鍒╀俊鎭紝搴楅摵淇℃伅锛屽垎绫讳俊鎭�
-        updateGoods.setTitle(goods.getTitle());
-        updateGoods.setPictUrl(goods.getPictUrl());
-        updateGoods.setPictUrlWhite(goods.getPictUrlWhite());
-        updateGoods.setImgList(goods.getImgList());
-        updateGoods.setBiz30day(goods.getBiz30day());
-        updateGoods.setZkPrice(goods.getZkPrice());
-        updateGoods.setReservePrice(goods.getReservePrice());
-        updateGoods.setTkRate(goods.getTkRate());
-        // 鍒镐俊鎭�
-        if (StringUtil.isNullOrEmpty(goods.getCouponInfo()) && StringUtil.isNullOrEmpty(goods.getCouponActivityId())) {
-            updateGoods.setCouponActivityId("");
-            updateGoods.setCouponAmount(new BigDecimal(0));
-            updateGoods.setCouponEffectiveEndTime("");
-            updateGoods.setCouponEffectiveStartTime("");
-            updateGoods.setCouponInfo("");
-            updateGoods.setCouponLeftCount(0);
-            updateGoods.setCouponLink("");
-            updateGoods.setCouponStartFee(new BigDecimal(0));
-            updateGoods.setCouponTotalCount(0); // 娌℃湁鍒镐簡
-        } else {// 杩樻湁鍒�
-            updateGoods.setCouponActivityId(goods.getCouponActivityId());
-            updateGoods.setCouponAmount(goods.getCouponAmount());
-            updateGoods.setCouponEffectiveEndTime(goods.getCouponEffectiveEndTime());
-            updateGoods.setCouponEffectiveStartTime(goods.getCouponEffectiveStartTime());
-            updateGoods.setCouponInfo(goods.getCouponInfo());
-            updateGoods.setCouponLeftCount(goods.getCouponLeftCount());
-            updateGoods.setCouponLink("");
-            updateGoods.setCouponStartFee(goods.getCouponStartFee());
-            updateGoods.setCouponTotalCount(goods.getCouponTotalCount());
-        }
-
-        // 搴楅摵淇℃伅
-        updateGoods.setShopTitle(goods.getShopTitle());
-        updateGoods.setSellerId(goods.getSellerId());
-
-        // 鍒嗙被淇℃伅
-        updateGoods.setRootCatId(goods.getRootCatId());
-        updateGoods.setRootCategoryName(goods.getRootCategoryName());
-        updateGoods.setLeafCatId(goods.getLeafCatId());
-        updateGoods.setLeafName(goods.getLeafName());
-        updateGoods.setMaterialLibType(goods.getMaterialLibType());
-
-        return updateGoods;
-    }
-
-    @Override
-    public void updateTaoBaoGoods(List<TaoBaoGoodsBrief> goodsList) throws TaobaoGoodsUpdateException {
-        if (goodsList == null || goodsList.size() == 0)
-            throw new TaobaoGoodsUpdateException(1, "鍟嗗搧鍒楄〃涓虹┖");
-
-        List<TaoBaoGoodsBrief> updateList = new ArrayList<>();
-
-        for (TaoBaoGoodsBrief goods : goodsList) {
-            if (goods.getId() == null || goods.getId() == 0L) {
-                throw new TaobaoGoodsUpdateException(1, "鍟嗗搧涓婚敭ID涓虹┖");
-            }
-
-            // 闇�瑕佹洿鏂扮殑淇℃伅
-            TaoBaoGoodsBrief updateGoods = getUpdateTaoBaoGoodsBrief(goods);
-            updateGoods.setCreatetime(goods.getCreatetime());
-            updateList.add(updateGoods);
-        }
-
-        taoBaoGoodsBriefMapper.updateBatchSelective(updateList);
-    }
-
-    @Override
-    public List<Long> listNeedUpdateGoodsId(long start, int count, int hour) {
-        return taoBaoGoodsBriefMapper.listNeedUpdateGoodsId(start, count, hour);
-    }
-
-    @Override
-    public void updateByTaoKeGoodsDetail(Long id) {
-        try {
-            TaoBaoGoodsBrief oldGoods = taoBaoGoodsBriefMapper.selectByPrimaryKey(id);
-            if (oldGoods == null) {
-                return;
-            }
-
-            TaoBaoGoodsBrief newGoods = TaoKeApiUtil.searchGoodsDetail(id);
-            if (newGoods == null) {
-                return;
-            }
-
-            // 鏇存柊绮鹃�夊晢鍝�
-            newGoods.setId(id);
-            TaoBaoGoodsBrief updateGoods = getUpdateTaoBaoGoodsBrief(newGoods);
-            taoBaoGoodsBriefMapper.updateByPrimaryKeySelective(updateGoods);
-
-            // 鏇存柊鍔ㄦ�佸晢鍝�
-            activityGoodsUpdateService.updateRecommendActivityGoods(newGoods);
-
-            // 鏇存柊鏀惰棌淇℃伅
-            try {
-                commonGoodsService.updateCommonGoods(CommonGoodsFactory.create(newGoods));
-            } catch (CommonGoodsException e) {
-                e.printStackTrace();
-            }
-
-        } catch (TaobaoGoodsDownException e) {
-            offlineTaoBaoGoods(id);
-        } catch (Exception e) {
-            LogHelper.errorDetailInfo(e);
-        }
-    }
-
-    /**
-     * 鏇存柊閲嶈鐨勬窐瀹濇暟鎹�
-     *
-     * @param goods
-     */
-    public void updateImplTBGoods(TaoBaoGoodsBrief goods) {
-        if (goods == null || goods.getAuctionId() == null)
-            return;
-        if (!taoBaoGoodsCacheUtil.needUpdate(goods.getAuctionId())) {
-            return;
-        }
-        goods.setUpdatetime(new Date());
-        if (goods.getId() == null)
-            goods.setId(goods.getAuctionId());
-        taoBaoGoodsUpdateDao.save(goods);
-        taoBaoGoodsCacheUtil.addUpdateHistory(goods.getAuctionId());
-    }
-
-    @Async
-    @Override
-    public void addUpdateQueueAsync(Long auctionId) {
-        addUpdateQueueSync(auctionId);
-    }
-
-    /**
-     * 鍚屾鍔犲叆
-     *
-     * @param auctionId
-     */
-    private void addUpdateQueueSync(Long auctionId) {
-        try {
-            if (taoBaoGoodsCacheUtil.canAddToUpdateQueue(auctionId)) {
-                // 娣诲姞鍒版洿鏂伴槦鍒�
-                CMQManager.getInstance().addTBImpGoodsUpdate(auctionId);
-                taoBaoGoodsCacheUtil.addAddToQueueHistory(auctionId);
-            }
-        } catch (Exception e) {
-            LogHelper.errorDetailInfo(e);
-        }
-    }
-
-    @Async
-    @Override
-    public void addUpdateQueueAsync(List<TaoBaoGoodsBrief> goodsList) {
-        if (goodsList != null)
-            for (TaoBaoGoodsBrief goods : goodsList) {
-                if (goods != null && goods.getAuctionId() != null)
-                    addUpdateQueueSync(goods.getAuctionId());
-            }
-    }
-
-    @Override
-    public List<TaoBaoGoodsBrief> filterImportantTaoBaoGoods(List<TaoBaoGoodsBrief> goodsList) {
-
-        // 鍟嗗搧杩囨护涓嶅厑璁稿嚭閿�
-        try {
-            Map<Long, TaoBaoGoodsBrief> finalMap = new HashMap<>();
-            // 鍘熷鏁版嵁鍏ㄨ鐩�
-            for (TaoBaoGoodsBrief goods : goodsList) {
-                finalMap.put(goods.getAuctionId(), goods);
-            }
-
-            List<TaoBaoGoodsBrief> tempGoodsList = new ArrayList<>();
-            tempGoodsList.addAll(goodsList);
-            // 鍏堜粠redis閲岄潰鍙栬鐩�
-            for (int i = 0; i < tempGoodsList.size(); i++) {
-                TaoBaoGoodsBrief goods = taoBaoGoodsCacheUtil
-                        .getCommonTaoBaoGoodsInfo(tempGoodsList.get(i).getAuctionId());
-                if (goods != null) {
-                    finalMap.put(goods.getAuctionId(), goods);
-                    tempGoodsList.remove(i--);
-                }
-            }
-
-            // 鍐嶄粠mongodb涓彇瑕嗙洊
-            List<Long> auctionIds = new ArrayList<>();
-            for (TaoBaoGoodsBrief goods : tempGoodsList) {
-                auctionIds.add(goods.getAuctionId());
-            }
-            List<TaoBaoGoodsBrief> mList = taoBaoGoodsUpdateDao.listByAuctionIds(auctionIds);
-            if (mList != null)
-                for (TaoBaoGoodsBrief goods : mList) {
-                    if (goods.getUpdatetime().getTime() > System.currentTimeMillis() - 1000 * 60 * 60 * 24L)// 鍦�1澶╁唴鏇存柊鐨勬暟鎹墠鍙備笌杩囨护
-                        finalMap.put(goods.getAuctionId(), goods);
-                }
-
-            List<TaoBaoGoodsBrief> finalList = new ArrayList<>();
-            for (TaoBaoGoodsBrief goods : goodsList) {
-                TaoBaoGoodsBrief newGoods = finalMap.get(goods.getAuctionId());
-                // 杩囨护浠锋牸锛岃繑鍒╂瘮渚嬶紝鍒镐俊鎭�
-                goods.setZkPrice(newGoods.getZkPrice());
-                goods.setTkRate(newGoods.getTkRate());
-                goods.setCouponAmount(newGoods.getCouponAmount());
-                goods.setCouponActivityId(newGoods.getCouponActivityId());
-                goods.setCouponEffectiveEndTime(newGoods.getCouponEffectiveEndTime());
-                goods.setCouponEffectiveStartTime(newGoods.getCouponEffectiveStartTime());
-                goods.setCouponStartFee(newGoods.getCouponStartFee());
-                goods.setCouponTotalCount(newGoods.getCouponTotalCount());
-                goods.setCouponLeftCount(newGoods.getCouponLeftCount());
-
-                finalList.add(goods);
-            }
-            return finalList;
-        } catch (Exception e) {
-            LogHelper.errorDetailInfo(e);
-        }
-        return goodsList;
-    }
-
-    @Override
-    public int listAndRemoveByMaxUpdateTime(Date maxTime, int page, int pageSize) {
-        return taoBaoGoodsUpdateDao.listAndRemoveByMaxUpdateTime(maxTime, (page - 1) * pageSize, pageSize);
-    }
-
-    @Override
-    public long countByMaxUpdateTime(Date maxTime) {
-        return taoBaoGoodsUpdateDao.countByMaxUpdateTime(maxTime);
-
-    }
-
-}
+package com.yeshi.fanli.service.impl.taobao;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.annotation.Resource;
+
+import org.springframework.context.annotation.Lazy;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.google.gson.Gson;
+import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoGoodsBriefMapper;
+import com.yeshi.fanli.dao.taobao.TaoBaoGoodsUpdateDao;
+import com.yeshi.fanli.entity.goods.CommonGoods;
+import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
+import com.yeshi.fanli.exception.goods.CommonGoodsException;
+import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
+import com.yeshi.fanli.exception.taobao.TaobaoGoodsUpdateException;
+import com.yeshi.fanli.log.LogHelper;
+import com.yeshi.fanli.service.inter.activity.ActivityGoodsUpdateService;
+import com.yeshi.fanli.service.inter.dynamic.GoodsEvaluateService;
+import com.yeshi.fanli.service.inter.goods.CommonGoodsService;
+import com.yeshi.fanli.service.inter.lable.QualityFactoryGoodsUpdateService;
+import com.yeshi.fanli.service.inter.taobao.ShareHotGoodsService;
+import com.yeshi.fanli.service.inter.taobao.TLJBuyGoodsUpdateService;
+import com.yeshi.fanli.service.inter.taobao.TLJFreeBuyGoodsUpdateService;
+import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService;
+import com.yeshi.fanli.util.CMQManager;
+import com.yeshi.fanli.util.StringUtil;
+import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil;
+import com.yeshi.fanli.util.factory.CommonGoodsFactory;
+import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
+
+@Service
+public class TaoBaoGoodsUpdateServiceImpl implements TaoBaoGoodsUpdateService {
+
+    @Resource
+    private ActivityGoodsUpdateService activityGoodsUpdateService;
+
+    @Resource
+    private QualityFactoryGoodsUpdateService qualityFactoryGoodsUpdateService;
+
+    @Resource
+    private TaoBaoGoodsBriefMapper taoBaoGoodsBriefMapper;
+
+    @Resource
+    private CommonGoodsService commonGoodsService;
+
+    @Lazy
+    @Resource
+    private ShareHotGoodsService shareHotGoodsService;
+
+    @Lazy
+    @Resource
+    private TLJBuyGoodsUpdateService tljBuyGoodsUpdateService;
+
+    @Resource
+    private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil;
+
+    @Resource
+    private TaoBaoGoodsUpdateDao taoBaoGoodsUpdateDao;
+
+    @Lazy
+    @Resource
+    private TLJFreeBuyGoodsUpdateService tljFreeBuyGoodsUpdateService;
+    @Lazy
+    @Resource
+    private GoodsEvaluateService goodsEvaluateService;
+
+    @Override
+    public void startUpdate() {
+        // 鏇存柊鏃堕棿瓒呰繃6涓皬鏃剁殑鍋氭洿鏂�
+        List<TaoBaoGoodsBrief> list = taoBaoGoodsBriefMapper
+                .queryGoodsByMaxUpdateTime(new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 6L), 0, 5000);
+        for (TaoBaoGoodsBrief goods : list) {
+            try {
+                TaoBaoGoodsBrief newGoods = TaoKeApiUtil.searchGoodsDetail(goods.getAuctionId());
+                if (newGoods != null) {
+                    try {
+                        updateTaoBaoGoods(newGoods);
+                    } catch (TaobaoGoodsUpdateException e) {
+                        e.printStackTrace();
+                    }
+                }
+
+            } catch (TaobaoGoodsDownException e) {
+                offlineTaoBaoGoods(goods.getAuctionId());
+            } catch (Exception e) {
+
+            }
+        }
+    }
+
+    @Transactional
+    @Override
+    public void deleteTaoBaoGoods(String auctionId) {
+        // 鍒犻櫎绮鹃�夊簱鐩稿叧鐨勬暟鎹�
+        qualityFactoryGoodsUpdateService.deleteByTaoBaoGoodsId(auctionId);
+
+        // 鍒犻櫎鍟嗗搧鏈韩鏁版嵁
+        taoBaoGoodsBriefMapper.deleteByAuctionId(auctionId);
+    }
+
+    @Transactional
+    @Override
+    public void offlineTaoBaoGoods(String auctionId) {
+        // 鏇存柊鍔ㄦ�佹暟鎹�
+        activityGoodsUpdateService.downTaoBaoGoods(auctionId);
+
+        // 鍒犻櫎绮鹃�夊簱鐩稿叧鐨勬暟鎹�
+        qualityFactoryGoodsUpdateService.deleteByTaoBaoGoodsId(auctionId);
+
+        // 鍒犻櫎鍟嗗搧鏈韩鏁版嵁
+        taoBaoGoodsBriefMapper.deleteByAuctionId(auctionId);
+
+        // 鏇存柊绠�鐗堝晢鍝佺姸鎬佷负涓嬫灦
+        commonGoodsService.offlineCommonGoods(auctionId, CommonGoods.GOODS_TYPE_TB);
+
+        // 鍒嗕韩鐖嗘鏁版嵁鍒犻櫎
+        shareHotGoodsService.deleteByGoodsId(auctionId);
+
+        goodsEvaluateService.offlineTaoBaoGoods(auctionId + "");
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void updateTaoBaoGoods(TaoBaoGoodsBrief goods) throws TaobaoGoodsUpdateException {
+        if (goods == null)
+            throw new TaobaoGoodsUpdateException(1, "鍟嗗搧涓虹┖");
+
+        if (StringUtil.isNullOrEmpty( goods.getAuctionId()))
+            throw new TaobaoGoodsUpdateException(2, "鍟嗗搧ID涓虹┖");
+
+        // 璁剧疆鍟嗗搧姝e父涓婄嚎
+        goods.setState(0);
+        // 鏇存柊鏀惰棌淇℃伅
+        try {
+            commonGoodsService.updateCommonGoods(CommonGoodsFactory.create(goods));
+        } catch (CommonGoodsException e) {
+            e.printStackTrace();
+        }
+
+        TaoBaoGoodsBrief tb = taoBaoGoodsBriefMapper.selectOneByAuctionId(goods.getAuctionId());
+        if (tb != null) {
+            goods.setId(tb.getId());
+            TaoBaoGoodsBrief updateGoods = getUpdateTaoBaoGoodsBrief(goods);
+            System.out.println("鏇寸粏淇℃伅:" + new Gson().toJson(updateGoods));
+            taoBaoGoodsBriefMapper.updateByPrimaryKeySelective(updateGoods);
+        }
+
+        // 鏇存柊鍔ㄦ�佸晢鍝�
+        activityGoodsUpdateService.updateRecommendActivityGoods(goods);
+
+        // 鏇存柊鍒嗕韩搴撶殑鍟嗗搧
+        shareHotGoodsService.updateShareGoods(goods);
+
+        // 鏇存柊鑷喘绔嬪噺搴撳晢鍝�
+        tljBuyGoodsUpdateService.updateGoods(goods);
+
+        // 鏇存柊鏂颁汉鍏嶅崟搴撳晢鍝�
+        tljFreeBuyGoodsUpdateService.updateGoods(goods);
+
+        goodsEvaluateService.updateTaoBaoGoods(goods);
+
+        // 鎬昏鍟嗗搧鏇存柊
+        updateImplTBGoods(goods);
+    }
+
+    @Override
+    public void deleteOutOfDate() {
+        List<String> list = taoBaoGoodsBriefMapper
+                .queryCanDeleteGoods(new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24 * 2), 0, 2000);
+        for (String auctionId : list) {
+            deleteTaoBaoGoods(auctionId);
+        }
+    }
+
+    @Override
+    public TaoBaoGoodsBrief getUpdateTaoBaoGoodsBrief(TaoBaoGoodsBrief goods) {
+        String auctionUrl = "https://item.taobao.com/item.htm?id=" + goods.getAuctionId();
+        String couponLink = "";
+        TaoBaoGoodsBrief updateGoods = new TaoBaoGoodsBrief(goods.getId());
+        updateGoods.setUpdatetime(new Date());
+        updateGoods.setState(0);
+        // 闃叉鏄浆閾剧殑閾炬帴锛屾暟鎹繃闀�
+        updateGoods.setAuctionUrl(auctionUrl);
+        updateGoods.setCouponLink(couponLink);
+        // 鏇存柊鏍囬锛屽晢鍝佸浘鐗囷紝閿�閲忥紝浠锋牸锛屽埜淇℃伅锛岃繑鍒╀俊鎭紝搴楅摵淇℃伅锛屽垎绫讳俊鎭�
+        updateGoods.setTitle(goods.getTitle());
+        updateGoods.setPictUrl(goods.getPictUrl());
+        updateGoods.setPictUrlWhite(goods.getPictUrlWhite());
+        updateGoods.setImgList(goods.getImgList());
+        updateGoods.setBiz30day(goods.getBiz30day());
+        updateGoods.setZkPrice(goods.getZkPrice());
+        updateGoods.setReservePrice(goods.getReservePrice());
+        updateGoods.setTkRate(goods.getTkRate());
+        // 鍒镐俊鎭�
+        if (StringUtil.isNullOrEmpty(goods.getCouponInfo()) && StringUtil.isNullOrEmpty(goods.getCouponActivityId())) {
+            updateGoods.setCouponActivityId("");
+            updateGoods.setCouponAmount(new BigDecimal(0));
+            updateGoods.setCouponEffectiveEndTime("");
+            updateGoods.setCouponEffectiveStartTime("");
+            updateGoods.setCouponInfo("");
+            updateGoods.setCouponLeftCount(0);
+            updateGoods.setCouponLink("");
+            updateGoods.setCouponStartFee(new BigDecimal(0));
+            updateGoods.setCouponTotalCount(0); // 娌℃湁鍒镐簡
+        } else {// 杩樻湁鍒�
+            updateGoods.setCouponActivityId(goods.getCouponActivityId());
+            updateGoods.setCouponAmount(goods.getCouponAmount());
+            updateGoods.setCouponEffectiveEndTime(goods.getCouponEffectiveEndTime());
+            updateGoods.setCouponEffectiveStartTime(goods.getCouponEffectiveStartTime());
+            updateGoods.setCouponInfo(goods.getCouponInfo());
+            updateGoods.setCouponLeftCount(goods.getCouponLeftCount());
+            updateGoods.setCouponLink("");
+            updateGoods.setCouponStartFee(goods.getCouponStartFee());
+            updateGoods.setCouponTotalCount(goods.getCouponTotalCount());
+        }
+
+        // 搴楅摵淇℃伅
+        updateGoods.setShopTitle(goods.getShopTitle());
+        updateGoods.setSellerId(goods.getSellerId());
+
+        // 鍒嗙被淇℃伅
+        updateGoods.setRootCatId(goods.getRootCatId());
+        updateGoods.setRootCategoryName(goods.getRootCategoryName());
+        updateGoods.setLeafCatId(goods.getLeafCatId());
+        updateGoods.setLeafName(goods.getLeafName());
+        updateGoods.setMaterialLibType(goods.getMaterialLibType());
+
+        return updateGoods;
+    }
+
+    @Override
+    public void updateTaoBaoGoods(List<TaoBaoGoodsBrief> goodsList) throws TaobaoGoodsUpdateException {
+        if (goodsList == null || goodsList.size() == 0)
+            throw new TaobaoGoodsUpdateException(1, "鍟嗗搧鍒楄〃涓虹┖");
+
+        List<TaoBaoGoodsBrief> updateList = new ArrayList<>();
+
+        for (TaoBaoGoodsBrief goods : goodsList) {
+            if (goods.getId() == null || goods.getId() == 0L) {
+                throw new TaobaoGoodsUpdateException(1, "鍟嗗搧涓婚敭ID涓虹┖");
+            }
+
+            // 闇�瑕佹洿鏂扮殑淇℃伅
+            TaoBaoGoodsBrief updateGoods = getUpdateTaoBaoGoodsBrief(goods);
+            updateGoods.setCreatetime(goods.getCreatetime());
+            updateList.add(updateGoods);
+        }
+
+        taoBaoGoodsBriefMapper.updateBatchSelective(updateList);
+    }
+
+    @Override
+    public List<String> listNeedUpdateGoodsId(long start, int count, int hour) {
+        return taoBaoGoodsBriefMapper.listNeedUpdateGoodsId(start, count, hour);
+    }
+
+    @Override
+    public void updateByTaoKeGoodsDetail(String goodsId) {
+        try {
+            TaoBaoGoodsBrief oldGoods = taoBaoGoodsBriefMapper.selectOneByAuctionId(goodsId);
+            if (oldGoods == null) {
+                return;
+            }
+
+            TaoBaoGoodsBrief newGoods = TaoKeApiUtil.searchGoodsDetail(oldGoods.getAuctionId());
+            if (newGoods == null) {
+                return;
+            }
+
+            // 鏇存柊绮鹃�夊晢鍝�
+            newGoods.setId(oldGoods.getId());
+            TaoBaoGoodsBrief updateGoods = getUpdateTaoBaoGoodsBrief(newGoods);
+            taoBaoGoodsBriefMapper.updateByPrimaryKeySelective(updateGoods);
+
+            // 鏇存柊鍔ㄦ�佸晢鍝�
+            activityGoodsUpdateService.updateRecommendActivityGoods(newGoods);
+
+            // 鏇存柊鏀惰棌淇℃伅
+            try {
+                commonGoodsService.updateCommonGoods(CommonGoodsFactory.create(newGoods));
+            } catch (CommonGoodsException e) {
+                e.printStackTrace();
+            }
+
+        } catch (TaobaoGoodsDownException e) {
+            offlineTaoBaoGoods(goodsId);
+        } catch (Exception e) {
+            LogHelper.errorDetailInfo(e);
+        }
+    }
+
+    /**
+     * 鏇存柊閲嶈鐨勬窐瀹濇暟鎹�
+     *
+     * @param goods
+     */
+    public void updateImplTBGoods(TaoBaoGoodsBrief goods) {
+        if (goods == null || goods.getAuctionId() == null)
+            return;
+        if (!taoBaoGoodsCacheUtil.needUpdate(goods.getAuctionId())) {
+            return;
+        }
+        goods.setUpdatetime(new Date());
+        goods.setMid(goods.getAuctionId());
+        taoBaoGoodsUpdateDao.save(goods);
+        taoBaoGoodsCacheUtil.addUpdateHistory(goods.getAuctionId());
+    }
+
+    @Async
+    @Override
+    public void addUpdateQueueAsync(String auctionId) {
+        addUpdateQueueSync(auctionId);
+    }
+
+    /**
+     * 鍚屾鍔犲叆
+     *
+     * @param auctionId
+     */
+    private void addUpdateQueueSync(String auctionId) {
+        try {
+            if (taoBaoGoodsCacheUtil.canAddToUpdateQueue(auctionId)) {
+                // 娣诲姞鍒版洿鏂伴槦鍒�
+                CMQManager.getInstance().addTBImpGoodsUpdate(auctionId);
+                taoBaoGoodsCacheUtil.addAddToQueueHistory(auctionId);
+            }
+        } catch (Exception e) {
+            LogHelper.errorDetailInfo(e);
+        }
+    }
+
+    @Async
+    @Override
+    public void addUpdateQueueAsync(List<TaoBaoGoodsBrief> goodsList) {
+        if (goodsList != null)
+            for (TaoBaoGoodsBrief goods : goodsList) {
+                if (goods != null && goods.getAuctionId() != null)
+                    addUpdateQueueSync(goods.getAuctionId());
+            }
+    }
+
+    @Override
+    public List<TaoBaoGoodsBrief> filterImportantTaoBaoGoods(List<TaoBaoGoodsBrief> goodsList) {
+
+        // 鍟嗗搧杩囨护涓嶅厑璁稿嚭閿�
+        try {
+            Map<String, TaoBaoGoodsBrief> finalMap = new HashMap<>();
+            // 鍘熷鏁版嵁鍏ㄨ鐩�
+            for (TaoBaoGoodsBrief goods : goodsList) {
+                finalMap.put(goods.getAuctionId(), goods);
+            }
+
+            List<TaoBaoGoodsBrief> tempGoodsList = new ArrayList<>();
+            tempGoodsList.addAll(goodsList);
+            // 鍏堜粠redis閲岄潰鍙栬鐩�
+            for (int i = 0; i < tempGoodsList.size(); i++) {
+                TaoBaoGoodsBrief goods = taoBaoGoodsCacheUtil
+                        .getCommonTaoBaoGoodsInfo(tempGoodsList.get(i).getAuctionId());
+                if (goods != null) {
+                    finalMap.put(goods.getAuctionId(), goods);
+                    tempGoodsList.remove(i--);
+                }
+            }
+
+            // 鍐嶄粠mongodb涓彇瑕嗙洊
+            List<String> auctionIds = new ArrayList<>();
+            for (TaoBaoGoodsBrief goods : tempGoodsList) {
+                auctionIds.add(goods.getAuctionId());
+            }
+            List<TaoBaoGoodsBrief> mList =null;
+            try {
+                mList = taoBaoGoodsUpdateDao.listByAuctionIds(auctionIds);
+            }catch(Exception e){
+            }
+            if (mList != null)
+                for (TaoBaoGoodsBrief goods : mList) {
+                    if (goods.getUpdatetime().getTime() > System.currentTimeMillis() - 1000 * 60 * 60 * 24L)// 鍦�1澶╁唴鏇存柊鐨勬暟鎹墠鍙備笌杩囨护
+                        finalMap.put(goods.getAuctionId(), goods);
+                }
+
+            List<TaoBaoGoodsBrief> finalList = new ArrayList<>();
+            for (TaoBaoGoodsBrief goods : goodsList) {
+                TaoBaoGoodsBrief newGoods = finalMap.get(goods.getAuctionId());
+                // 杩囨护浠锋牸锛岃繑鍒╂瘮渚嬶紝鍒镐俊鎭�
+                goods.setZkPrice(newGoods.getZkPrice());
+                goods.setTkRate(newGoods.getTkRate());
+                goods.setCouponAmount(newGoods.getCouponAmount());
+                goods.setCouponActivityId(newGoods.getCouponActivityId());
+                goods.setCouponEffectiveEndTime(newGoods.getCouponEffectiveEndTime());
+                goods.setCouponEffectiveStartTime(newGoods.getCouponEffectiveStartTime());
+                goods.setCouponStartFee(newGoods.getCouponStartFee());
+                goods.setCouponTotalCount(newGoods.getCouponTotalCount());
+                goods.setCouponLeftCount(newGoods.getCouponLeftCount());
+
+                finalList.add(goods);
+            }
+            return finalList;
+        } catch (Exception e) {
+            LogHelper.errorDetailInfo(e);
+        }
+        return goodsList;
+    }
+
+    @Override
+    public List<CommonGoods> filterImportantTaoBaoGoodsWithCommonGoods(List<CommonGoods> goodsList) {
+
+        // 鍟嗗搧杩囨护涓嶅厑璁稿嚭閿�
+        try {
+            Map<String, CommonGoods> finalMap = new HashMap<>();
+            // 鍘熷鏁版嵁鍏ㄨ鐩�
+            List<CommonGoods> tempGoodsList = new ArrayList<>();
+            for (CommonGoods goods : goodsList) {
+                if (goods.getGoodsType() == CommonGoods.SHOP_TYPE_TB) {
+                    finalMap.put(goods.getGoodsId(), goods);
+                    tempGoodsList.add(goods);
+                }
+            }
+
+            // 鍏堜粠redis閲岄潰鍙栬鐩�
+            for (int i = 0; i < tempGoodsList.size(); i++) {
+                TaoBaoGoodsBrief goods = taoBaoGoodsCacheUtil
+                        .getCommonTaoBaoGoodsInfo(tempGoodsList.get(i).getGoodsId());
+                if (goods != null) {
+                    finalMap.put(goods.getAuctionId(), CommonGoodsFactory.create(goods));
+                    tempGoodsList.remove(i--);
+                }
+            }
+
+            // 鍐嶄粠mongodb涓彇瑕嗙洊
+            List<String> auctionIds = new ArrayList<>();
+            for (CommonGoods goods : tempGoodsList) {
+                auctionIds.add(goods.getGoodsId());
+            }
+            List<TaoBaoGoodsBrief> mList = taoBaoGoodsUpdateDao.listByAuctionIds(auctionIds);
+            if (mList != null)
+                for (TaoBaoGoodsBrief goods : mList) {
+                    if (goods.getUpdatetime().getTime() > System.currentTimeMillis() - 1000 * 60 * 60 * 24L)// 鍦�1澶╁唴鏇存柊鐨勬暟鎹墠鍙備笌杩囨护
+                        finalMap.put(goods.getAuctionId(), CommonGoodsFactory.create(goods));
+                }
+
+            List<CommonGoods> finalList = new ArrayList<>();
+            for (CommonGoods goods : goodsList) {
+                if (goods.getGoodsType() == CommonGoods.GOODS_TYPE_TB) {
+                    CommonGoods newGoods = finalMap.get(goods.getGoodsId());
+                    // 杩囨护浠锋牸锛岃繑鍒╂瘮渚嬶紝鍒镐俊鎭�
+                    goods.setPrice(newGoods.getPrice());
+                    goods.setRate(newGoods.getRate());
+                    goods.setCouponAmount(newGoods.getCouponAmount());
+                    goods.setCouponInfo(newGoods.getCouponInfo());
+                    goods.setCouponLeftCount(newGoods.getCouponLeftCount());
+                    goods.setCouponStartPrice(newGoods.getCouponStartPrice());
+                    goods.setCouponTotalCount(newGoods.getCouponTotalCount());
+                }
+
+                finalList.add(goods);
+            }
+            return finalList;
+        } catch (Exception e) {
+            LogHelper.errorDetailInfo(e);
+        }
+        return goodsList;
+    }
+
+    @Override
+    public int listAndRemoveByMaxUpdateTime(Date maxTime, int page, int pageSize) {
+        return taoBaoGoodsUpdateDao.listAndRemoveByMaxUpdateTime(maxTime, (page - 1) * pageSize, pageSize);
+    }
+
+    @Override
+    public long countByMaxUpdateTime(Date maxTime) {
+        return taoBaoGoodsUpdateDao.countByMaxUpdateTime(maxTime);
+
+    }
+
+}

--
Gitblit v1.8.0