| | |
| | | package com.yeshi.fanli.job.order.jd; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | import com.yeshi.fanli.util.Constant; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import com.xxl.job.core.biz.model.ReturnT; |
| | | import com.xxl.job.core.handler.annotation.XxlJob; |
| | | import com.yeshi.fanli.dao.jd.JDOrderBackUpDao; |
| | | import com.yeshi.fanli.dto.jd.JDOrderForBackUpResult; |
| | | import com.yeshi.fanli.dto.jd.JDOrderResult; |
| | | import com.yeshi.fanli.dto.mq.order.body.CommonOrderMQMsg; |
| | | import com.yeshi.fanli.entity.jd.JDBackUpOrder; |
| | | import com.yeshi.fanli.entity.jd.JDOrder; |
| | | import com.yeshi.fanli.entity.order.CommonOrder; |
| | | import com.yeshi.fanli.exception.jd.JDOrderException; |
| | | import com.yeshi.fanli.log.LogHelper; |
| | | import com.yeshi.fanli.service.inter.order.CommonOrderService; |
| | | import com.yeshi.fanli.service.inter.order.jd.JDOrderService; |
| | | import com.yeshi.fanli.util.Constant; |
| | | 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.annotation.JobMonitor; |
| | | import com.yeshi.fanli.util.jd.JDApiUtil; |
| | | import com.yeshi.fanli.util.mq.cmq.order.JDOrderCMQManager; |
| | | import com.yeshi.fanli.util.mq.cmq.order.OrdersCMQManager; |
| | | import org.springframework.stereotype.Component; |
| | | import org.yeshi.utils.TimeUtil; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.*; |
| | | |
| | | //从淘宝爬去订单更新 |
| | | @Component |
| | |
| | | |
| | | @Resource |
| | | private RedisManager redisManager; |
| | | |
| | | @Resource |
| | | private JDOrderBackUpDao jdOrderBackUpDao; |
| | | |
| | | @Resource |
| | | private CommonOrderService commonOrderService; |
| | | |
| | | @Resource |
| | | private OrdersCMQManager ordersCMQManager; |
| | | |
| | | |
| | | /** |
| | | * 保存订单 |
| | |
| | | String result = redisManager.getCommonString(key); |
| | | // 判断 |
| | | if (StringUtil.isNullOrEmpty(result)) { |
| | | JDOrderCMQManager.getInstance().addJDOrder(order.getOrderId() + ""); |
| | | ordersCMQManager.addOrder(new CommonOrderMQMsg(order.getOrderId() + "", Constant.SOURCE_TYPE_JD)); |
| | | redisManager.cacheCommonString(key, "1", 60 * 60 * 2);// 2小时内不再更新 |
| | | } |
| | | } catch (JDOrderException e) { |
| | |
| | | */ |
| | | @XxlJob("updateJDOrderHandler") |
| | | public ReturnT<String> updateJDSoonOrder(String param) throws Exception { |
| | | if ("1".equalsIgnoreCase(param)) {// 更新本小时内的单 |
| | | LogHelper.job("开始爬取京东订单"); |
| | | long now = System.currentTimeMillis(); |
| | | try { |
| | | if ("1".equalsIgnoreCase(param)) {// 更新本小时内的单 |
| | | LogHelper.job("开始爬取京东订单"); |
| | | long now = System.currentTimeMillis(); |
| | | |
| | | JDOrderResult result = JDApiUtil.getOrderList(1, 200, new Date(now), JDApiUtil.ORDER_TYPE_CREATETIME); |
| | | if (result != null && result.getOrderList() != null) |
| | | saveJDOrders(result.getOrderList()); |
| | | // 查询上个小时的 |
| | | result = JDApiUtil.getOrderList(1, 200, new Date(now - 1000 * 60 * 60L), JDApiUtil.ORDER_TYPE_CREATETIME); |
| | | if (result != null && result.getOrderList() != null) |
| | | saveJDOrders(result.getOrderList()); |
| | | } else if ("1hour".equalsIgnoreCase(param)) {// 更新1小时内的订单 |
| | | updateUpdateOrder(); |
| | | } else if ("1day".equalsIgnoreCase(param)) {// 更新1天内的订单 |
| | | updateLatestDayOrder(new Date(System.currentTimeMillis())); |
| | | } else if ("3day".equalsIgnoreCase(param)) {// 更新最近3天更新的数据 |
| | | updateLatest3DayOrder(); |
| | | JDOrderResult result = JDApiUtil.getOrderList(1, 200, new Date(now), JDApiUtil.ORDER_TYPE_CREATETIME); |
| | | if (result != null && result.getOrderList() != null) |
| | | saveJDOrders(result.getOrderList()); |
| | | // 查询上个小时的 |
| | | result = JDApiUtil.getOrderList(1, 200, new Date(now - 1000 * 60 * 60L), JDApiUtil.ORDER_TYPE_CREATETIME); |
| | | if (result != null && result.getOrderList() != null) |
| | | saveJDOrders(result.getOrderList()); |
| | | } else if ("1hour".equalsIgnoreCase(param)) {// 更新1小时内的订单 |
| | | updateUpdateOrder(); |
| | | } else if ("1day".equalsIgnoreCase(param)) {// 更新1天内的订单 |
| | | updateLatestDayOrder(new Date(System.currentTimeMillis())); |
| | | } else if ("3day".equalsIgnoreCase(param)) {// 更新最近3天更新的数据 |
| | | updateLatest3DayOrder(); |
| | | } |
| | | }catch(Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | return ReturnT.SUCCESS; |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | @JobMonitor(key = "", maxSpaceTime = 60 * 60 * 25) |
| | | @XxlJob("order-jd-backup") |
| | | public ReturnT<String> backUpOrder(String param) throws Exception { |
| | | //更新90天以前的近3天的数据 |
| | | long startTime = System.currentTimeMillis() - 1000 * 60 * 60 * 24L * 90; |
| | | |
| | | for (int i = 0; i < 24 * 3; i++) { |
| | | List<JDBackUpOrder> orderList = getBackUpOrders(new Date(startTime + i * 1000 * 60 * 60L)); |
| | | if (orderList != null && orderList.size() > 0) { |
| | | for (JDBackUpOrder order : orderList) { |
| | | order.setUpdateTime(new Date()); |
| | | jdOrderBackUpDao.save(order); |
| | | } |
| | | } |
| | | } |
| | | return ReturnT.SUCCESS; |
| | | } |
| | | |
| | | |
| | | //处理很久没处理的数据 |
| | | @JobMonitor(key = "", maxSpaceTime = 60 * 60 * 25) |
| | | @XxlJob("order-jd-process-outdate") |
| | | public ReturnT<String> processoutOfDate(String param) throws Exception { |
| | | //查询 1个月到5个月处于已付款状态的数据 |
| | | long maxTime = System.currentTimeMillis() - 1000 * 60 * 60 * 24L * 30; |
| | | long minTime = maxTime - 1000 * 60 * 60 * 24L * 120; |
| | | List<CommonOrder> orderList = commonOrderService.listBySourceTypeAndStateAndThirdCrateTime(Constant.SOURCE_TYPE_JD, CommonOrder.STATE_FK, minTime, maxTime, 1, 200); |
| | | Set<String> orderIds = new HashSet<>(); |
| | | for (CommonOrder co : orderList) { |
| | | orderIds.add(co.getOrderNo()); |
| | | } |
| | | for (String orderId : orderIds) { |
| | | ordersCMQManager.addOrder(new CommonOrderMQMsg(orderId, Constant.SOURCE_TYPE_JD)); |
| | | } |
| | | return ReturnT.SUCCESS; |
| | | } |
| | | |
| | | private List<JDBackUpOrder> getBackUpOrders(Date hourDate) { |
| | | List<JDBackUpOrder> jdOrderList = new ArrayList<>(); |
| | | int pageSize = 200; |
| | | int page = 1; |
| | | JDOrderForBackUpResult result = JDApiUtil.getOrderListForBackUp(page++, pageSize, hourDate, JDApiUtil.ORDER_TYPE_UPDATETIME); |
| | | if (result != null) { |
| | | jdOrderList.addAll(result.getOrderList()); |
| | | while (result != null && result.isHasMore()) { |
| | | result = JDApiUtil.getOrderListForBackUp(page++, pageSize, hourDate, JDApiUtil.ORDER_TYPE_UPDATETIME); |
| | | if (result != null) |
| | | jdOrderList.addAll(result.getOrderList()); |
| | | } |
| | | } |
| | | return jdOrderList; |
| | | } |
| | | |
| | | |
| | | } |