yujian
2019-07-31 f4548a3ee46afe45da4ee2a42dc169c575deee9f
fanli/src/main/java/com/yeshi/fanli/job/UpdateRelationAndSpecialOrderJob.java
@@ -1,6 +1,5 @@
package com.yeshi.fanli.job;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -19,7 +18,7 @@
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.taobao.TaoBaoOrderUtil;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
import com.yeshi.fanli.util.taobao.TaoKeOrderApiUtil;
/**
 * 淘宝渠道订单更新
@@ -37,18 +36,6 @@
   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, 1, Constant.TAOBAO_AUTH_APPKEY,
            Constant.TAOBAO_AUTH_APPSECRET);
      addRelationAndSpecialOrder(orderList);
   }
   /**
    * 更新渠道订单
    * 
    * @param fromPage
@@ -56,86 +43,31 @@
    * @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);
   public void updateRelationAndSpecialOrder(long startTime, long endTime) {
      List<TaoBaoOrder> list = TaoKeOrderApiUtil.getSpecialOrder(startTime, endTime);
      List<TaoBaoOrder> list1 = TaoKeOrderApiUtil.getThirdSpecialOrder(startTime, endTime);
      List<TaoBaoOrder> list2 = TaoKeOrderApiUtil.getRelationOrder(startTime, endTime);
      List<TaoBaoOrder> list3 = TaoKeOrderApiUtil.getThirdRelationOrder(startTime, endTime);
      if (list1 != null && list1.size() > 0)
         list.addAll(list1);
      if (list2 != null && list2.size() > 0)
         list.addAll(list2);
      if (list3 != null && list3.size() > 0)
         list.addAll(list3);
      // 爬取到的订单号
      if (list != null)
         for (TaoBaoOrder order : list) {
            LogHelper.orderInfo("爬取到的订单号:" + order.getOrderId());
         }
         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, 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);
      }
      addRelationAndSpecialOrder(list);
   }
   private void addRelationAndSpecialOrder(List<TaoBaoOrder> orderList) {
      try {
         taoBaoOrderService.addTaoBaoOrderList(orderList);
      } catch (Exception e) {
         try {
            LogHelper.errorDetailInfo(e);
         } catch (Exception e1) {
            e1.printStackTrace();
         }
         LogHelper.errorDetailInfo(e);
      }
      try {
@@ -156,7 +88,13 @@
               }
               CMQManager.getInstance().addTaoBaoOrderMsg(key, orders);
               LogHelper.orderInfo("添加到队列:" + key);
               if (orders != null && orders.size() > 0 && System.currentTimeMillis()
                     - TimeUtil.convertToTimeTemp(orders.get(0).getCreateTime(), "yyyy-MM-dd HH:mm:ss") < 1000
                           * 60 * 10L)// 10分钟内产生的单作为新订单处理
                  CMQManager.getInstance().addTaoBaoNewOrderMsg(key);
               else
                  CMQManager.getInstance().addTaoBaoOrderMsg(key);
               try {
                  // 20分钟内不再处理
@@ -167,11 +105,7 @@
            }
         }
      } catch (Exception e) {
         try {
            LogHelper.errorDetailInfo(e);
         } catch (Exception e1) {
            e1.printStackTrace();
         }
         LogHelper.errorDetailInfo(e);
      }
   }
@@ -180,34 +114,33 @@
   public void doJob1() {
      if (!Constant.IS_TASK)
         return;
      // 爬取最近3页数据
      updateRelationOrder(1, 3);
      updateSpecialOrder(1, 3);
      // 爬取近20分钟的数据
      LogHelper.orderInfo("爬单:30s爬取一次单");
      long endTime = System.currentTimeMillis();
      updateRelationAndSpecialOrder(endTime - 1000 * 60 * 20L, endTime);
   }
   // 每5分钟更新(3-10页数据)
   // 每5分钟更新(近1天数据)
   @Scheduled(cron = "0 0/5 * * * ? ")
   public void doJob2() {
      if (!Constant.IS_TASK)
         return;
      updateRelationOrder(3, 11);
      updateSpecialOrder(3, 11);
      long endTime = System.currentTimeMillis();
      updateRelationAndSpecialOrder(endTime - 1000 * 60 * 60 * 24L, endTime);
   }
   // 每个小时更新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);
      // 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;
   }
}