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