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;
@@ -42,9 +43,32 @@
    */
   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);
      }
   }
   /**
@@ -66,9 +90,29 @@
    */
   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);
      }
   }
   /**
@@ -136,40 +180,34 @@
   public void doJob1() {
      if (!Constant.IS_TASK)
         return;
      long currentTime = System.currentTimeMillis();
      // 爬取21分钟之前到现在的
      updateRelationOrder(currentTime - 1000 * 60 * 20L);
      updateSpecialOrder(currentTime - 1000 * 60 * 20L);
      // 爬取最近3页数据
      updateRelationOrder(1, 3);
      updateSpecialOrder(1, 3);
   }
   // 每16分钟更新一次一天的(每天可更新近90天的数据)
   @Scheduled(cron = "0 0/16 * * * ? ")
   // 每5分钟更新(3-10页数据)
   @Scheduled(cron = "0 0/5 * * * ? ")
   public void doJob2() {
      if (!Constant.IS_TASK)
         return;
      long currentTime = System.currentTimeMillis();
      long dayStartTime = TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(currentTime, "yyyy-MM-dd"), "yyyy-MM-dd");
      int pos = (int) ((currentTime - dayStartTime) / 1000 * 60 * 16L);
      long time = dayStartTime - (pos + 1) * 1000 * 60 * 60 * 24L;
      // 只能更新最近90天的
      if (currentTime - time > 1000 * 60 * 60 * 24L * 90)
         return;
      updateRelationOrderByDay(TimeUtil.getGernalTime(time, "yyyy-MM-dd"));
      updateSpecialOrderByDay(TimeUtil.getGernalTime(time, "yyyy-MM-dd"));
      updateRelationOrder(3, 11);
      updateSpecialOrder(3, 11);
   }
   // 每个小时更新最近1天的数据
   // 每个小时更新10-1000页数据
   @Scheduled(cron = "0 0 0/1 * * ? ")
   public void doJob3() {
      if (!Constant.IS_TASK)
         return;
      long startTime = System.currentTimeMillis() - 1000 * 60 * 60 * 24L;
      for (int i = 0; i < 71; i++) {
         updateRelationOrder(startTime + 1000 * 60 * 20L * i);
         updateSpecialOrder(startTime + 1000 * 60 * 20L * i);
      }
      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);
   }
}