1
This commit is contained in:
114
src/main/java/cn/van/business/util/JDUtils.java
Normal file
114
src/main/java/cn/van/business/util/JDUtils.java
Normal file
@@ -0,0 +1,114 @@
|
||||
package cn.van.business.util;
|
||||
|
||||
|
||||
import cn.van.business.model.OrderRow;
|
||||
import cn.van.business.repository.OrderRowRepository;
|
||||
import com.jd.open.api.sdk.DefaultJdClient;
|
||||
import com.jd.open.api.sdk.JdClient;
|
||||
import com.jd.open.api.sdk.domain.kplunion.OrderService.request.query.OrderRowReq;
|
||||
import com.jd.open.api.sdk.domain.kplunion.OrderService.response.query.OrderRowResp;
|
||||
import com.jd.open.api.sdk.request.kplunion.UnionOpenOrderRowQueryRequest;
|
||||
import com.jd.open.api.sdk.response.kplunion.UnionOpenOrderRowQueryResponse;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author Leo
|
||||
* @version 1.0
|
||||
* @create 2024/11/5 17:40
|
||||
* @description:
|
||||
*/
|
||||
@Component
|
||||
public class JDUtils {
|
||||
private static final String SERVER_URL =
|
||||
"https://api.jd.com/routerjson";
|
||||
private static final String APP_KEY =
|
||||
"98e21c89ae5610240ec3f5f575f86a59";
|
||||
private static final String SECRET_KEY =
|
||||
"3dcb6b23a1104639ac433fd07adb6dfb";
|
||||
@Autowired
|
||||
private StringRedisTemplate redisTemplate;
|
||||
@Autowired
|
||||
private OrderRowRepository orderRowRepository;
|
||||
|
||||
private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
/**
|
||||
* 写两个方法,一个拉最新的订单。一个拉历史订单
|
||||
*/
|
||||
@Scheduled(cron = "0 0 * * * ?")
|
||||
public void getHistoryOrder() {
|
||||
// 因为只能一小时一小时的拉取订单,所以要循环的倒推去拉取历史订单,存到数据库
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
// 当前是2024-10-10 11:46:00 , 则生成一个 2024-10-10 11:00:00
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Scheduled(cron = "0 * * * * ?")
|
||||
public void getNewOrder() throws Exception {
|
||||
//一分钟一分钟拉取 2020-01-02 21:23:00
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
String startTime = sdf.format(new Date(System.currentTimeMillis() - 1000 * 60));
|
||||
String endTime = sdf.format(new Date());
|
||||
UnionOpenOrderRowQueryResponse response = getUnionOpenOrderRowQueryResponse(startTime, endTime);
|
||||
int code = response.getQueryResult().getCode();
|
||||
System.out.println("响应码:" + code);
|
||||
if (code == 200) {
|
||||
if (response.getQueryResult().getCode() == 200) {
|
||||
OrderRowResp[] orderRowResps = response.getQueryResult().getData();
|
||||
if (orderRowResps == null) {
|
||||
return;
|
||||
}
|
||||
for (OrderRowResp orderRowResp : orderRowResps) {
|
||||
// 固化到数据库
|
||||
OrderRow orderRow = new OrderRow();
|
||||
orderRow.setOrderId(orderRowResp.getOrderId());
|
||||
orderRow.setSkuId(orderRowResp.getSkuId());
|
||||
orderRow.setSkuName(orderRowResp.getSkuName());
|
||||
|
||||
orderRowRepository.save(orderRowResp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取订单列表
|
||||
*
|
||||
* @param startTime 开始时间
|
||||
* @param endTime 结束时间
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public UnionOpenOrderRowQueryResponse getUnionOpenOrderRowQueryResponse(String startTime, String endTime) throws Exception {
|
||||
String accessToken = "";
|
||||
JdClient client = new DefaultJdClient(SERVER_URL, accessToken, APP_KEY, SECRET_KEY);
|
||||
UnionOpenOrderRowQueryRequest request = new UnionOpenOrderRowQueryRequest();
|
||||
OrderRowReq orderReq = new OrderRowReq();
|
||||
orderReq.setPageIndex(1);
|
||||
orderReq.setPageSize(200);
|
||||
orderReq.setStartTime(startTime);
|
||||
orderReq.setEndTime(endTime);
|
||||
orderReq.setType(1);
|
||||
|
||||
|
||||
request.setOrderReq(orderReq);
|
||||
request.setVersion("1.0");
|
||||
request.setSignmethod("md5");
|
||||
// 时间戳,格式为yyyy-MM-dd HH:mm:ss,时区为GMT+8。API服务端允许客户端请求最大时间误差为10分钟
|
||||
Date date = new Date();
|
||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
request.setTimestamp(simpleDateFormat.format(date));
|
||||
|
||||
|
||||
return client.execute(request);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user