| | |
| | | package com.yeshi.fanli.job.order.pdd;
|
| | |
|
| | | import java.util.ArrayList;
|
| | | import java.util.Date;
|
| | | import java.util.List;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | |
|
| | | import org.springframework.scheduling.annotation.Scheduled;
|
| | | import org.springframework.stereotype.Component;
|
| | |
|
| | | import com.yeshi.fanli.dto.pdd.PDDOrderResult;
|
| | | import com.yeshi.fanli.entity.pdd.PDDOrder;
|
| | | import com.yeshi.fanli.exception.pdd.PDDOrderException;
|
| | | import com.yeshi.fanli.service.inter.pdd.PDDOrderService;
|
| | | import com.yeshi.fanli.util.RedisManager;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | | import com.yeshi.fanli.util.cmq.JDOrderCMQManager;
|
| | | import com.yeshi.fanli.util.cmq.PDDOrderCMQManager;
|
| | | import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil;
|
| | |
|
| | | //从淘宝爬去订单更新
|
| | | //@Component
|
| | | public class UpdatePDDOrderJob {
|
| | |
|
| | | @Resource
|
| | | private PDDOrderService pddOrderService;
|
| | |
|
| | | @Resource
|
| | | private RedisManager redisManager;
|
| | |
|
| | | /**
|
| | | * 保存订单
|
| | | * |
| | | * @param jdOrderList
|
| | | */
|
| | | public void savePDDOrders(List<PDDOrder> orderList) {
|
| | | for (PDDOrder order : orderList)
|
| | | try {
|
| | | pddOrderService.addOrder(order);
|
| | | /**
|
| | | * 做频率限制
|
| | | */
|
| | | String key = "pdd-order-" + order.getOrderSn();
|
| | | String result = redisManager.getCommonString(key);
|
| | | // if (!StringUtil.isNullOrEmpty(result))
|
| | | // continue;
|
| | | PDDOrderCMQManager.getInstance().addPDDOrder(order.getOrderSn() + "");
|
| | | redisManager.cacheCommonString(key, "1", 60 * 60 * 2);// 2小时内不再更新
|
| | | } catch (PDDOrderException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * 快速订单更新(爬取本小时内的单,每分钟一次)
|
| | | */
|
| | | @Scheduled(cron = "0 0/1 * * * ? ")
|
| | | public void updateSoonOrder() {
|
| | | // if (!Constant.IS_TASK)
|
| | | // return;
|
| | | Date now = null;
|
| | | now = PinDuoDuoApiUtil.getSystemTime();
|
| | | if (now == null)
|
| | | now = new Date();
|
| | | long endTime = now.getTime();
|
| | | long startTime = endTime - 1000 * 60 * 60;// 最近一个小时
|
| | | PDDOrderResult result = PinDuoDuoApiUtil.getOrdersList(1, 50, startTime, endTime);
|
| | | if (result != null && result.getOrderList() != null)
|
| | | savePDDOrders(result.getOrderList());
|
| | | }
|
| | |
|
| | | /**
|
| | | * 爬取最近1天的订单(30分钟一次)
|
| | | */
|
| | | @Scheduled(cron = "0 0/30 * * * ? ")
|
| | | public void updateUpdateOrder() {
|
| | | // if (!Constant.IS_TASK)
|
| | | // return;
|
| | | long endTime = System.currentTimeMillis() - 1000 * 60 * 60L;
|
| | | long startTime = System.currentTimeMillis() - 1000 * 60 * 60 * 24L;
|
| | | int page = 1;
|
| | | List<PDDOrder> pddOrderList = new ArrayList<>();
|
| | | PDDOrderResult result = PinDuoDuoApiUtil.getOrdersList(page++, 50, startTime, endTime);
|
| | | pddOrderList.addAll(result.getOrderList());
|
| | | while (result != null && pddOrderList.size() < result.getTotalCount()) {
|
| | | result = PinDuoDuoApiUtil.getOrdersList(page++, 50, startTime, endTime);
|
| | | if (result != null)
|
| | | pddOrderList.addAll(result.getOrderList());
|
| | | }
|
| | | savePDDOrders(pddOrderList);
|
| | | }
|
| | |
|
| | | }
|
| | | package com.yeshi.fanli.job.order.pdd; |
| | | |
| | | import com.xxl.job.core.biz.model.ReturnT; |
| | | import com.xxl.job.core.handler.annotation.XxlJob; |
| | | import com.yeshi.fanli.dto.mq.order.body.CommonOrderMQMsg; |
| | | import com.yeshi.fanli.dto.pdd.PDDOrderResult; |
| | | import com.yeshi.fanli.entity.pdd.PDDOrder; |
| | | import com.yeshi.fanli.exception.pdd.PDDOrderException; |
| | | import com.yeshi.fanli.service.inter.order.pdd.PDDOrderService; |
| | | import com.yeshi.fanli.util.Constant; |
| | | import com.yeshi.fanli.util.RedisKeyEnum; |
| | | import com.yeshi.fanli.util.RedisManager; |
| | | import com.yeshi.fanli.util.mq.cmq.order.OrdersCMQManager; |
| | | import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | //从淘宝爬去订单更新 |
| | | @Component |
| | | public class UpdatePDDOrderJob { |
| | | |
| | | @Resource |
| | | private PDDOrderService pddOrderService; |
| | | |
| | | @Resource |
| | | private RedisManager redisManager; |
| | | |
| | | @Resource |
| | | private OrdersCMQManager ordersCMQManager; |
| | | |
| | | /** |
| | | * 保存订单 |
| | | * |
| | | * @param orderList |
| | | */ |
| | | public void savePDDOrders(List<PDDOrder> orderList) { |
| | | //5分钟不更新就报警 |
| | | try { |
| | | redisManager.cacheCommonString(RedisKeyEnum.monitor.getKey() + Constant.SOURCE_TYPE_PDD, "1", 60 * 5); |
| | | } catch (Exception e) { |
| | | } |
| | | for (PDDOrder order : orderList) { |
| | | if (order.getOrderStatus() == 2) { |
| | | System.out.println(order); |
| | | } |
| | | |
| | | try { |
| | | pddOrderService.addOrder(order); |
| | | /** |
| | | * 做频率限制 |
| | | */ |
| | | String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.PDDOrder, order.getOrderSn() + ""); |
| | | String result = redisManager.getCommonString(key); |
| | | // if (!StringUtil.isNullOrEmpty(result)) |
| | | // continue; |
| | | ordersCMQManager.addOrder(new CommonOrderMQMsg(order.getOrderSn() + "",Constant.SOURCE_TYPE_PDD)); |
| | | |
| | | redisManager.cacheCommonString(key, "1", 60 * 60 * 2);// 2小时内不再更新 |
| | | } catch (PDDOrderException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 拼多多订单爬取 |
| | | */ |
| | | @XxlJob("updatePDDOrderHandler") |
| | | public ReturnT<String> updatePDDOrder(String param) throws Exception { |
| | | if ("1".equalsIgnoreCase(param)) {// 更新本小时内的单 |
| | | updateSoonOrder(); |
| | | } else if ("1day".equalsIgnoreCase(param)) {// 爬取最近1天的订单(30分钟一次) |
| | | updateUpdateOrder(); |
| | | } |
| | | return ReturnT.SUCCESS; |
| | | } |
| | | |
| | | /** |
| | | * 快速订单更新(爬取本小时内的单,每分钟一次) |
| | | */ |
| | | // @Scheduled(cron = "0 0/1 * * * ? ") |
| | | public void updateSoonOrder() { |
| | | Date now = null; |
| | | now = PinDuoDuoApiUtil.getSystemTime(); |
| | | if (now == null) |
| | | now = new Date(); |
| | | long endTime = now.getTime(); |
| | | long startTime = endTime - 1000 * 60 * 60;// 最近一个小时 |
| | | PDDOrderResult result = PinDuoDuoApiUtil.getOrdersList(1, 50, startTime, endTime); |
| | | if (result != null && result.getOrderList() != null) |
| | | savePDDOrders(result.getOrderList()); |
| | | } |
| | | |
| | | /** |
| | | * 爬取最近1天的订单(30分钟一次) |
| | | */ |
| | | // @Scheduled(cron = "0 0/30 * * * ? ") |
| | | public void updateUpdateOrder() { |
| | | |
| | | long endTime = System.currentTimeMillis() - 1000 * 60 * 60L; |
| | | long startTime = System.currentTimeMillis() - 1000 * 60 * 60 * 24L ; |
| | | |
| | | updateUpdateOrder(startTime,endTime); |
| | | } |
| | | |
| | | public void updateUpdateOrder(long startTime,long endTime) { |
| | | int page = 1; |
| | | List<PDDOrder> pddOrderList = new ArrayList<>(); |
| | | PDDOrderResult result = PinDuoDuoApiUtil.getOrdersList(page++, 50, startTime, endTime); |
| | | pddOrderList.addAll(result.getOrderList()); |
| | | while (result != null && pddOrderList.size() < result.getTotalCount()) { |
| | | result = PinDuoDuoApiUtil.getOrdersList(page++, 50, startTime, endTime); |
| | | if (result != null) |
| | | pddOrderList.addAll(result.getOrderList()); |
| | | } |
| | | savePDDOrders(pddOrderList); |
| | | } |
| | | |
| | | } |