admin
2020-07-29 c338aa60df58bee9f4c25afedf94fe6930a119c1
fanli/src/main/java/com/yeshi/fanli/job/order/taobao/UpdateTBRelationAndSpecialOrderJob.java
@@ -7,6 +7,7 @@
import javax.annotation.Resource;
import com.yeshi.fanli.util.*;
import org.springframework.stereotype.Component;
import com.xxl.job.core.biz.model.ReturnT;
@@ -14,10 +15,6 @@
import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.order.tb.TaoBaoOrderService;
import com.yeshi.fanli.util.CMQManager;
import com.yeshi.fanli.util.RedisKeyEnum;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import org.yeshi.utils.TimeUtil;
import com.yeshi.fanli.util.taobao.TaoBaoOrderUtil;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
@@ -25,147 +22,149 @@
/**
 * 淘宝渠道订单更新
 *
 * @author hexiaohui
 *
 * @author hexiaohui
 */
@Component
public class UpdateTBRelationAndSpecialOrderJob {
   @Resource
   private TaoBaoOrderService taoBaoOrderService;
    @Resource
    private TaoBaoOrderService taoBaoOrderService;
   @Resource
   private RedisManager redisManager;
    @Resource
    private RedisManager redisManager;
   /**
    * 更新渠道订单
    *
    * @param fromPage
    *            开始页码
    * @param toPage
    *            结束页码(每页100条数据)
    */
   public void updateRelationAndSpecialOrder(long startTime, long endTime) {
      List<TaoBaoOrder> list = TaoKeOrderApiUtil.getTaoBaoSpecialOrderList(startTime, endTime, 1);
      List<TaoBaoOrder> list1 = TaoKeOrderApiUtil.getTaoBaoRelationOrderList(startTime, endTime, 1);
      if (list1 != null && list1.size() > 0)
         list.addAll(list1);
      // 爬取到的订单号
      if (list != null)
         for (TaoBaoOrder order : list) {
            LogHelper.orderInfo("会员/渠道爬取到的订单号:" + order.getOrderId());
         }
    /**
     * 更新渠道订单
     * @param startTime
     * @param endTime
     */
    public void updateRelationAndSpecialOrder(long startTime, long endTime) {
        List<TaoBaoOrder> list = TaoKeOrderApiUtil.getTaoBaoSpecialOrderList(startTime, endTime, 1);
        List<TaoBaoOrder> list1 = TaoKeOrderApiUtil.getTaoBaoRelationOrderList(startTime, endTime, 1);
        if (list1 != null && list1.size() > 0)
            list.addAll(list1);
        // 爬取到的订单号
        if (list != null)
            for (TaoBaoOrder order : list) {
                LogHelper.orderInfo("会员/渠道爬取到的订单号:" + order.getOrderId());
            }
      addRelationAndSpecialOrder(list);
   }
        addRelationAndSpecialOrder(list);
    }
   /**
    * 按付款时间查询
    *
    * @param startTime
    * @param endTime
    */
   public void updateRelationAndSpecialPaidOrder(long startTime, long endTime) {
      List<TaoBaoOrder> list = TaoKeOrderApiUtil.getTaoBaoSpecialOrderList(startTime, endTime, 2);
      List<TaoBaoOrder> list1 = TaoKeOrderApiUtil.getTaoBaoRelationOrderList(startTime, endTime, 2);
      if (list1 != null && list1.size() > 0)
         list.addAll(list1);
      // 爬取到的订单号
      if (list != null)
         for (TaoBaoOrder order : list) {
            LogHelper.orderInfo("会员/渠道爬取到的订单号:" + order.getOrderId());
         }
    /**
     * 按付款时间查询
     *
     * @param startTime
     * @param endTime
     */
    public void updateRelationAndSpecialPaidOrder(long startTime, long endTime) {
        List<TaoBaoOrder> list = TaoKeOrderApiUtil.getTaoBaoSpecialOrderList(startTime, endTime, 2);
        List<TaoBaoOrder> list1 = TaoKeOrderApiUtil.getTaoBaoRelationOrderList(startTime, endTime, 2);
        if (list1 != null && list1.size() > 0)
            list.addAll(list1);
        // 爬取到的订单号
        if (list != null)
            for (TaoBaoOrder order : list) {
                LogHelper.orderInfo("会员/渠道爬取到的订单号:" + order.getOrderId());
            }
      addRelationAndSpecialOrder(list);
   }
        addRelationAndSpecialOrder(list);
    }
   public void updateRelationAndSpecialSettleOrder(long startTime, long endTime) {
      List<TaoBaoOrder> list = TaoKeOrderApiUtil.getTaoBaoSpecialOrderList(startTime, endTime, 3);
      List<TaoBaoOrder> list1 = TaoKeOrderApiUtil.getTaoBaoRelationOrderList(startTime, endTime, 3);
      if (list1 != null && list1.size() > 0)
         list.addAll(list1);
      // 爬取到的订单号
      if (list != null)
         for (TaoBaoOrder order : list) {
            LogHelper.orderInfo("会员/渠道爬取到的订单号:" + order.getOrderId());
         }
      addRelationAndSpecialOrder(list);
   }
    public void updateRelationAndSpecialSettleOrder(long startTime, long endTime) {
        List<TaoBaoOrder> list = TaoKeOrderApiUtil.getTaoBaoSpecialOrderList(startTime, endTime, 3);
        List<TaoBaoOrder> list1 = TaoKeOrderApiUtil.getTaoBaoRelationOrderList(startTime, endTime, 3);
        if (list1 != null && list1.size() > 0)
            list.addAll(list1);
        // 爬取到的订单号
        if (list != null)
            for (TaoBaoOrder order : list) {
                LogHelper.orderInfo("会员/渠道爬取到的订单号:" + order.getOrderId());
            }
        addRelationAndSpecialOrder(list);
    }
   private void addRelationAndSpecialOrder(List<TaoBaoOrder> orderList) {
      try {
         taoBaoOrderService.addTaoBaoOrderList(orderList);
      } catch (Exception e) {
         LogHelper.errorDetailInfo(e);
      }
    private void addRelationAndSpecialOrder(List<TaoBaoOrder> orderList) {
        //5分钟不更新就报警
        try {
            redisManager.cacheCommonString(RedisKeyEnum.monitor.getKey() + Constant.SOURCE_TYPE_TAOBAO, "1", 60 * 5);
        } catch (Exception e) {
        }
      try {
         Map<String, List<TaoBaoOrder>> map = TaoBaoOrderUtil.classifyTaoBaoOrderByOrderId(orderList);
         if (map != null) {
            Iterator<String> its = map.keySet().iterator();
            while (its.hasNext()) {
               String key = its.next();
               List<TaoBaoOrder> orders = map.get(key);
               String redisKey = RedisKeyEnum.getRedisKey(RedisKeyEnum.addOrderQueue,
                     TaoBaoOrderUtil.getOrderDataHashCode(orders));
               // redis做频率限制
               try {
                  if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(redisKey))) {
                     continue;
                  }
        try {
            taoBaoOrderService.addTaoBaoOrderList(orderList);
        } catch (Exception e) {
            LogHelper.errorDetailInfo(e);
        }
               } catch (Exception e) {
        try {
            Map<String, List<TaoBaoOrder>> map = TaoBaoOrderUtil.classifyTaoBaoOrderByOrderId(orderList);
            if (map != null) {
                Iterator<String> its = map.keySet().iterator();
                while (its.hasNext()) {
                    String key = its.next();
                    List<TaoBaoOrder> orders = map.get(key);
                    String redisKey = RedisKeyEnum.getRedisKey(RedisKeyEnum.addOrderQueue,
                            TaoBaoOrderUtil.getOrderDataHashCode(orders));
                    // redis做频率限制
                    try {
                        if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(redisKey))) {
                            continue;
                        }
               }
                    } catch (Exception e) {
               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分钟内不再处理
                  redisManager.cacheCommonString(redisKey, "1", 60 * 20);
               } catch (Exception e) {
                    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);
               }
            }
         }
      } catch (Exception e) {
         LogHelper.errorDetailInfo(e);
      }
   }
                    try {
                        // 20分钟内不再处理
                        redisManager.cacheCommonString(redisKey, "1", 60 * 20);
                    } catch (Exception e) {
   @XxlJob("updateTBRelationAndSpecialOrderHandler")
   public ReturnT<String> updateTBRelationAndSpecialOrder(String param) throws Exception {
      if ("1".equalsIgnoreCase(param)) {//  爬取近20分钟的数据
         doJob1();
      } else if ("1day".equalsIgnoreCase(param)) {// 每5分钟更新(近1天数据)
         doJob2();
      }
      return ReturnT.SUCCESS;
   }
                    }
                }
            }
        } catch (Exception e) {
            LogHelper.errorDetailInfo(e);
        }
    }
   // 每30s爬取一次
   public void doJob1() {
      LogHelper.job("爬单:30s爬取一次单");
      Date systemDate = TaoKeApiUtil.getTaoBaoSystemTime();
      long endTime = systemDate != null ? systemDate.getTime() : System.currentTimeMillis();
      updateRelationAndSpecialOrder(endTime - 1000 * 60 * 20L, endTime);
      updateRelationAndSpecialPaidOrder(endTime - 1000 * 60 * 20L, endTime);
      updateRelationAndSpecialSettleOrder(endTime - 1000 * 60 * 20L, endTime);
   }
    @XxlJob("updateTBRelationAndSpecialOrderHandler")
    public ReturnT<String> updateTBRelationAndSpecialOrder(String param) throws Exception {
        if ("1".equalsIgnoreCase(param)) {//  爬取近20分钟的数据
            doJob1();
        } else if ("1day".equalsIgnoreCase(param)) {// 每5分钟更新(近1天数据)
            doJob2();
        }
        return ReturnT.SUCCESS;
    }
   // 每5分钟更新(近1天数据)
   public void doJob2() {
      LogHelper.job("爬单:5min爬取一次单");
      Date systemDate = TaoKeApiUtil.getTaoBaoSystemTime();
      long endTime = systemDate != null ? systemDate.getTime() : System.currentTimeMillis();
      updateRelationAndSpecialOrder(endTime - 1000 * 60 * 60 * 24L, endTime);
      updateRelationAndSpecialSettleOrder(endTime - 1000 * 60 * 60 * 24L, endTime);
   }
    // 每30s爬取一次
    public void doJob1() {
        LogHelper.job("爬单:30s爬取一次单");
        Date systemDate = TaoKeApiUtil.getTaoBaoSystemTime();
        long endTime = systemDate != null ? systemDate.getTime() : System.currentTimeMillis();
        updateRelationAndSpecialOrder(endTime - 1000 * 60 * 20L, endTime);
        updateRelationAndSpecialPaidOrder(endTime - 1000 * 60 * 20L, endTime);
        updateRelationAndSpecialSettleOrder(endTime - 1000 * 60 * 20L, endTime);
    }
    // 每5分钟更新(近1天数据)
    public void doJob2() {
        LogHelper.job("爬单:5min爬取一次单");
        Date systemDate = TaoKeApiUtil.getTaoBaoSystemTime();
        long endTime = systemDate != null ? systemDate.getTime() : System.currentTimeMillis();
        updateRelationAndSpecialOrder(endTime - 1000 * 60 * 60 * 24L, endTime);
        updateRelationAndSpecialSettleOrder(endTime - 1000 * 60 * 60 * 24L, endTime);
    }
}