admin
2019-03-13 69bee82b81626b82b7f39f0e459e4f56b1699b51
fanli/src/main/java/com/yeshi/fanli/job/UpdateRelationAndSpecialOrderJob.java
@@ -21,7 +21,6 @@
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;
/**
@@ -39,21 +38,6 @@
   @Resource
   private RedisManager redisManager;
   @Resource
   private UpdateOrderJob updateOrderJob;
   /**
    * 更新渠道订单(最多20分钟)
    *
    * @param startTime
    */
   private void updateRelationOrder(long startTime) {
      String startTimeStr = TimeUtil.getGernalTime(startTime, "yyyy-MM-dd HH:mm:ss");
      List<TaoBaoOrder> orderList = TaoKeOrderApiUtil.getTaoBaoRelationOrder(startTimeStr, 1, Constant.TAOBAO_AUTH_APPKEY,
            Constant.TAOBAO_AUTH_APPSECRET);
      addRelationAndSpecialOrder(orderList);
   }
   /**
    * 更新渠道订单
    * 
@@ -62,146 +46,18 @@
    * @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");
      Comparator<TaoBaoOrder> cm = new Comparator<TaoBaoOrder>() {
         @Override
         public int compare(TaoBaoOrder o1, TaoBaoOrder o2) {
            long span = TimeUtil.convertToTimeTemp(o2.getCreateTime(), "yyyy-MM-dd HH:mm:ss")
                  - TimeUtil.convertToTimeTemp(o1.getCreateTime(), "yyyy-MM-dd HH:mm:ss");
            if (span > 0)
               return 1;
            else if (span == 0)
               return 0;
            else
               return -1;
         }
      };
      for (int p = fromPage; p < toPage; p++) {
         // 爬取2方订单
         List<TaoBaoOrder> orderList = TaoKeOrderApiUtil.getTaoBaoRelationOrder(startTimeStr, p,
               Constant.TAOBAO_AUTH_APPKEY, Constant.TAOBAO_AUTH_APPSECRET);
         Collections.sort(orderList, cm);
         List<TaoBaoOrder> commonOrderList = UpdateOrderJob.getCommonOrder(
               TimeUtil.convertToTimeTemp(orderList.get(orderList.size() - 1).getCreateTime(),
                     "yyyy-MM-dd HH:mm:ss"),
               TimeUtil.convertToTimeTemp(orderList.get(0).getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
         List<TaoBaoOrder> list = UpdateOrderJob.mixTaoBaoOrder(commonOrderList, orderList);
         Collections.sort(list, cm);
         addRelationAndSpecialOrder(list);
         orderList = TaoKeOrderApiUtil.getTaoBaoRelationThirdOrder(startTimeStr, p, Constant.TAOBAO_AUTH_APPKEY,
               Constant.TAOBAO_AUTH_APPSECRET);
         Collections.sort(orderList, cm);
         // 爬取三方订单
         commonOrderList = UpdateOrderJob.getThirdCommonOrder(
               TimeUtil.convertToTimeTemp(orderList.get(orderList.size() - 1).getCreateTime(),
                     "yyyy-MM-dd HH:mm:ss"),
               TimeUtil.convertToTimeTemp(orderList.get(0).getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
         list = UpdateOrderJob.mixTaoBaoOrder(commonOrderList, orderList);
         Collections.sort(list, cm);
         addRelationAndSpecialOrder(list);
      }
   }
   /**
    * 按天更新
    *
    * @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 = TaoKeOrderApiUtil.getTaoBaoSpecialOrder(startTimeStr, 1, Constant.TAOBAO_AUTH_APPKEY,
            Constant.TAOBAO_AUTH_APPSECRET);
      addRelationAndSpecialOrder(orderList);
      orderList = TaoKeOrderApiUtil.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) {
      // 最近90天的订单
      String startTimeStr = TimeUtil.getGernalTime(System.currentTimeMillis() - 1000 * 60 * 60 * 24 * 90L,
            "yyyy-MM-dd HH:mm:ss");
      Comparator<TaoBaoOrder> cm = new Comparator<TaoBaoOrder>() {
         @Override
         public int compare(TaoBaoOrder o1, TaoBaoOrder o2) {
            long span = TimeUtil.convertToTimeTemp(o2.getCreateTime(), "yyyy-MM-dd HH:mm:ss")
                  - TimeUtil.convertToTimeTemp(o1.getCreateTime(), "yyyy-MM-dd HH:mm:ss");
            if (span > 0)
               return 1;
            else if (span == 0)
               return 0;
            else
               return -1;
         }
      };
      for (int p = fromPage; p < toPage; p++) {
         // 爬取2方订单
         List<TaoBaoOrder> orderList = TaoKeOrderApiUtil.getTaoBaoSpecialOrder(startTimeStr, p,
               Constant.TAOBAO_AUTH_APPKEY, Constant.TAOBAO_AUTH_APPSECRET);
         Collections.sort(orderList, cm);
         List<TaoBaoOrder> commonOrderList = UpdateOrderJob.getCommonOrder(
               TimeUtil.convertToTimeTemp(orderList.get(orderList.size() - 1).getCreateTime(),
                     "yyyy-MM-dd HH:mm:ss"),
               TimeUtil.convertToTimeTemp(orderList.get(0).getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
         List<TaoBaoOrder> list = UpdateOrderJob.mixTaoBaoOrder(commonOrderList, orderList);
         Collections.sort(list, cm);
         addRelationAndSpecialOrder(list);
         // 爬取三方订单
         orderList = TaoKeOrderApiUtil.getTaoBaoSpecialThirdOrder(startTimeStr, p, Constant.TAOBAO_AUTH_APPKEY,
               Constant.TAOBAO_AUTH_APPSECRET);
         Collections.sort(orderList, cm);
         commonOrderList = UpdateOrderJob.getThirdCommonOrder(
               TimeUtil.convertToTimeTemp(orderList.get(orderList.size() - 1).getCreateTime(),
                     "yyyy-MM-dd HH:mm:ss"),
               TimeUtil.convertToTimeTemp(orderList.get(0).getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
         list = UpdateOrderJob.mixTaoBaoOrder(commonOrderList, orderList);
         Collections.sort(list, cm);
         addRelationAndSpecialOrder(list);
      }
   }
   /**
    * 按天更新
    *
    * @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 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);
      addRelationAndSpecialOrder(list);
   }
   private void addRelationAndSpecialOrder(List<TaoBaoOrder> orderList) {
@@ -257,34 +113,32 @@
   public void doJob1() {
      if (!Constant.IS_TASK)
         return;
      // 爬取最近3页数据
      updateRelationOrder(1, 3);
      updateSpecialOrder(1, 3);
      // 爬取近20分钟的数据
      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;
   }
}