1、第一步声明一个线程池
ExecutorService service = Executors.newFixedThreadPool(15);
2、向线程池中添加一个任务
@Scheduled(fixedDelay = 2 * 60 * 1000)
void synOnceJDOrderOneMinus() {
service.execute(() -> {
logger.error("synOnceJDOrderOneMinus");
getJdOrder();
});
}
3、根据京东联盟API查询订单
private void getJdOrder() {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHH");
CommonInfo one = commonRepository.findOne(13);
CommonInfo two = commonRepository.findOne(14);
getJdOrder(1, sdf.format(new Date()), one, two);
Thread.sleep(5 * 1000);
getJdOrder(2, sdf.format(new Date()), one, two);
Thread.sleep(5 * 1000);
getJdOrder(3, sdf.format(new Date()), one, two);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
4、获取京东订单
private void getJdOrder(Integer type, String time, CommonInfo one, CommonInfo two) {
try {
String accessToken = "";
JdClient client = new DefaultJdClient(Config.JD_URL, accessToken, one != null ? one.getValue() : Config.AppKey, two != null ? two.getValue() : Config.Secret);
UnionOpenOrderQueryRequest request = new UnionOpenOrderQueryRequest();
OrderReq orderReq = new OrderReq();
orderReq.setPageNo(1);
orderReq.setPageSize(500);
orderReq.setType(type);
orderReq.setTime(time);
request.setOrderReq(orderReq);
UnionOpenOrderQueryResponse execute = client.execute(request);
OrderResp[] data = execute.getData();
if (execute.getData() != null && data.length > 0) {
for (OrderResp orderResps : data) {
saveJdOrder(orderResps);
}
}
} catch (JdException e) {
e.printStackTrace();
}
}
5、保存京东订单到本地商城。
private void saveJdOrder(OrderResp jdOrder) {
if (jdOrder != null && jdOrder.getSkuList().length > 0 && jdOrder.getOrderId() != null) {
SkuInfo skuInfo = jdOrder.getSkuList()[0];
DecimalFormat df = new DecimalFormat("#########.##");
UserInfo userInfo = userRepository.getUserByJd(String.valueOf(skuInfo.getPositionId()));
if (userInfo != null) {
PublisherOrderDtoBean publisherOrderDtoBean;
try {
publisherOrderDtoBean = orderRepository.findByRelationIdCount(String.valueOf(jdOrder.getOrderId()));
} catch (Exception e) {
List<PublisherOrderDtoBean> publisherOrderDtoBeans = orderRepository.findByRelationIdCountList(String.valueOf(jdOrder.getOrderId()));
for (int i = 1; i < publisherOrderDtoBeans.size(); i++) {
orderJpaRepository.deleteById(publisherOrderDtoBeans.get(i).getId());
}
publisherOrderDtoBean = publisherOrderDtoBeans.get(0);
}
if (publisherOrderDtoBean == null) {
PublisherOrderDtoBean o = new PublisherOrderDtoBean();
o.setFromInfo("jd");
o.setIsJifen(0);
o.setIsGif(0);
o.setBalance(0);
o.setRelation_id(Long.valueOf(userInfo.getRelationId()));
o.setInvitation(userInfo.getInvitation());
o.setAdzone_id(109264550298L);
o.setAdzone_name(Config.BASE_NAME);
o.setOrder_type("京东");
CommonInfo one = commonRepository.findOne(19);
o.setItem_img(one.getValue().split(":")[1]+"/logo.png");
o.setItem_title(skuInfo.getSkuName());
o.setTrade_id(String.valueOf(jdOrder.getOrderId()));
o.setTrade_parent_id(String.valueOf(jdOrder.getOrderId()));
o.setItem_id(skuInfo.getSkuId());
o.setItem_price(String.valueOf(skuInfo.getEstimateCosPrice()));
o.setPub_share_pre_fee(String.valueOf(skuInfo.getEstimateFee()));
o.setAlipay_total_price(String.valueOf(skuInfo.getEstimateCosPrice()));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
o.setTb_paid_time(sdf.format(new Date(jdOrder.getOrderTime())));
o.setTk_paid_time(sdf.format(new Date(jdOrder.getOrderTime())));
float d = Float.parseFloat(df.format(Float.parseFloat(String.valueOf(skuInfo.getEstimateFee()))));
o.setTk_status(12);
newsUserDownOrder(o, userInfo, d, df);
} else {
setJdStatus(jdOrder, publisherOrderDtoBean, userInfo);
}
}
}
}