package com.yeshi.fanli.job; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; 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.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; import com.yeshi.fanli.util.CMQManager; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.RedisManager; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TimeUtil; import com.yeshi.fanli.util.taobao.TaoBao110Util; import com.yeshi.fanli.util.taobao.TaoBaoOrderUtil; //从淘宝爬去订单更新 @Component public class UpdateOrderJob { 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; @Resource private TaoBaoOrderUtil taoBaoOrderUtil; @Resource private TaoBaoOrderService taoBaoOrderService; @Resource private TaoBaoUnionConfigService taoBaoUnionConfigService; @Resource private TaoBaoWeiQuanOrderService taoBaoWeiQuanOrderService; @Resource private DataMonitorService dataMonitorService; @Resource private RedisManager redisManager; @Resource private LostOrderService lostOrderService; private void updateOrder(long startTime, long endTime) { List configList = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID); List 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 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); LogHelper.orderInfo("正在执行订单爬取结束,共有订单:" + orderList.size()); addOrder(orderList); try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } } private void addOrder(List orderList) { try { taoBaoOrderService.addTaoBaoOrderList(orderList); } catch (Exception e) { try { LogHelper.errorDetailInfo(e); } catch (Exception e1) { e1.printStackTrace(); } } try { Map> map = TaoBaoOrderUtil.classifyTaoBaoOrderByOrderId(orderList); if (map != null) { Iterator its = map.keySet().iterator(); while (its.hasNext()) { String key = its.next(); List orders = map.get(key); String redisKey = "addorderqueue-" + key; // redis做频率限制 try { if (!StringUtil.isNullOrEmpty(redisManager.getCommonString(redisKey))) { continue; } } catch (Exception e) { } CMQManager.getInstance().addTaoBaoOrderMsg(key, orders); try { // 6小时内不再处理 redisManager.cacheCommonString(redisKey, "1", 60 * 60 * 6); } catch (Exception e) { } } } } catch (Exception e) { try { LogHelper.errorDetailInfo(e); } catch (Exception e1) { e1.printStackTrace(); } } } // 每15分钟爬取一次 @Scheduled(cron = "0 0/15 * * * ? ") public void doJob1() { if (!Constant.IS_TASK) return; long currentTime = System.currentTimeMillis(); String h = TimeUtil.getGernalTime(currentTime, "HH"); String m = TimeUtil.getGernalTime(currentTime, "mm"); int mm = Integer.parseInt(h) * 60 + Integer.parseInt(m); int pos = mm / 15; if (pos >= 90) pos = 89; long startTime = TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(currentTime, "yyyy-MM-dd"), "yyyy-MM-dd") - (1000 * 60 * 60 * 24L * (90 - pos)); long endTime = startTime + 1000 * 60 * 60 * 24L; LogHelper.orderInfo("正在执行订单爬取..."); updateOrder(startTime, endTime); } // 淘宝推广订单 每隔3分13秒执行一次 @Scheduled(cron = "13 0/3 * * * ? ") public void doJob6() { if (!Constant.IS_TASK) return; List configList = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID); LogHelper.orderInfo("正在执行订单爬取..."); // 爬取1分钟以前的 long endTime = System.currentTimeMillis() - 1000 * 60 * 1L; List orderList = new ArrayList(); try { orderList = TaoBaoOrderUtil.getOrderList(endTime - 1000 * 60 * 60 * 24 * 2L, endTime, configList.get(0)); TaoBao110Util.rightTaoBaoOrderWarning(); } catch (TaoBaoOrderException e) { try { LogHelper.errorDetailInfo(e); TaoBao110Util.reportTaoBaoOrderWarning(e.getCode(), e.getMessage()); } catch (Exception e2) { e2.printStackTrace(); } } List thirdOrderList = new ArrayList<>(); try { thirdOrderList = TaoBaoOrderUtil.getThirdServiceOrderList(endTime - 1000 * 60 * 60 * 24 * 2L, endTime, configList.get(0)); } catch (TaoBaoOrderException e) { try { LogHelper.errorDetailInfo(e); } catch (Exception e2) { e2.printStackTrace(); } } if (thirdOrderList != null && thirdOrderList.size() > 0) orderList.addAll(thirdOrderList); if (orderList != null && orderList.size() > 0) dataMonitorService.parseTaoBaoOrderSuccess(); LogHelper.orderInfo("正在执行订单爬取结束,共有订单:" + orderList.size()); addOrder(orderList); } // 返利 @Scheduled(cron = "0 0/5 * * * ? ") public void doJob2() { if (!Constant.IS_TASK) return; doTaoBaoWeiQuan(); orderProcessService.fanli(); } // 每月25号9点执行返利 @Scheduled(cron = "0 0 9 25 * ? ") public void doJob3() { if (!Constant.IS_TASK) return; orderProcessService.fanliInvaiteAndShare(); } // 维权订单处理-处理最近60天的 // 30分钟一次 @Scheduled(cron = "0 0/30 * * * ? ") public void doTaoBaoWeiQuan() { if (!Constant.IS_TASK) return; List configList = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID); List orderList = TaoBaoOrderUtil.getWeiQuanOrders( System.currentTimeMillis() - 1000 * 60 * 60 * 24 * 60L, System.currentTimeMillis(), configList.get(0)); if (orderList != null) for (TaoBaoWeiQuanOrder order : orderList) taoBaoWeiQuanOrderService.addWeiQuanOrder(order);// 添加维权订单到数据库 // 处理维权订单 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() { lostOrderService.processFail(); } }