From 9f56a3478708633de7e5f013901a4539b01b638c Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期二, 30 六月 2020 12:05:50 +0800
Subject: [PATCH] 订单结算时的红包
---
fanli/src/main/java/com/yeshi/fanli/job/order/jd/UpdateJDOrderJob.java | 146 ++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 128 insertions(+), 18 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 b8b1dd1..0a86614 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
@@ -6,16 +6,20 @@
import javax.annotation.Resource;
-import org.springframework.scheduling.annotation.Scheduled;
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.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.RedisKeyEnum;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
-import com.yeshi.fanli.util.cmq.JDOrderCMQManager;
+import com.yeshi.fanli.util.TimeUtil;
+import com.yeshi.fanli.util.cmq.order.JDOrderCMQManager;
import com.yeshi.fanli.util.jd.JDApiUtil;
//浠庢窐瀹濈埇鍘昏鍗曟洿鏂�
@@ -34,48 +38,154 @@
* @param jdOrderList
*/
public void saveJDOrders(List<JDOrder> jdOrderList) {
- for (JDOrder order : jdOrderList)
+ for (JDOrder order : jdOrderList) {
+ 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);
- if (!StringUtil.isNullOrEmpty(result))
- continue;
- 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();
}
+ }
}
/**
* 蹇�熻鍗曟洿鏂帮紙鐖彇鏈皬鏃跺唴鐨勫崟,姣忓垎閽熶竴娆★級
*/
- @Scheduled(cron = "0 0/1 * * * ? ")
- public void updateSoonOrder() {
- JDOrderResult result = JDApiUtil.getOrderList(1, 200, new Date(), JDApiUtil.ORDER_TYPE_CREATETIME);
- if (result != null && result.getOrderList() != null)
- saveJDOrders(result.getOrderList());
+ @XxlJob("updateJDOrderHandler")
+ public ReturnT<String> updateJDSoonOrder(String param) throws Exception {
+ 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();
+ }
+
+ return ReturnT.SUCCESS;
}
/**
* 鐖彇鏈�杩戜竴灏忔椂鍐呯殑鐘舵�佹洿鏂颁簡鐨勫崟(10鍒嗛挓涓�娆�)
*/
- @Scheduled(cron = "0 0/10 * * * ? ")
+
public void updateUpdateOrder() {
List<JDOrder> jdOrderList = new ArrayList<>();
int pageSize = 200;
int page = 1;
JDOrderResult result = JDApiUtil.getOrderList(page++, pageSize, new Date(), JDApiUtil.ORDER_TYPE_UPDATETIME);
- jdOrderList.addAll(result.getOrderList());
- while (result.isHasMore()) {
- result = JDApiUtil.getOrderList(page++, pageSize, new Date(), JDApiUtil.ORDER_TYPE_UPDATETIME);
+ if (result != null) {
jdOrderList.addAll(result.getOrderList());
+ while (result != null && result.isHasMore()) {
+ result = JDApiUtil.getOrderList(page++, pageSize, new Date(), JDApiUtil.ORDER_TYPE_UPDATETIME);
+ if (result != null)
+ jdOrderList.addAll(result.getOrderList());
+ }
}
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);
+ }
+
+ /**
+ * 鏇存柊鏈�杩戜竴澶╃殑鏁版嵁
+ *
+ * @param date
+ */
+ public void updateLatestDayOrder(Date date) {
+ Date now = new Date();
+ List<JDOrder> orderList = new ArrayList<>();
+ Date startTime = new Date(date.getTime() - 1000 * 60 * 60 * 24L);
+ // 涓�涓皬鏃朵负涓�涓闀�
+ 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鍒嗭級
+ */
+ public void updateLatest3DayOrder() {
+ 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