admin
2019-07-11 3824cbcaec6e6c67418d5280a53e9c2fedeef6f9
fanli/src/main/java/com/yeshi/fanli/job/UpdateOrderJob.java
@@ -1,6 +1,7 @@
package com.yeshi.fanli.job;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
@@ -11,21 +12,17 @@
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import com.yeshi.fanli.entity.bus.user.LostOrder;
import com.yeshi.fanli.entity.bus.user.Order;
import com.yeshi.fanli.entity.taobao.PidUser;
import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig;
import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
import com.yeshi.fanli.exception.TaoBaoOrderException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.common.DataMonitorService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoService;
import com.yeshi.fanli.service.inter.hongbao.ThreeSaleGiftService;
import com.yeshi.fanli.service.inter.order.LostOrderService;
import com.yeshi.fanli.service.inter.order.OrderItemServcie;
import com.yeshi.fanli.service.inter.order.OrderProcessService;
import com.yeshi.fanli.service.inter.order.OrderService;
import com.yeshi.fanli.service.inter.order.PidOrderService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoOrderService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoWeiQuanOrderService;
@@ -33,6 +30,7 @@
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TaoBaoConstant;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.taobao.TaoBaoOrderUtil;
import com.yeshi.fanli.util.taobao.TaoKeOrderApiUtil;
@@ -44,18 +42,6 @@
   public UpdateOrderJob() {
      System.out.println("初始化:UpdateOrderJob");
   }
   @Resource
   private OrderItemServcie orderItemServcie;
   @Resource
   private ThreeSaleGiftService threeSaleGiftService;
   @Resource
   private HongBaoService hongBaoService;
   @Resource
   private PidOrderService pidOrderService;
   @Resource
   private OrderProcessService orderProcessService;
@@ -95,19 +81,20 @@
      int page = 1;
      String startTimeStr = TimeUtil.getGernalTime(startTime, "yyyy-MM-dd HH:mm:ss");
      List<TaoBaoOrder> orderList = TaoKeOrderApiUtil.getTaoBaoAllOrder(startTimeStr, span, page,
            Constant.TAOBAO_AUTH_APPKEY, Constant.TAOBAO_AUTH_APPSECRET);
            TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
      while (orderList.size() == 100 * page) {
         page++;
         List<TaoBaoOrder> tempOrderList = TaoKeOrderApiUtil.getTaoBaoAllOrder(startTimeStr, span, page,
               Constant.TAOBAO_AUTH_APPKEY, Constant.TAOBAO_AUTH_APPSECRET);
               TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
         if (tempOrderList != null && tempOrderList.size() > 0)
            orderList.addAll(tempOrderList);
      }
      return orderList;
   }
   /**
    * 获取第三方普通订单
    *
    * @param startTime
    * @param span
    * @return
@@ -116,11 +103,11 @@
      int page = 1;
      String startTimeStr = TimeUtil.getGernalTime(startTime, "yyyy-MM-dd HH:mm:ss");
      List<TaoBaoOrder> orderList = TaoKeOrderApiUtil.getTaoBaoThirdAllOrder(startTimeStr, span, page,
            Constant.TAOBAO_AUTH_APPKEY, Constant.TAOBAO_AUTH_APPSECRET);
            TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
      while (orderList.size() == 100 * page) {
         page++;
         List<TaoBaoOrder> tempOrderList = TaoKeOrderApiUtil.getTaoBaoThirdAllOrder(startTimeStr, span, page,
               Constant.TAOBAO_AUTH_APPKEY, Constant.TAOBAO_AUTH_APPSECRET);
               TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
         if (tempOrderList != null && tempOrderList.size() > 0)
            orderList.addAll(tempOrderList);
      }
@@ -129,13 +116,14 @@
   /**
    * 获取某个区间段的订单
    *
    * @param startTime
    * @param endTime
    * @return
    */
   public static List<TaoBaoOrder> getCommonOrder(long startTime, long endTime) {
      List<TaoBaoOrder> orderList = new ArrayList<>();
      long span =(endTime - startTime)%1000==0? (endTime - startTime)/1000:(endTime - startTime)/1000+1;
      long span = (endTime - startTime) % 1000 == 0 ? (endTime - startTime) / 1000 : (endTime - startTime) / 1000 + 1;
      int count = (int) (span / 1200);
      if (span % 1200 != 0)
         count++;
@@ -153,17 +141,17 @@
      }
      return orderList;
   }
   /**
    * 爬取三方订单
    *
    * @param startTime
    * @param endTime
    * @return
    */
   public static List<TaoBaoOrder> getThirdCommonOrder(long startTime, long endTime) {
      List<TaoBaoOrder> orderList = new ArrayList<>();
      long span =(endTime - startTime)%1000==0? (endTime - startTime)/1000:(endTime - startTime)/1000+1;
      long span = (endTime - startTime) % 1000 == 0 ? (endTime - startTime) / 1000 : (endTime - startTime) / 1000 + 1;
      int count = (int) (span / 1200);
      if (span % 1200 != 0)
         count++;
@@ -200,36 +188,38 @@
   }
   public void updateOrder(long startTime, long endTime) {
//      老版本处理方式
      List<TaoBaoUnionConfig> configList = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID);
      List<TaoBaoOrder> orderList = new ArrayList<>();
      try {
         orderList = TaoBaoOrderUtil.getOrderList(startTime, endTime, configList.get(0));
      } catch (TaoBaoOrderException e2) {
         try {
            LogHelper.errorDetailInfo(e2);
         } catch (Exception e) {
            e.printStackTrace();
         }
      }
      List<TaoBaoOrder> thirdOrderList = new ArrayList<>();
      try {
         thirdOrderList = TaoBaoOrderUtil.getThirdServiceOrderList(startTime, endTime, configList.get(0));
      } catch (TaoBaoOrderException e2) {
         try {
            LogHelper.errorDetailInfo(e2);
         } catch (Exception e) {
            e.printStackTrace();
         }
      }
      if (thirdOrderList != null && thirdOrderList.size() > 0)
         orderList.addAll(thirdOrderList);
//新版本处理方式
//      List<TaoBaoOrder> orderList=   getCommonOrder(startTime, endTime);
//      List<TaoBaoOrder> tempOrderList2=getThirdCommonOrder(startTime, endTime);
//      if(tempOrderList2!=null&&tempOrderList2.size()>0)
//         orderList.addAll(tempOrderList2);
      // 老版本处理方式
      // List<TaoBaoUnionConfig> configList =
      // taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID);
      // List<TaoBaoOrder> orderList = new ArrayList<>();
      // try {
      // orderList = TaoBaoOrderUtil.getOrderList(startTime, endTime,
      // configList.get(0));
      // } catch (TaoBaoOrderException e2) {
      // try {
      // LogHelper.errorDetailInfo(e2);
      // } catch (Exception e) {
      // e.printStackTrace();
      // }
      // }
      // List<TaoBaoOrder> thirdOrderList = new ArrayList<>();
      // try {
      // thirdOrderList = TaoBaoOrderUtil.getThirdServiceOrderList(startTime,
      // endTime, configList.get(0));
      // } catch (TaoBaoOrderException e2) {
      // try {
      // LogHelper.errorDetailInfo(e2);
      // } catch (Exception e) {
      // e.printStackTrace();
      // }
      // }
      // if (thirdOrderList != null && thirdOrderList.size() > 0)
      // orderList.addAll(thirdOrderList);
      // 新版本处理方式
      List<TaoBaoOrder> orderList = getCommonOrder(startTime, endTime);
      List<TaoBaoOrder> tempOrderList2 = getThirdCommonOrder(startTime, endTime);
      if (tempOrderList2 != null && tempOrderList2.size() > 0)
         orderList.addAll(tempOrderList2);
      LogHelper.orderInfo("正在执行订单爬取结束,共有订单:" + orderList.size());
      addOrder(orderList);
@@ -276,7 +266,7 @@
      return orderList;
   }
   private void addOrder(List<TaoBaoOrder> orderList) {
   public void addOrder(List<TaoBaoOrder> orderList) {
      if (orderList != null)
         for (int i = 0; i < orderList.size(); i++) {
@@ -303,11 +293,8 @@
      try {
         taoBaoOrderService.addTaoBaoOrderList(orderList);
      } catch (Exception e) {
         try {
            LogHelper.errorDetailInfo(e);
         } catch (Exception e1) {
            e1.printStackTrace();
         }
         LogHelper.errorDetailInfo(e);
      }
      try {
@@ -339,20 +326,16 @@
            }
         }
      } catch (Exception e) {
         try {
            LogHelper.errorDetailInfo(e);
         } catch (Exception e1) {
            e1.printStackTrace();
         }
         LogHelper.errorDetailInfo(e);
      }
   }
   // 每15分钟爬取一次
//   @Scheduled(cron = "0 0/15 * * * ? ")
   @Scheduled(cron = "0 0/15 * * * ? ")
   public void doJob1() {
//      if (!Constant.IS_TASK)
//         return;
      long currentTime = System.currentTimeMillis();
      if (!Constant.IS_TASK)
         return;
      long currentTime = System.currentTimeMillis() - 1000 * 60;
      String h = TimeUtil.getGernalTime(currentTime, "HH");
      String m = TimeUtil.getGernalTime(currentTime, "mm");
      int mm = Integer.parseInt(h) * 60 + Integer.parseInt(m);
@@ -371,8 +354,9 @@
   public void doJob6() {
      if (!Constant.IS_TASK)
         return;
      long endTime=System.currentTimeMillis();
      updateOrder(endTime-1000*60*20L, endTime);
      long endTime = System.currentTimeMillis() - 1000 * 60;
      ;
      updateOrder(endTime - 1000 * 60 * 20L, endTime);
   }
   // 返利
@@ -409,18 +393,73 @@
      orderProcessService.weiQuanOrder(orderList);
   }
   // 处理分享商品所产生的订单(后续版本废除)
   // @Scheduled(cron = "0 0/2 * * * ? ")
   // public void doPidOrder() {
   // if (!Constant.IS_TASK)
   // return;
   // pidOrderService.doPidOrder();
   // }
   // 每6个小时执行一次
   @Scheduled(cron = "0 0 0/6 * * ? ")
   public void doLostOrder() {
      if (!Constant.IS_TASK)
         return;
      lostOrderService.processFail();
   }
   // 每2分钟执行一次
   @Scheduled(cron = "0 0/2 * * * ? ")
   public void addLostOrder() {
      if (!Constant.IS_TASK)
         return;
      LogHelper.test("处理丢失订单");
      List<LostOrder> list = lostOrderService.listByStateAndResultCode(LostOrder.STATE_PASS,
            LostOrder.RESULT_CODE_VERFING, 1, 50);
      if (list != null)
         for (LostOrder lo : list) {
            List<TaoBaoOrder> taoBaoOrderList = taoBaoOrderService.getTaoBaoOrderByOrderId(lo.getOrderId());
            // 清除频率限制
            if (taoBaoOrderList != null && taoBaoOrderList.size() > 0) {
               String key = "addorderqueue-" + lo.getOrderId();
               redisManager.removeCommonString(key);
               addOrder(taoBaoOrderList);
               LogHelper.test("自动处理淘宝订单:" + lo.getOrderId());
            }
         }
   }
   /**
    * 处理淘宝结算订单,30fen执行一次
    */
   @Scheduled(cron = "30 0 0/1 * * ? ")
   public void doSettleOrders() {
      if (!Constant.IS_TASK)
         return;
      // 处理3-15天前的订单,每天跑一次
      Calendar ca = Calendar.getInstance();
      int hour = ca.get(Calendar.HOUR_OF_DAY);
      long startTime = TimeUtil.convertToTimeTemp(
            TimeUtil.getGernalTime(ca.getTimeInMillis() - 1000 * 60 * 60 * 24 * 3L, "yyyy-MM-dd"), "yyyy-MM-dd")
            - hour * (1000 * 60 * 60 * 12L);
      long endTime = startTime + 1000 * 60 * 60 * 12L;
      List<TaoBaoOrder> orderList = TaoKeOrderApiUtil.getTaoBaoSettleOrders(startTime, endTime, false);
      List<TaoBaoOrder> tempOrderList = TaoKeOrderApiUtil.getTaoBaoSettleOrders(startTime, endTime, true);
      if (tempOrderList != null && tempOrderList.size() > 0)
         orderList.addAll(tempOrderList);
      addOrder(orderList);
   }
   /**
    * 13分钟更新最近13分钟的结算数据
    */
   @Scheduled(cron = "0 0/13 * * * ? ")
   public void doSettleOrdersToday() {
      if (!Constant.IS_TASK)
         return;
      // 处理3-15天前的订单,每天跑一次
      Calendar ca = Calendar.getInstance();
      long startTime = ca.getTimeInMillis() - 1000 * 60 * 5L - 1000 * 60 * 13L;
      long endTime = startTime + 1000 * 60 * 13L;
      List<TaoBaoOrder> orderList = TaoKeOrderApiUtil.getTaoBaoSettleOrders(startTime, endTime, false);
      List<TaoBaoOrder> tempOrderList = TaoKeOrderApiUtil.getTaoBaoSettleOrders(startTime, endTime, true);
      if (tempOrderList != null && tempOrderList.size() > 0)
         orderList.addAll(tempOrderList);
      addOrder(orderList);
   }
}