yujian
2019-03-07 e6cb7c27384f22b39ccee584028e23b56c30e9ee
fanli/src/main/java/com/yeshi/fanli/job/UpdateRelationAndSpecialOrderJob.java
@@ -1,5 +1,6 @@
package com.yeshi.fanli.job;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -35,18 +36,95 @@
   @Resource
   private RedisManager redisManager;
   /**
    * 更新渠道订单(最多20分钟)
    *
    * @param startTime
    */
   private void updateRelationOrder(long startTime) {
      String startTimeStr = TimeUtil.getGernalTime(startTime, "yyyy-MM-dd HH:mm:ss");
      List<TaoBaoOrder> orderList = TaoKeApiUtil.getTaoBaoRelationOrder(startTimeStr, Constant.TAOBAO_AUTH_APPKEY,
      List<TaoBaoOrder> orderList = TaoKeApiUtil.getTaoBaoRelationOrder(startTimeStr, 1, Constant.TAOBAO_AUTH_APPKEY,
            Constant.TAOBAO_AUTH_APPSECRET);
      addRelationAndSpecialOrder(orderList);
   }
   /**
    * 更新渠道订单
    *
    * @param fromPage
    *            开始页码
    * @param toPage
    *            结束页码(每页100条数据)
    */
   private void updateRelationOrder(int fromPage, int toPage) {
      // 最近90天的订单
      String startTimeStr = TimeUtil.getGernalTime(System.currentTimeMillis() - 1000 * 60 * 60 * 24 * 90L,
            "yyyy-MM-dd HH:mm:ss");
      for (int p = fromPage; p < toPage; p++) {
         List<TaoBaoOrder> orderList = TaoKeApiUtil.getTaoBaoRelationOrder(startTimeStr, p,
               Constant.TAOBAO_AUTH_APPKEY, Constant.TAOBAO_AUTH_APPSECRET);
         addRelationAndSpecialOrder(orderList);
         orderList = TaoKeApiUtil.getTaoBaoRelationThirdOrder(startTimeStr, p, Constant.TAOBAO_AUTH_APPKEY,
               Constant.TAOBAO_AUTH_APPSECRET);
         addRelationAndSpecialOrder(orderList);
      }
   }
   /**
    * 按天更新
    *
    * @param day
    */
   private void updateRelationOrderByDay(String day) {
      long timestamp = TimeUtil.convertToTimeTemp(day, "yyyy-MM-dd");
      for (int i = 0; i < 72; i++) {
         updateRelationOrder(timestamp + 1000 * 60 * 20L * i);
      }
   }
   /**
    * 更新会员订单(最多20分钟)
    *
    * @param startTime
    */
   private void updateSpecialOrder(long startTime) {
      String startTimeStr = TimeUtil.getGernalTime(startTime, "yyyy-MM-dd HH:mm:ss");
      List<TaoBaoOrder> orderList = TaoKeApiUtil.getTaoBaoSpecialOrder(startTimeStr, Constant.TAOBAO_AUTH_APPKEY,
      List<TaoBaoOrder> orderList = TaoKeApiUtil.getTaoBaoSpecialOrder(startTimeStr, 1, Constant.TAOBAO_AUTH_APPKEY,
            Constant.TAOBAO_AUTH_APPSECRET);
      addRelationAndSpecialOrder(orderList);
      orderList = TaoKeApiUtil.getTaoBaoSpecialThirdOrder(startTimeStr, 1, Constant.TAOBAO_AUTH_APPKEY,
            Constant.TAOBAO_AUTH_APPSECRET);
      addRelationAndSpecialOrder(orderList);
   }
   /**
    * 更新会员订单()
    *
    * @param fromPage-开始页码
    * @param toPage-结束页码(每页20条数据)
    */
   private void updateSpecialOrder(int fromPage, int toPage) {
      String startTimeStr = TimeUtil.getGernalTime(System.currentTimeMillis() - 1000 * 60 * 60 * 24 * 90L,
            "yyyy-MM-dd HH:mm:ss");
      for (int p = fromPage; p < toPage; p++) {
         List<TaoBaoOrder> orderList = TaoKeApiUtil.getTaoBaoSpecialOrder(startTimeStr, p,
               Constant.TAOBAO_AUTH_APPKEY, Constant.TAOBAO_AUTH_APPSECRET);
         addRelationAndSpecialOrder(orderList);
      }
   }
   /**
    * 按天更新
    *
    * @param day
    */
   private void updateSpecialOrderByDay(String day) {
      long timestamp = TimeUtil.convertToTimeTemp(day, "yyyy-MM-dd");
      for (int i = 0; i < 72; i++) {
         updateSpecialOrder(timestamp + 1000 * 60 * 20L * i);
      }
   }
   private void addRelationAndSpecialOrder(List<TaoBaoOrder> orderList) {
@@ -102,10 +180,34 @@
   public void doJob1() {
      if (!Constant.IS_TASK)
         return;
      long currentTime = System.currentTimeMillis();
      // 爬取19分钟之前到现在的
      updateRelationOrder(currentTime - 1000 * 60 * 19L);
      updateSpecialOrder(currentTime - 1000 * 60 * 19L);
      // 爬取最近3页数据
      updateRelationOrder(1, 3);
      updateSpecialOrder(1, 3);
   }
   // 每5分钟更新(3-10页数据)
   @Scheduled(cron = "0 0/5 * * * ? ")
   public void doJob2() {
      if (!Constant.IS_TASK)
         return;
      updateRelationOrder(3, 11);
      updateSpecialOrder(3, 11);
   }
   // 每个小时更新10-1000页数据
   @Scheduled(cron = "0 0 0/1 * * ? ")
   public void doJob3() {
      if (!Constant.IS_TASK)
         return;
      Calendar calendar = Calendar.getInstance();
      int h = calendar.get(Calendar.HOUR_OF_DAY);
      // 每个小时更新100页数据
      int fromPage = h * 100;
      if (fromPage <= 0)
         fromPage = 11;
      int toPage = h * 100 + 100;
      updateRelationOrder(fromPage, toPage);
      updateSpecialOrder(fromPage, toPage);
   }
}