admin
2019-11-23 51a4ff5d777028d52a19c314a99f796334cb7b51
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoGoodsUpdateServiceImpl.java
@@ -3,10 +3,13 @@
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.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -19,11 +22,11 @@
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.ActivityService;
import com.yeshi.fanli.service.inter.activity.ActivityGoodsUpdateService;
import com.yeshi.fanli.service.inter.goods.CommonGoodsService;
import com.yeshi.fanli.service.inter.lable.QualityFactoryService;
import com.yeshi.fanli.service.inter.lable.QualityFactoryGoodsUpdateService;
import com.yeshi.fanli.service.inter.taobao.ShareHotGoodsService;
import com.yeshi.fanli.service.inter.taobao.TLJBuyGoodsService;
import com.yeshi.fanli.service.inter.taobao.TLJBuyGoodsUpdateService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService;
import com.yeshi.fanli.util.CMQManager;
import com.yeshi.fanli.util.StringUtil;
@@ -35,10 +38,10 @@
public class TaoBaoGoodsUpdateServiceImpl implements TaoBaoGoodsUpdateService {
   @Resource
   private ActivityService activityService;
   private ActivityGoodsUpdateService activityGoodsUpdateService;
   @Resource
   private QualityFactoryService qualityFactoryService;
   private QualityFactoryGoodsUpdateService qualityFactoryGoodsUpdateService;
   @Resource
   private TaoBaoGoodsBriefMapper taoBaoGoodsBriefMapper;
@@ -50,7 +53,7 @@
   private ShareHotGoodsService shareHotGoodsService;
   @Resource
   private TLJBuyGoodsService tljBuyGoodsService;
   private TLJBuyGoodsUpdateService tljBuyGoodsUpdateService;
   @Resource
   private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil;
@@ -86,7 +89,7 @@
   @Override
   public void deleteTaoBaoGoods(Long auctionId) {
      // 删除精选库相关的数据
      qualityFactoryService.deleteByTaoBaoGoodsId(auctionId);
      qualityFactoryGoodsUpdateService.deleteByTaoBaoGoodsId(auctionId);
      // 删除商品本身数据
      taoBaoGoodsBriefMapper.deleteByAuctionId(auctionId);
@@ -96,10 +99,10 @@
   @Override
   public void offlineTaoBaoGoods(Long auctionId) {
      // 更新动态数据
      activityService.downTaoBaoGoods(auctionId);
      activityGoodsUpdateService.downTaoBaoGoods(auctionId);
      // 删除精选库相关的数据
      qualityFactoryService.deleteByTaoBaoGoodsId(auctionId);
      qualityFactoryGoodsUpdateService.deleteByTaoBaoGoodsId(auctionId);
      // 删除商品本身数据
      taoBaoGoodsBriefMapper.deleteByAuctionId(auctionId);
@@ -138,16 +141,16 @@
      }
      // 更新动态商品
      activityService.updateRecommendActivityGoods(goods);
      activityGoodsUpdateService.updateRecommendActivityGoods(goods);
      // 更新分享库的商品
      shareHotGoodsService.updateShareGoods(goods);
      // 更新自购立减库商品
      tljBuyGoodsService.updateGoods(goods);
      tljBuyGoodsUpdateService.updateGoods(goods);
      // 总要商品更新
//      updateImplTBGoods(goods);
      updateImplTBGoods(goods);
   }
   @Override
@@ -260,7 +263,7 @@
         taoBaoGoodsBriefMapper.updateByPrimaryKeySelective(updateGoods);
         // 更新动态商品
         activityService.updateRecommendActivityGoods(newGoods);
         activityGoodsUpdateService.updateRecommendActivityGoods(newGoods);
         // 更新收藏信息
         try {
@@ -292,12 +295,106 @@
      taoBaoGoodsCacheUtil.addUpdateHistory(goods.getAuctionId());
   }
   @Async
   @Override
   public void addUpdateQueue(Long auctionId) {
      if (taoBaoGoodsCacheUtil.canAddToUpdateQueue(auctionId)) {
         // 添加到更新队列
         CMQManager.getInstance().addTBImpGoodsUpdate(auctionId);
         taoBaoGoodsCacheUtil.addAddToQueueHistory(auctionId);
   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);
   }
}