yujian
2020-01-18 f4a0f2acc63d7785eab108419a4e16f5f688cb95
fanli/src/main/java/com/yeshi/fanli/job/UpdateDaTaoKeJob.java
@@ -1,5 +1,8 @@
package com.yeshi.fanli.job;
import java.math.BigDecimal;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
@@ -7,15 +10,17 @@
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import com.yeshi.fanli.entity.bus.lable.BoutiqueAutoRule;
import com.yeshi.fanli.entity.bus.lable.QualityFactory;
import com.yeshi.fanli.entity.common.AdminUser;
import com.yeshi.fanli.entity.taobao.ShareHotGoods;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.lable.QualityFactoryService;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailService;
import com.yeshi.fanli.service.inter.taobao.ShareHotGoodsService;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.taobao.DaTaoKeUtil;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
/**
 * 更新大淘客数据
@@ -28,41 +33,15 @@
   private QualityFactoryService qualityFactoryService;
   @Resource
   private DaTaoKeGoodsDetailService daTaoKeGoodsService;
   private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service;
   // 两小时执行一次 对商品信息进行更新
   @Scheduled(cron = "0 0 0/2 * * ?")
   public void doUpdateJob() {
   @Resource
   private ShareHotGoodsService shareHotGoodsService;
      if (!Constant.IS_TASK)
         return;
      List<TaoBaoGoodsBrief> listgoods = DaTaoKeUtil.getDingDongQiang();
      if (listgoods == null || listgoods.size() == 0) {
         return;
      }
      try {
         /* 操作人: 开发账号 */
         AdminUser admin = new AdminUser(2L);
         BoutiqueAutoRule autoRule = new BoutiqueAutoRule();
         autoRule.setAdminUser(admin);
         autoRule.setCalss9k9(false);
         autoRule.setFlashSale(true);
         autoRule.setStartWeight(1);
         autoRule.setEndWeight(3000);
         autoRule.setGoodsSource(QualityFactory.SOURCE_TAOBAO_DATAOKE);
         qualityFactoryService.autoInsertOrUpadateStorage(listgoods, null, autoRule);
      } catch (Exception e) {
         LogHelper.errorDetailInfo(e);
      }
   }
   // 20分钟更新一次
   @Scheduled(cron = "0 0/20 * * * ? ")
   public void doSyncJob() {
   // 每天早晚同步一次
   @Scheduled(cron = "0 0 6,18 * * ? ")
   public void doSyncJobNew() {
      if (!Constant.IS_TASK)
         return;
      try {
@@ -70,7 +49,7 @@
            @Override
            public void run() {
               daTaoKeGoodsService.startSyncGoods();
               daTaoKeGoodsDetailV2Service.startSyncGoods();
            }
         }).start();
@@ -79,4 +58,104 @@
      }
   }
   @Scheduled(cron = "0 0/10 * * * ? ")
   public void doUpdateJobNew() {
      if (!Constant.IS_TASK)
         return;
      try {
         new Thread(new Runnable() {
            @Override
            public void run() {
               daTaoKeGoodsDetailV2Service.updateNewGoods();// 获取新上架的商品
            }
         }).start();
      } catch (Exception e) {
         LogHelper.errorDetailInfo(e);
      }
   }
   @Scheduled(cron = "0 0/10 * * * ? ")
   public void doDeleteJobNew() {
      if (!Constant.IS_TASK)
         return;
      try {
         new Thread(new Runnable() {
            @Override
            public void run() {
               daTaoKeGoodsDetailV2Service.deleteInvalid();
            }
         }).start();
      } catch (Exception e) {
         LogHelper.errorDetailInfo(e);
      }
   }
   // 更新商品数据 每天的8点,11点,19点,23点执行一次
   @Scheduled(cron = "0 0 8,11,19,23 * * ? ")
   public void doUpdateInfoJobNew() {
      if (!Constant.IS_TASK)
         return;
      try {
         new Thread(new Runnable() {
            @Override
            public void run() {
               daTaoKeGoodsDetailV2Service.updateData();
            }
         }).start();
      } catch (Exception e) {
         LogHelper.errorDetailInfo(e);
      }
   }
   /**
    * 删除过期数据(每10分钟删除一次)
    */
   @Scheduled(cron = "0 0/10 * * * ? ")
   public void doDeleteOutOfDate() {
      if (!Constant.IS_TASK)
         return;
      daTaoKeGoodsDetailV2Service.deleteOutOfDate(new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24L));
   }
   // 自动选品
   @Scheduled(cron = "0 0 23 * * ? ")
   public void setShareHotGoods() {
      String day = TimeUtil.getGernalTime(System.currentTimeMillis() + 1000 * 60 * 60 * 24L, "yyyy-MM-dd");
      List<TaoBaoGoodsBrief> goodsList = shareHotGoodsService.listPreGoods(1);
      Collections.shuffle(goodsList);
      int count = 0;
      for (TaoBaoGoodsBrief goods : goodsList) {
         if (count > 20)
            break;
         try {
            goods = TaoKeApiUtil.searchGoodsDetail(goods.getAuctionId());
         } catch (TaobaoGoodsDownException e) {
            e.printStackTrace();
         }
         if (goods != null && goods.getCouponAmount() != null
               && goods.getCouponAmount().compareTo(new BigDecimal(0)) > 0) {
            if (TaoBaoUtil.canAddToTLJBuyGoods(goods)) {
               count++;
               goods = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods);
               shareHotGoodsService.addShareHotGoods(new ShareHotGoods(null, day, new Date(), goods));
            }
         }
      }
   }
   @Scheduled(cron = "0 30 7,11,18,23 * * ? ")
   public void syncGoodsBeiYong() {
      long latestUpdateCount = daTaoKeGoodsDetailV2Service
            .countByMinUpdateTime(new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24L));
      if (latestUpdateCount < 50000L) {// 若每天没有超过5w数据更新就需要重新更新数据
         daTaoKeGoodsDetailV2Service.startSyncGoods();
      }
   }
}