Merge remote-tracking branch 'origin/master'
# Conflicts: # src/main/java/cn/van/business/util/JDUtils.java
This commit is contained in:
@@ -9,15 +9,12 @@ import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.util.DateUtils;
|
||||
import com.jd.open.api.sdk.DefaultJdClient;
|
||||
import com.jd.open.api.sdk.JdClient;
|
||||
import com.jd.open.api.sdk.domain.kplunion.GoodsService.request.query.BigFieldGoodsReq;
|
||||
import com.jd.open.api.sdk.domain.kplunion.OrderService.request.query.OrderRowReq;
|
||||
import com.jd.open.api.sdk.domain.kplunion.OrderService.response.query.GoodsInfo;
|
||||
import com.jd.open.api.sdk.domain.kplunion.OrderService.response.query.OrderRowResp;
|
||||
import com.jd.open.api.sdk.domain.kplunion.promotioncommon.PromotionService.request.get.PromotionCodeReq;
|
||||
import com.jd.open.api.sdk.request.kplunion.UnionOpenGoodsBigfieldQueryRequest;
|
||||
import com.jd.open.api.sdk.request.kplunion.UnionOpenOrderRowQueryRequest;
|
||||
import com.jd.open.api.sdk.request.kplunion.UnionOpenPromotionCommonGetRequest;
|
||||
import com.jd.open.api.sdk.response.kplunion.UnionOpenGoodsBigfieldQueryResponse;
|
||||
import com.jd.open.api.sdk.response.kplunion.UnionOpenOrderRowQueryResponse;
|
||||
import com.jd.open.api.sdk.response.kplunion.UnionOpenPromotionCommonGetResponse;
|
||||
import org.slf4j.Logger;
|
||||
@@ -184,7 +181,7 @@ public class JDUtils {
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
LocalDateTime lastMinute = now.minusMinutes(10).withSecond(0).withNano(0);
|
||||
|
||||
UnionOpenOrderRowQueryResponse response = fetchOrdersForDateTime(lastMinute, true,1); // 真实代表实时订单
|
||||
UnionOpenOrderRowQueryResponse response = fetchOrdersForDateTime(lastMinute, true, 1); // 真实代表实时订单
|
||||
if (response != null) {
|
||||
|
||||
int code = response.getQueryResult().getCode();
|
||||
@@ -228,41 +225,45 @@ public class JDUtils {
|
||||
*/
|
||||
@Scheduled(cron = "0 0 * * * ?")
|
||||
public void fetchHistoricalOrders() throws Exception {
|
||||
// 从设定的开始日期到昨天的同一时间
|
||||
System.out.println("开始拉取历史订单");
|
||||
// 拉最近两个月的订单
|
||||
// 获取当前时间,并调整为整点开始
|
||||
LocalDateTime startDate = LocalDateTime.now().minusMonths(2).truncatedTo(ChronoUnit.HOURS);
|
||||
|
||||
// 获取当前时间,并调整为整点开始
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
LocalDateTime lastHour = now.truncatedTo(ChronoUnit.HOURS);
|
||||
LocalDateTime startDate = lastHour.minusMonths(2).truncatedTo(ChronoUnit.HOURS);
|
||||
|
||||
|
||||
// 循环从两个月前到现在最近的整点
|
||||
while (!startDate.isEqual(lastHour)) {
|
||||
startDate = startDate.plusHours(1);
|
||||
UnionOpenOrderRowQueryResponse response = fetchOrdersForDateTime(startDate, false); // 假的代表历史订单
|
||||
if (response != null) {
|
||||
int code = response.getQueryResult().getCode();
|
||||
if (code == 200) {
|
||||
if (response.getQueryResult().getCode() == 200) {
|
||||
OrderRowResp[] orderRowResps = response.getQueryResult().getData();
|
||||
if (orderRowResps == null) {
|
||||
continue;
|
||||
}
|
||||
Integer pageIndex = 1;
|
||||
Boolean hasMore = true;
|
||||
|
||||
while (hasMore) {
|
||||
UnionOpenOrderRowQueryResponse response = fetchOrdersForDateTime(startDate, false, pageIndex); // 假的代表历史订单
|
||||
|
||||
if (response != null && response.getQueryResult().getCode() == 200) {
|
||||
OrderRowResp[] orderRowResps = response.getQueryResult().getData();
|
||||
|
||||
if (orderRowResps != null) {
|
||||
for (OrderRowResp orderRowResp : orderRowResps) {
|
||||
// 固化到数据库
|
||||
OrderRow orderRow = createOrderRow(orderRowResp);
|
||||
// 订单号不存在就保存,存在就更新订单状态
|
||||
orderRowRepository.save(orderRow);
|
||||
}
|
||||
if (response.getQueryResult().getHasMore()){
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// 判断是否有更多页面
|
||||
hasMore = response.getQueryResult().getHasMore();
|
||||
if (hasMore) {
|
||||
pageIndex++;
|
||||
}
|
||||
} else {
|
||||
hasMore = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 每处理完一个小时的数据,递增到下一个小时
|
||||
startDate = startDate.plusHours(1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -326,7 +327,7 @@ public class JDUtils {
|
||||
/**
|
||||
* 根据指定的日期时间拉取订单
|
||||
*/
|
||||
public UnionOpenOrderRowQueryResponse fetchOrdersForDateTime(LocalDateTime startTime, boolean isRealTime,Integer page) throws Exception {
|
||||
public UnionOpenOrderRowQueryResponse fetchOrdersForDateTime(LocalDateTime startTime, boolean isRealTime, Integer page) throws Exception {
|
||||
|
||||
LocalDateTime endTime = isRealTime ? startTime.plusMinutes(10) : startTime.plusHours(1);
|
||||
String key = startTime.format(DATE_TIME_FORMATTER);
|
||||
@@ -335,7 +336,7 @@ public class JDUtils {
|
||||
SetOperations<String, String> setOps = redisTemplate.opsForSet();
|
||||
|
||||
// 调用 API 以拉取订单
|
||||
UnionOpenOrderRowQueryResponse unionOpenOrderRowQueryResponse = getUnionOpenOrderRowQueryResponse(startTime, endTime,page);
|
||||
UnionOpenOrderRowQueryResponse unionOpenOrderRowQueryResponse = getUnionOpenOrderRowQueryResponse(startTime, endTime, page);
|
||||
|
||||
// 标记已拉取
|
||||
setOps.add(key, hourRange);
|
||||
@@ -694,7 +695,7 @@ public class JDUtils {
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public UnionOpenOrderRowQueryResponse getUnionOpenOrderRowQueryResponse(LocalDateTime start, LocalDateTime end) throws Exception {
|
||||
public UnionOpenOrderRowQueryResponse getUnionOpenOrderRowQueryResponse(LocalDateTime start, LocalDateTime end, Integer pageIndex) throws Exception {
|
||||
String startTime = start.format(DATE_TIME_FORMATTER);
|
||||
String endTime = end.format(DATE_TIME_FORMATTER);
|
||||
// 模拟 API 调用
|
||||
@@ -704,7 +705,7 @@ public class JDUtils {
|
||||
JdClient client = new DefaultJdClient(SERVER_URL, ACCESS_TOKEN, APP_KEY, SECRET_KEY);
|
||||
UnionOpenOrderRowQueryRequest request = new UnionOpenOrderRowQueryRequest();
|
||||
OrderRowReq orderReq = new OrderRowReq();
|
||||
orderReq.setPageIndex(1);
|
||||
orderReq.setPageIndex(pageIndex);
|
||||
orderReq.setPageSize(200);
|
||||
orderReq.setStartTime(startTime);
|
||||
orderReq.setEndTime(endTime);
|
||||
@@ -723,7 +724,6 @@ public class JDUtils {
|
||||
return client.execute(request);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 转链
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user