From 207dc8655711cddac2653e18b51e58a88dba2084 Mon Sep 17 00:00:00 2001 From: yj <Administrator@192> Date: 星期五, 06 三月 2020 18:14:36 +0800 Subject: [PATCH] 发圈处理 --- fanli/src/main/java/com/yeshi/fanli/job/order/jd/UpdateJDOrderJob.java | 83 ++++++++++++++++++++++++++++++++++++++--- 1 files changed, 77 insertions(+), 6 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/job/order/jd/UpdateJDOrderJob.java b/fanli/src/main/java/com/yeshi/fanli/job/order/jd/UpdateJDOrderJob.java index 1f3f905..233ebd5 100644 --- a/fanli/src/main/java/com/yeshi/fanli/job/order/jd/UpdateJDOrderJob.java +++ b/fanli/src/main/java/com/yeshi/fanli/job/order/jd/UpdateJDOrderJob.java @@ -12,9 +12,13 @@ import com.yeshi.fanli.dto.jd.JDOrderResult; import com.yeshi.fanli.entity.jd.JDOrder; import com.yeshi.fanli.exception.jd.JDOrderException; -import com.yeshi.fanli.service.inter.jd.JDOrderService; +import com.yeshi.fanli.log.LogHelper; +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 com.yeshi.fanli.util.TimeUtil; import com.yeshi.fanli.util.cmq.JDOrderCMQManager; import com.yeshi.fanli.util.jd.JDApiUtil; @@ -35,18 +39,28 @@ */ public void saveJDOrders(List<JDOrder> jdOrderList) { for (JDOrder order : jdOrderList) { - if (order.getValidCode() == 15)// 杩囨护鎺変唬浠樻鐘舵�� + LogHelper.orderInfo("浜笢璁㈠崟:" + order.getOrderId() + "-" + order.getValidCode()); + if (order.getValidCode() == 15)// 杩囨护鎺夊緟浠樻 continue; + + // 闃叉澶氫釜鍟嗗搧鎷嗗崟闂锛岀埇鍙� + if (order.getOrderItemList().size() > 1 + && order.getOrderTime() > System.currentTimeMillis() - 1000 * 60 * 3L) { + continue; + } + try { jdOrderService.addJDOrder(order); /** * 鍋氶鐜囬檺鍒� */ - String key = "jd-order-" + order.getOrderId(); + String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.JDOrder, order.getOrderId() + ""); String result = redisManager.getCommonString(key); - - JDOrderCMQManager.getInstance().addJDOrder(order.getOrderId() + ""); - redisManager.cacheCommonString(key, "1", 60 * 60 * 2);// 2灏忔椂鍐呬笉鍐嶆洿鏂� + // 鍒ゆ柇 + if (StringUtil.isNullOrEmpty(result)) { + JDOrderCMQManager.getInstance().addJDOrder(order.getOrderId() + ""); + redisManager.cacheCommonString(key, "1", 60 * 60 * 2);// 2灏忔椂鍐呬笉鍐嶆洿鏂� + } } catch (JDOrderException e) { e.printStackTrace(); } @@ -60,6 +74,7 @@ public void updateSoonOrder() { if (!Constant.IS_TASK) return; + LogHelper.job("寮�濮嬬埇鍙栦含涓滆鍗�"); long now = System.currentTimeMillis(); JDOrderResult result = JDApiUtil.getOrderList(1, 200, new Date(now), JDApiUtil.ORDER_TYPE_CREATETIME); @@ -93,4 +108,60 @@ saveJDOrders(jdOrderList); } + /** + * 鏇存柊涓�涓皬鏃剁殑璁㈠崟 + * + * @param date + */ + private List<JDOrder> getHourOrder(Date date) { + List<JDOrder> jdOrderList = new ArrayList<>(); + int pageSize = 200; + int page = 1; + JDOrderResult result = JDApiUtil.getOrderList(page++, pageSize, date, JDApiUtil.ORDER_TYPE_UPDATETIME); + if (result != null) { + jdOrderList.addAll(result.getOrderList()); + while (result != null && result.isHasMore()) { + result = JDApiUtil.getOrderList(page++, pageSize, date, JDApiUtil.ORDER_TYPE_UPDATETIME); + if (result != null) + jdOrderList.addAll(result.getOrderList()); + } + } + return jdOrderList; + } + + /** + * 鏇存柊涓�澶╃殑鏁版嵁 + * + * @param date + */ + public void updateDayOrder(Date date) { + Date now = new Date(); + List<JDOrder> orderList = new ArrayList<>(); + Date startTime = new Date( + TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(date.getTime(), "yyyy-MM-dd"), "yyyy-MM-dd")); + // 涓�涓皬鏃朵负涓�涓闀� + for (int i = 0; i < 24; i++) { + Date da = new Date(startTime.getTime() + 1000 * 60 * 60L * i); + if (da.getTime() > now.getTime()) + break; + List<JDOrder> tempOrderList = getHourOrder(da); + if (tempOrderList != null && tempOrderList.size() > 0) + orderList.addAll(tempOrderList); + } + saveJDOrders(orderList); + } + + /** + * 鏇存柊鏈�杩�3澶╃殑璁㈠崟锛堟瘡澶╂棭涓婂噷鏅�0鐐硅繃10鍒嗭紝鏃╀笂8鐐硅繃10鍒嗭級 + */ + @Scheduled(cron = "0 10 0,8 * * ? ") + public void updateLatest3DayOrder() { + if (!Constant.IS_TASK) + return; + Date now = new Date(); + for (int i = 1; i < 4; i++) { + updateDayOrder(new Date(now.getTime() - 1000 * 60 * 60 * 24L * i)); + } + } + } -- Gitblit v1.8.0