|
@@ -1,22 +1,40 @@
|
|
|
package com.fjhx.victoriatourist.service.jd.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.date.DateUnit;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
+import cn.hutool.core.thread.ThreadUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
import cn.hutool.extra.spring.SpringUtil;
|
|
|
import com.alibaba.fastjson2.JSONObject;
|
|
|
-import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
|
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.fjhx.common.constant.SourceConstant;
|
|
|
+import com.fjhx.item.entity.product.po.ProductInfo;
|
|
|
+import com.fjhx.item.service.product.ProductInfoService;
|
|
|
+import com.fjhx.tenant.entity.dict.dto.DictTenantDataDto;
|
|
|
+import com.fjhx.tenant.entity.dict.dto.DictTenantTypeDto;
|
|
|
+import com.fjhx.tenant.entity.dict.po.DictTenantData;
|
|
|
+import com.fjhx.tenant.entity.dict.po.DictTenantType;
|
|
|
+import com.fjhx.tenant.service.dict.DictTenantDataService;
|
|
|
+import com.fjhx.tenant.service.dict.DictTenantTypeService;
|
|
|
import com.fjhx.victoriatourist.entity.jd.dto.JdInfoDto;
|
|
|
-import com.fjhx.victoriatourist.entity.jd.dto.JdInfoSelectDto;
|
|
|
import com.fjhx.victoriatourist.entity.jd.po.JdBack;
|
|
|
import com.fjhx.victoriatourist.entity.jd.po.JdBackDetails;
|
|
|
import com.fjhx.victoriatourist.entity.jd.po.JdOrder;
|
|
|
import com.fjhx.victoriatourist.entity.jd.po.JdOrderDetails;
|
|
|
+import com.fjhx.victoriatourist.entity.jd.vo.CommonDictData;
|
|
|
import com.fjhx.victoriatourist.entity.jd.vo.JdInfoVo;
|
|
|
import com.fjhx.victoriatourist.service.jd.*;
|
|
|
+import com.fjhx.victoriatourist.service.jd.constants.InitDictConstant;
|
|
|
+import com.fjhx.victoriatourist.service.jd.constants.JdParamConstant;
|
|
|
+import com.fjhx.victoriatourist.service.jd.factory.JdClientFactory;
|
|
|
import com.jd.open.api.sdk.DefaultJdClient;
|
|
|
import com.jd.open.api.sdk.JdClient;
|
|
|
+import com.jd.open.api.sdk.domain.supplier.PoCommonForJosWebService.response.getcomponentlist.Component;
|
|
|
+import com.jd.open.api.sdk.domain.supplier.PoCommonForJosWebService.response.getwaredeliverdistinctlist.WarehouseDto;
|
|
|
import com.jd.open.api.sdk.domain.supplier.PoQueryForJosWebService.response.getdetailbyorderid.JOSDetailResultDto;
|
|
|
import com.jd.open.api.sdk.domain.supplier.PoQueryForJosWebService.response.getdetailbyorderid.PurchaseAllocationDetailDto;
|
|
|
import com.jd.open.api.sdk.domain.supplier.PoQueryForJosWebService.response.getpurchaseorderlist.JOSOrderResultDto;
|
|
@@ -24,15 +42,10 @@ import com.jd.open.api.sdk.domain.supplier.PoQueryForJosWebService.response.getp
|
|
|
import com.jd.open.api.sdk.domain.supplier.ReturnOrderForJosWebService.response.detail.DetailResultDto;
|
|
|
import com.jd.open.api.sdk.domain.supplier.ReturnOrderForJosWebService.response.get.RoDto;
|
|
|
import com.jd.open.api.sdk.domain.supplier.ReturnOrderForJosWebService.response.get.RoResultDto;
|
|
|
-import com.jd.open.api.sdk.request.supplier.VcGetReturnOrderDetailRequest;
|
|
|
-import com.jd.open.api.sdk.request.supplier.VcGetdetailbyorderidRequest;
|
|
|
-import com.jd.open.api.sdk.request.supplier.VcGetpurchaseorderlistRequest;
|
|
|
-import com.jd.open.api.sdk.request.supplier.VcReturnOrderListPageGetRequest;
|
|
|
-import com.jd.open.api.sdk.response.supplier.VcGetReturnOrderDetailResponse;
|
|
|
-import com.jd.open.api.sdk.response.supplier.VcGetdetailbyorderidResponse;
|
|
|
-import com.jd.open.api.sdk.response.supplier.VcGetpurchaseorderlistResponse;
|
|
|
-import com.jd.open.api.sdk.response.supplier.VcReturnOrderListPageGetResponse;
|
|
|
-import com.ruoyi.system.utils.ConfigUtil;
|
|
|
+import com.jd.open.api.sdk.request.supplier.*;
|
|
|
+import com.jd.open.api.sdk.response.AbstractResponse;
|
|
|
+import com.jd.open.api.sdk.response.supplier.*;
|
|
|
+import com.ruoyi.common.utils.SecurityUtils;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.io.IOUtils;
|
|
|
import org.apache.http.HttpEntity;
|
|
@@ -49,7 +62,6 @@ import org.springframework.stereotype.Service;
|
|
|
import javax.annotation.Resource;
|
|
|
import java.io.IOException;
|
|
|
import java.nio.charset.StandardCharsets;
|
|
|
-import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -57,10 +69,8 @@ import java.util.stream.Collectors;
|
|
|
@Service
|
|
|
public class JdApiServiceImpl implements JdApiService {
|
|
|
|
|
|
- private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
- private static final String appKey = "ECCD5CE82A501C7E0D8BB41C030C447D";
|
|
|
- private static final String appSecret = "5b55c3f3eb874b0d8746ff28e7f91f64";
|
|
|
- private static final String redirect_uri = "/open/jd/callback";
|
|
|
+ private static final String DOMAIN = "http://www.victoriatourist.ltd/prod-api";
|
|
|
+ private static final String redirect_uri = DOMAIN + "/open/jd/callback";
|
|
|
private final String tenantId = "prod".equals(SpringUtil.getActiveProfile()) ? "wdly" : "wdlytest";
|
|
|
private static final String ACCESS_TOKEN = "access_token";
|
|
|
private static final String REFRESH_TOKEN = "refresh_token";
|
|
@@ -74,7 +84,19 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
@Autowired
|
|
|
private JdBackDetailsService jdBackDetailsService;
|
|
|
@Resource
|
|
|
+ private JdSalesReturnsService jdSalesReturnsService;
|
|
|
+ @Resource
|
|
|
+ private JdSalesReturnsDetailService jdSalesReturnsDetailService;
|
|
|
+ @Resource
|
|
|
private JdInfoService jdInfoService;
|
|
|
+ @Resource
|
|
|
+ private JdClientFactory jdClientFactory;
|
|
|
+ @Resource
|
|
|
+ private ProductInfoService productInfoService;
|
|
|
+ @Resource
|
|
|
+ private DictTenantTypeService dictTenantTypeService;
|
|
|
+ @Resource
|
|
|
+ private DictTenantDataService dictTenantDataService;
|
|
|
|
|
|
/**
|
|
|
* 获取AccessToken
|
|
@@ -83,10 +105,11 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
public void getAccessTokenByCode(String code) {
|
|
|
//获取AccessToken并存入数据库
|
|
|
String path = "https://open-oauth.jd.com/oauth2/access_token?app_key=%s&app_secret=%s&grant_type=authorization_code&code=%s";
|
|
|
- path = String.format(path, appKey, appSecret, code);
|
|
|
+ path = String.format(path, JdParamConstant.appKey, JdParamConstant.appSecret, code);
|
|
|
try {
|
|
|
JSONObject responseJson = getJSON(new HttpGet(path));
|
|
|
- dealJdResponse(responseJson);
|
|
|
+ System.out.println(responseJson);
|
|
|
+ dealJdTokenResponse(responseJson);
|
|
|
} catch (Exception e) {
|
|
|
log.error("获取AccessToken出错:" + e.getMessage(), e);
|
|
|
}
|
|
@@ -98,10 +121,27 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
public String build2LoginUrl() {
|
|
|
String url = "https://open-oauth.jd.com/oauth2/to_login?app_key=%s&response_type=code&redirect_uri=%s&state=%s&scope=snsapi_base";
|
|
|
//TODO redirect_uri需要加上项目的域名
|
|
|
- url = String.format(url, appKey, redirect_uri, DateUtil.format(new Date(), "yyyyMMddHHmmss"));
|
|
|
+ url = String.format(url, JdParamConstant.appKey, redirect_uri, DateUtil.format(new Date(), "yyyyMMddHHmmss"));
|
|
|
return url;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void test() {
|
|
|
+// SecurityUtils.setTenantId(tenantId);
|
|
|
+// List<ProductInfo> list = productInfoService.list(q->q.eq(ProductInfo::getName,"44"));
|
|
|
+// SecurityUtils.clearTenantId();
|
|
|
+ DynamicDataSourceContextHolder.push(SourceConstant.BASE);
|
|
|
+ SecurityUtils.setTenantId(tenantId);
|
|
|
+ DictTenantTypeDto dto = new DictTenantTypeDto();
|
|
|
+ dto.setCode("123");
|
|
|
+ dto.setTenantId(tenantId);
|
|
|
+ dictTenantTypeService.add(dto);
|
|
|
+ SecurityUtils.clearTenantId();
|
|
|
+ DynamicDataSourceContextHolder.poll();
|
|
|
+
|
|
|
+ System.out.println(123);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 刷新Token
|
|
|
*/
|
|
@@ -115,16 +155,15 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
return;
|
|
|
}
|
|
|
String path = "https://open-oauth.jd.com/oauth2/refresh_token?app_key=%s&app_secret=%s&grant_type=refresh_token&refresh_token=%s";
|
|
|
- path = String.format(path, appKey, appSecret, jdInfoVo.getRefreshToken());
|
|
|
+ path = String.format(path, JdParamConstant.appKey,JdParamConstant.appSecret, jdInfoVo.getRefreshToken());
|
|
|
try {
|
|
|
JSONObject responseJson = getJSON(new HttpGet(path));
|
|
|
- dealJdResponse(responseJson);
|
|
|
+ dealJdTokenResponse(responseJson);
|
|
|
} catch (Exception e) {
|
|
|
log.error("刷新AccessToken出错:" + e.getMessage(), e);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// @DSTransactional
|
|
|
//每小时执行一次
|
|
|
@Scheduled(cron = "0 0 0/1 * * ? ")
|
|
|
//每分钟执行一次
|
|
@@ -147,146 +186,466 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 获取京东订单信息分页
|
|
|
+ * 开始京东订单采集
|
|
|
+ * @author hj
|
|
|
+ * @date 2023/12/13 22:30
|
|
|
*/
|
|
|
- private JOSOrderResultDto getJdOrderInfo(Integer pageIndex, Integer pageSize, Date startTime, Date endTime, JdClient client) throws Exception {
|
|
|
- VcGetpurchaseorderlistRequest request = new VcGetpurchaseorderlistRequest();
|
|
|
- request.setCreatedDateStart(startTime);
|
|
|
- request.setCreatedDateEnd(endTime);
|
|
|
- request.setPageIndex(pageIndex);
|
|
|
- request.setPageSize(pageSize);
|
|
|
- VcGetpurchaseorderlistResponse response = client.execute(request);
|
|
|
- return response.getJosOrderResultDto();
|
|
|
+ public void startJdOrder(){
|
|
|
+ JdClient jdClient = jdClientFactory.getJdClient();
|
|
|
+ while (true){
|
|
|
+ JdInfoVo jdInfoVo = jdInfoService.getOne();
|
|
|
+ boolean online = jdInfoVo.getOnline() > 0 ? true : false;
|
|
|
+ if(!online){
|
|
|
+ log.info("京东已经下线");
|
|
|
+ ThreadUtil.safeSleep(10000);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ //开始校验是否符合条件
|
|
|
+ if (ObjectUtil.isNull(jdInfoVo.getInitQueryDate())) {
|
|
|
+ log.error("请线配置京东初始化查询时间");
|
|
|
+ ThreadUtil.safeSleep(10000);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ getJdOrderList(jdClient, jdInfoVo);
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error("获取京东订单列表出错:" + e.getMessage(), e);
|
|
|
+ }
|
|
|
+ ThreadUtil.safeSleep(10000);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
- * 获取京东订单
|
|
|
+ * 开始京东退货单采集
|
|
|
+ * @author hj
|
|
|
+ * @date 2023/12/13 22:30
|
|
|
*/
|
|
|
- private void getJdOrder(JdClient client) throws Exception {
|
|
|
- //获取开始同步的时间
|
|
|
- Date startTime = sdf.parse("2023-11-01 00:00:00");
|
|
|
- Date endTime = new Date();
|
|
|
- //根据下单时间获取数据库里最后一个订单
|
|
|
- JdOrder lastJdOrder = jdOrderService.getOne(q -> q.isNotNull(JdOrder::getCreatedDate).orderByDesc(JdOrder::getCreatedDate));
|
|
|
- if (ObjectUtil.isNotEmpty(lastJdOrder)) {
|
|
|
- //将最后一个下单时间减1个小时设置为开始时间
|
|
|
- startTime = calculateTime(lastJdOrder.getCreatedDate(),Calendar.HOUR_OF_DAY, -1);
|
|
|
+ public void startJdBackOrder(){
|
|
|
+ JdClient jdClient = jdClientFactory.getJdClient();
|
|
|
+ while (true){
|
|
|
+ JdInfoVo jdInfoVo = jdInfoService.getOne();
|
|
|
+ boolean online = jdInfoVo.getOnline() > 0 ? true : false;
|
|
|
+ if(!online){
|
|
|
+ log.info("京东已经下线");
|
|
|
+ ThreadUtil.safeSleep(10000);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ //开始校验是否符合条件
|
|
|
+ if (ObjectUtil.isNull(jdInfoVo.getInitQueryDate())) {
|
|
|
+ log.error("请线配置京东初始化查询时间");
|
|
|
+ ThreadUtil.safeSleep(10000);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ getJdBackOrder(jdClient, jdInfoVo);
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error("获取京东订单列表出错:" + e.getMessage(), e);
|
|
|
+ }
|
|
|
+ ThreadUtil.safeSleep(10000);
|
|
|
}
|
|
|
- //计算总页数
|
|
|
- Integer recordCount = getJdOrderInfo(1, 1, startTime, endTime, client).getRecordCount();
|
|
|
- int pageSize = 50;
|
|
|
- int pageCount = (recordCount + pageSize - 1) / pageSize;
|
|
|
+ }
|
|
|
|
|
|
- List<PurchaseOrderDto> purchaseOrderList = new ArrayList<>();
|
|
|
- //数据返回订单是倒序反过来按正顺保存
|
|
|
- for (int i = pageCount; i > 0; i--) {
|
|
|
- JOSOrderResultDto josOrderResultDto = getJdOrderInfo(i, pageSize, startTime, endTime, client);
|
|
|
- List<PurchaseOrderDto> purchaseOrderList1 = josOrderResultDto.getPurchaseOrderList();
|
|
|
- //京东回来的数据是按时间倒序的,使用reverse方法将list中的数据翻转为正序
|
|
|
- Collections.reverse(purchaseOrderList1);
|
|
|
- purchaseOrderList.addAll(purchaseOrderList1);
|
|
|
+ private static final Map<String, String> componentDictTypeMap = new HashMap<String, String>(){{
|
|
|
+ put("confirmState", "回告状态");
|
|
|
+ put("orderAttribute", "订单属性");
|
|
|
+ put("Status", "删除状态");
|
|
|
+ put("BackExplanationType", "图书回告不满足原因");
|
|
|
+ put("OrderState", "订单状态");
|
|
|
+ }};
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 初始化租户字典表
|
|
|
+ */
|
|
|
+ public void initTenantDict(){
|
|
|
+ JdClient jdClient = jdClientFactory.getJdClient();
|
|
|
+ handleDeliveryCenter(jdClient);
|
|
|
+ handleComponent(jdClient);
|
|
|
+ }
|
|
|
+
|
|
|
+ //订单状态:审核不通过/供应商驳回/已完成
|
|
|
+ private static final ArrayList<String> notIn = new ArrayList<String>(){{
|
|
|
+ add("confirmState");
|
|
|
+ add("orderAttribute");
|
|
|
+ add("Status");
|
|
|
+ }};
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 刷新京东状态
|
|
|
+ * @param
|
|
|
+ */
|
|
|
+ public void refreshJdState(){
|
|
|
+ JdClient jdClient = jdClientFactory.getJdClient();
|
|
|
+ while (true){
|
|
|
+ JdInfoVo jdInfoVo = jdInfoService.getOne();
|
|
|
+ boolean online = jdInfoVo.getOnline() > 0 ? true : false;
|
|
|
+ if(!online){
|
|
|
+ log.info("京东已经下线");
|
|
|
+ ThreadUtil.safeSleep(10000);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ //开始校验是否符合条件
|
|
|
+ if (ObjectUtil.isNull(jdInfoVo.getInitQueryDate())) {
|
|
|
+ log.error("请线配置京东初始化查询时间");
|
|
|
+ ThreadUtil.safeSleep(10000);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ handleRefreshDate(jdClient);
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error("获取京东订单列表出错:" + e.getMessage(), e);
|
|
|
+ }
|
|
|
+ ThreadUtil.safeSleep(10000);
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- //处理数据(过滤已存在的数据)
|
|
|
- List<Long> jdOrderIds = purchaseOrderList.stream().map(PurchaseOrderDto::getOrderId).collect(Collectors.toList());
|
|
|
- //获取已同步的京东订单id
|
|
|
- List<Long> jdOrderIds1 = jdOrderService.listObject(JdOrder::getOrderId, q -> q.in(JdOrder::getOrderId, jdOrderIds));
|
|
|
|
|
|
- //过滤出未同步的数据
|
|
|
- List<PurchaseOrderDto> purchaseOrderListFilter = purchaseOrderList.stream().filter(item -> !jdOrderIds1.contains(item.getOrderId())).collect(Collectors.toList());
|
|
|
+ public void handleRefreshDate(JdClient jdClient) throws Exception {
|
|
|
+ //1.查询列表订单状态不为审核不通过/供应商驳回/已完成
|
|
|
+ int pageIndex = 1;
|
|
|
+ long totalPage = 1;
|
|
|
+ int pageSize = 30;
|
|
|
+ Page<JdOrder> page = new Page<>(1, 30);
|
|
|
+ do{
|
|
|
+ Page<JdOrder> jdOrderPage = jdOrderService.page(page, q->q.notIn(JdOrder::getState, notIn).orderByAsc(JdOrder::getCreatedDate));
|
|
|
+ //2.按每30个订单查询京东订单状态
|
|
|
+ totalPage = jdOrderPage.getTotal();
|
|
|
+ List<JdOrder> records = jdOrderPage.getRecords();
|
|
|
+ List<Long> orderIds = records.stream().map(JdOrder::getOrderId).collect(Collectors.toList());
|
|
|
+ JOSOrderResultDto josOrderResultDto = getJdOrderInfo(pageIndex, pageSize + 20, records.get(0).getCreatedDate(), DateUtil.offsetDay(records.get(0).getCreatedDate(), 90), jdClient, orderIds);
|
|
|
+ List<PurchaseOrderDto> purchaseOrderList = josOrderResultDto.getPurchaseOrderList();
|
|
|
+ //3.更新订单信息
|
|
|
+ for (PurchaseOrderDto purchaseOrderDto : purchaseOrderList) {
|
|
|
+ jdOrderService.lambdaUpdate().eq(JdOrder::getOrderId, purchaseOrderDto.getOrderId());
|
|
|
+ }
|
|
|
+ }while (pageIndex <= totalPage);
|
|
|
+ }
|
|
|
|
|
|
- //转为系统自己的实体类
|
|
|
- List<JdOrder> jdOrderList = BeanUtil.copyToList(purchaseOrderListFilter, JdOrder.class);
|
|
|
- //赋值租户id
|
|
|
- jdOrderList.forEach(item -> item.setTenantId(tenantId));
|
|
|
- //将数据存储到库
|
|
|
- jdOrderService.saveBatch(jdOrderList);
|
|
|
+ /**
|
|
|
+ * 处理回告状态、订单属性、删除状态、图书回告不满足原因、订单状态
|
|
|
+ * @author hj
|
|
|
+ * @date 2023/12/13 21:56
|
|
|
+ * @param jdClient
|
|
|
+ */
|
|
|
+ private void handleComponent(JdClient jdClient) {
|
|
|
+ componentDictTypeMap.forEach((k,v)->{
|
|
|
+ VcGetcomponentlistRequest request=new VcGetcomponentlistRequest();
|
|
|
+ DynamicDataSourceContextHolder.push(SourceConstant.BASE);
|
|
|
+ SecurityUtils.setTenantId(tenantId);
|
|
|
+ try {
|
|
|
+ request.setType(k);
|
|
|
+ VcGetcomponentlistResponse response=jdClient.execute(request);
|
|
|
+
|
|
|
+ DictTenantType dictTenantType = handleDictType(k, v);
|
|
|
+
|
|
|
+ List<CommonDictData> commonDictDataList = new ArrayList<>();
|
|
|
+ List<Component> arg89 = response.getArg89();
|
|
|
+ for (Component component : arg89) {
|
|
|
+ commonDictDataList.add(new CommonDictData(component.getKey(), component.getName()));
|
|
|
+ }
|
|
|
+ handleDictData(commonDictDataList, dictTenantType);
|
|
|
|
|
|
- //获取明细
|
|
|
- List<JdOrderDetails> jdOrderDetailsList = new ArrayList<>();
|
|
|
- for (JdOrder jdOrder : jdOrderList) {
|
|
|
- VcGetdetailbyorderidRequest request = new VcGetdetailbyorderidRequest();
|
|
|
- request.setOrderId(jdOrder.getOrderId());
|
|
|
- request.setIsPage(false);
|
|
|
- VcGetdetailbyorderidResponse response = client.execute(request);
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+ SecurityUtils.clearTenantId();
|
|
|
+ DynamicDataSourceContextHolder.poll();
|
|
|
+ });
|
|
|
+ }
|
|
|
|
|
|
- JOSDetailResultDto josDetailResultDto = response.getJosDetailResultDto();
|
|
|
- List<PurchaseAllocationDetailDto> purchaseAllocationDetailList = josDetailResultDto.getPurchaseAllocationDetailList();
|
|
|
|
|
|
- List<JdOrderDetails> jdOrderDetails = BeanUtil.copyToList(purchaseAllocationDetailList, JdOrderDetails.class);
|
|
|
- jdOrderDetails.forEach(item -> item.setJdOrderId(jdOrder.getId()));
|
|
|
+ /**
|
|
|
+ * 处理配送中心字典转换
|
|
|
+ * @author hj
|
|
|
+ * @date 2023/12/13 21:55
|
|
|
+ * @param jdClient
|
|
|
+ */
|
|
|
+ public void handleDeliveryCenter(JdClient jdClient){
|
|
|
+ //获取京东仓库,并存入字典表
|
|
|
+ VcGetwaredeliverdistinctlistRequest request=new VcGetwaredeliverdistinctlistRequest();
|
|
|
+ DynamicDataSourceContextHolder.push(SourceConstant.BASE);
|
|
|
+ SecurityUtils.setTenantId(tenantId);
|
|
|
+ try {
|
|
|
+ VcGetwaredeliverdistinctlistResponse response = jdClient.execute(request);
|
|
|
+
|
|
|
+ DictTenantType dictTenantType = handleDictType(InitDictConstant.DELIVERY_CENTER, InitDictConstant.DELIVERY_CENTER_LABEL);
|
|
|
+ //处理字典数据表
|
|
|
+ //删除全部数据
|
|
|
+ List<WarehouseDto> warehouseList = response.getJosWarehouseResultDto().getWarehouseList();
|
|
|
+ List<CommonDictData> commonDictDataList = new ArrayList<>();
|
|
|
+ for (WarehouseDto warehouseDto : warehouseList) {
|
|
|
+ commonDictDataList.add(new CommonDictData(StrUtil.toString(warehouseDto.getDeliverCenterId()), warehouseDto.getDeliverCenterName()));
|
|
|
+ }
|
|
|
+ handleDictData(commonDictDataList, dictTenantType);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("转换配送中心到字典出现异常",e);
|
|
|
+ }
|
|
|
+ SecurityUtils.clearTenantId();
|
|
|
+ DynamicDataSourceContextHolder.poll();
|
|
|
+ }
|
|
|
|
|
|
- jdOrderDetailsList.addAll(jdOrderDetails);
|
|
|
+ private void handleDictData(List<CommonDictData> commonDictDataList, DictTenantType dictTenantType) {
|
|
|
+ dictTenantDataService.lambdaUpdate().eq(DictTenantData::getDictCode, dictTenantType.getCode()).remove();
|
|
|
+ int sort = 10;
|
|
|
+ List<DictTenantData> dataList = new ArrayList<>();
|
|
|
+ for (CommonDictData commonDictData : commonDictDataList) {
|
|
|
+ DictTenantDataDto dictTenantDataDto = new DictTenantDataDto();
|
|
|
+ dictTenantDataDto.setDictCode(dictTenantType.getCode());
|
|
|
+ dictTenantDataDto.setDictKey(StrUtil.toString(commonDictData.getKey()));
|
|
|
+ dictTenantDataDto.setDictValue(commonDictData.getValue());
|
|
|
+ dictTenantDataDto.setTenantId(tenantId);
|
|
|
+ dictTenantDataDto.setSort(sort);
|
|
|
+ sort = sort + 10;
|
|
|
+ dataList.add(dictTenantDataDto);
|
|
|
}
|
|
|
- //赋值租户id
|
|
|
- jdOrderList.forEach(item -> item.setTenantId(tenantId));
|
|
|
- jdOrderDetailsService.saveBatch(jdOrderDetailsList);
|
|
|
+ dictTenantDataService.saveBatch(dataList);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 处理字典类型表
|
|
|
+ * @author hj
|
|
|
+ * @date 2023/12/13 22:03
|
|
|
+ * @param code
|
|
|
+ * @param name
|
|
|
+ */
|
|
|
+ private DictTenantType handleDictType(String code, String name){
|
|
|
+ DictTenantType dictTenantType = new DictTenantType();
|
|
|
+ List<DictTenantType> deliveryCenters = dictTenantTypeService.list(q -> q.eq(DictTenantType::getTenantId, tenantId).eq(DictTenantType::getCode, code));
|
|
|
+ //处理字典类型表
|
|
|
+ if(CollectionUtil.isNotEmpty(deliveryCenters)){
|
|
|
+ dictTenantType = deliveryCenters.get(0);
|
|
|
+ }else {
|
|
|
+ dictTenantType.setCode(code);
|
|
|
+ dictTenantType.setName(name);
|
|
|
+ dictTenantType.setTenantId(tenantId);
|
|
|
+ dictTenantType.setStatus(InitDictConstant.ENABLE);
|
|
|
+ DictTenantTypeDto dictTenantTypeDto = BeanUtil.copyProperties(dictTenantType, DictTenantTypeDto.class);
|
|
|
+ dictTenantTypeService.add(dictTenantTypeDto);
|
|
|
+ dictTenantType.setId(dictTenantTypeDto.getId());
|
|
|
+ }
|
|
|
+ return dictTenantType;
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
- * 获取京东退货单信息分页
|
|
|
+ * 获取京东订单
|
|
|
*/
|
|
|
- private static RoResultDto getJdBackOrderInfo(Integer pageIndex, Integer pageSize, Date startTime, Date endTime, JdClient client) throws Exception {
|
|
|
- VcReturnOrderListPageGetRequest request = new VcReturnOrderListPageGetRequest();
|
|
|
- request.setCreateDateBegin(startTime);
|
|
|
- request.setCreateDateEnd(endTime);
|
|
|
- request.setPageSize(pageIndex);
|
|
|
- request.setPageIndex(pageSize);
|
|
|
- VcReturnOrderListPageGetResponse response = client.execute(request);
|
|
|
- return response.getRoResultDto();
|
|
|
+ private void getJdOrderList(JdClient client, JdInfoVo jdInfoVo) throws Exception {
|
|
|
+ int pageIndex = 1;
|
|
|
+ int totalPage = 1;
|
|
|
+ int pageSize = 50;
|
|
|
+ do{
|
|
|
+ //获取开始同步的时间
|
|
|
+ Date startTime = jdInfoVo.getInitQueryDate();
|
|
|
+ Date endTime = new Date();
|
|
|
+ //根据下单时间获取数据库里最后一个订单
|
|
|
+ JdOrder lastJdOrder = jdOrderService.getOne(q -> q.isNotNull(JdOrder::getCreatedDate).orderByDesc(JdOrder::getCreatedDate));
|
|
|
+ if (ObjectUtil.isNotEmpty(lastJdOrder)) {
|
|
|
+ //将最后一个下单时间减1个小时设置为开始时间
|
|
|
+ startTime = DateUtil.offsetHour(lastJdOrder.getCreatedDate(), -1);
|
|
|
+ }
|
|
|
+ //计算总页数
|
|
|
+ JOSOrderResultDto josOrderResultDto = getJdOrderInfo(pageIndex, pageSize, startTime, endTime, client, null);
|
|
|
+ totalPage = (josOrderResultDto.getRecordCount()/pageSize)+(josOrderResultDto.getRecordCount()%pageSize>0?1:0);
|
|
|
+
|
|
|
+ //数据返回订单是倒序反过来按正顺保存
|
|
|
+ List<PurchaseOrderDto> purchaseOrderList = josOrderResultDto.getPurchaseOrderList();
|
|
|
+ //京东回来的数据是按时间倒序的,使用reverse方法将list中的数据翻转为正序
|
|
|
+ Collections.reverse(purchaseOrderList);
|
|
|
+
|
|
|
+ //处理数据(过滤已存在的数据)
|
|
|
+ List<Long> jdOrderIds = purchaseOrderList.stream().map(PurchaseOrderDto::getOrderId).collect(Collectors.toList());
|
|
|
+ //获取已同步的京东订单id
|
|
|
+ List<Long> jdOrderIds1 = jdOrderService.listObject(JdOrder::getOrderId, q -> q.in(JdOrder::getOrderId, jdOrderIds));
|
|
|
+ //过滤出未同步的数据
|
|
|
+ List<PurchaseOrderDto> purchaseOrderListFilter = purchaseOrderList.stream().filter(item -> !jdOrderIds1.contains(item.getOrderId())).collect(Collectors.toList());
|
|
|
+ //转为系统自己的实体类
|
|
|
+ List<JdOrder> jdOrderList = BeanUtil.copyToList(purchaseOrderListFilter, JdOrder.class);
|
|
|
+ //赋值租户id
|
|
|
+ jdOrderList.forEach(item -> item.setTenantId(tenantId));
|
|
|
+ //将数据存储到库
|
|
|
+ jdOrderService.saveBatch(jdOrderList);
|
|
|
+ //获取明细
|
|
|
+ List<JdOrderDetails> jdOrderDetailsList = new ArrayList<>();
|
|
|
+ for (JdOrder jdOrder : jdOrderList) {
|
|
|
+ VcGetdetailbyorderidRequest request = new VcGetdetailbyorderidRequest();
|
|
|
+ request.setOrderId(jdOrder.getOrderId());
|
|
|
+ request.setIsPage(false);
|
|
|
+ VcGetdetailbyorderidResponse response = client.execute(request);
|
|
|
+ JOSDetailResultDto josDetailResultDto = response.getJosDetailResultDto();
|
|
|
+ List<PurchaseAllocationDetailDto> purchaseAllocationDetailList = josDetailResultDto.getPurchaseAllocationDetailList();
|
|
|
+ List<JdOrderDetails> jdOrderDetails = BeanUtil.copyToList(purchaseAllocationDetailList, JdOrderDetails.class);
|
|
|
+ jdOrderDetails.forEach(item -> {
|
|
|
+ item.setJdOrderId(jdOrder.getId());
|
|
|
+ //产品编码
|
|
|
+ Long wareId = item.getWareId();
|
|
|
+ List<ProductInfo> list = productInfoService.lambdaQuery().eq(ProductInfo::getCustomCode, wareId).list();
|
|
|
+ if(CollectionUtil.isEmpty(list)){
|
|
|
+ //TODO 没有产品触发异常;
|
|
|
+ }else {
|
|
|
+ item.setProductId(list.get(0).getId());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ jdOrderDetailsList.addAll(jdOrderDetails);
|
|
|
+ }
|
|
|
+// //赋值租户id
|
|
|
+// jdOrderList.forEach(item -> item.setTenantId(tenantId));
|
|
|
+ jdOrderDetailsService.saveBatch(jdOrderDetailsList);
|
|
|
+ pageIndex++;
|
|
|
+ } while (pageIndex <= totalPage);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 获取京东退货订单
|
|
|
*/
|
|
|
- private void getJdBackOrder(JdClient client) throws Exception {
|
|
|
- //获取开始同步的时间
|
|
|
- //获取开始同步的时间
|
|
|
- Date startTime = sdf.parse("2023-11-01 00:00:00");
|
|
|
- Date endTime = new Date();
|
|
|
- //根据下单时间获取数据库里最后一个订单
|
|
|
- JdBack lastJdBack = jdBackService.getOne(q -> q.isNotNull(JdBack::getCreateDate).orderByDesc(JdBack::getCreateDate));
|
|
|
- if (ObjectUtil.isNotEmpty(lastJdBack)) {
|
|
|
- //将最后一个下单时间减1个小时设置为开始时间
|
|
|
- startTime = calculateTime(lastJdBack.getCreateDate(),Calendar.HOUR_OF_DAY, -1);
|
|
|
- }
|
|
|
-
|
|
|
- //获取数据总页数
|
|
|
- RoResultDto jdBackOrderInfo = getJdBackOrderInfo(1, 1, startTime, endTime, client);
|
|
|
- Integer recordCount = jdBackOrderInfo.getRecordCount();
|
|
|
+ private void getJdBackOrder(JdClient client, JdInfoVo jdInfoVo) throws Exception {
|
|
|
+ int pageIndex = 1;
|
|
|
+ int totalPage = 1;
|
|
|
int pageSize = 50;
|
|
|
- int pageCount = (recordCount + pageSize - 1) / pageSize;
|
|
|
- //获取最后一页数据
|
|
|
- RoResultDto jdBackOrderInfo1 = getJdBackOrderInfo(pageCount, pageSize, startTime, endTime, client);
|
|
|
- List<RoDto> roDtoList = jdBackOrderInfo1.getRoDtoList();
|
|
|
- //京东回来的数据是按时间倒序的,使用reverse方法将list中的数据翻转为正序
|
|
|
- Collections.reverse(roDtoList);
|
|
|
-
|
|
|
- //过滤出不在数据库里的新数据
|
|
|
- List<Long> returnIds = roDtoList.stream().map(RoDto::getReturnId).collect(Collectors.toList());
|
|
|
- List<Long> existReturnIds = jdBackService.listObject(JdBack::getReturnId, q -> q.in(JdBack::getReturnId, returnIds));
|
|
|
- roDtoList = roDtoList.stream().filter(item -> !existReturnIds.contains(item.getReturnId())).collect(Collectors.toList());
|
|
|
- //转成我们自己的实体类
|
|
|
- List<JdBack> jdBackList = BeanUtil.copyToList(roDtoList, JdBack.class);
|
|
|
- jdBackService.saveBatch(jdBackList);
|
|
|
- //获取明细
|
|
|
- List<JdBackDetails> JdBackDetailsList = new ArrayList<>();
|
|
|
- for (JdBack jdBack : jdBackList) {
|
|
|
- VcGetReturnOrderDetailRequest request = new VcGetReturnOrderDetailRequest();
|
|
|
- request.setReturnId(jdBack.getReturnId());
|
|
|
- VcGetReturnOrderDetailResponse response = client.execute(request);
|
|
|
- DetailResultDto detailResultDto = response.getDetailResultDto();
|
|
|
-
|
|
|
- List<JdBackDetails> jdBackDetails = BeanUtil.copyToList(detailResultDto.getDetailDtoList(), JdBackDetails.class);
|
|
|
- jdBackDetails.forEach(item -> item.setJdBackId(jdBack.getId()));
|
|
|
- JdBackDetailsList.addAll(jdBackDetails);
|
|
|
+ do {
|
|
|
+ Date startTime = jdInfoVo.getInitQueryDate();
|
|
|
+ Date endTime = new Date();
|
|
|
+ //根据下单时间获取数据库里最后一个订单
|
|
|
+ JdBack lastJdBack = jdBackService.getOne(q -> q.isNotNull(JdBack::getCreateDate).orderByDesc(JdBack::getCreateDate));
|
|
|
+ if (ObjectUtil.isNotEmpty(lastJdBack)) {
|
|
|
+ //将最后一个下单时间减1个小时设置为开始时间
|
|
|
+ startTime = DateUtil.offsetHour(lastJdBack.getCreateDate(), -1);
|
|
|
+ }
|
|
|
+ //计算总页数
|
|
|
+ RoResultDto jdBackOrderInfo = getJdBackInfo(pageIndex, pageSize, startTime, endTime, client);
|
|
|
+ totalPage = (jdBackOrderInfo.getRecordCount()/pageSize)+(jdBackOrderInfo.getRecordCount()%pageSize>0?1:0);
|
|
|
+ Integer recordCount = jdBackOrderInfo.getRecordCount();
|
|
|
+ List<RoDto> roDtoList = jdBackOrderInfo.getRoDtoList();
|
|
|
+ //京东回来的数据是按时间倒序的,使用reverse方法将list中的数据翻转为正序
|
|
|
+ Collections.reverse(roDtoList);
|
|
|
+
|
|
|
+ //过滤出不在数据库里的新数据
|
|
|
+ List<Long> returnIds = roDtoList.stream().map(RoDto::getReturnId).collect(Collectors.toList());
|
|
|
+ List<Long> existReturnIds = jdBackService.listObject(JdBack::getReturnId, q -> q.in(JdBack::getReturnId, returnIds));
|
|
|
+ roDtoList = roDtoList.stream().filter(item -> !existReturnIds.contains(item.getReturnId())).collect(Collectors.toList());
|
|
|
+ //转成我们自己的实体类
|
|
|
+ List<JdBack> jdBackList = BeanUtil.copyToList(roDtoList, JdBack.class);
|
|
|
+ jdBackService.saveBatch(jdBackList);
|
|
|
+// //获取明细
|
|
|
+ List<JdBackDetails> JdBackDetailsList = new ArrayList<>();
|
|
|
+ for (JdBack jdBack : jdBackList) {
|
|
|
+ VcGetReturnOrderDetailRequest request = new VcGetReturnOrderDetailRequest();
|
|
|
+ request.setReturnId(jdBack.getReturnId());
|
|
|
+ VcGetReturnOrderDetailResponse response = client.execute(request);
|
|
|
+ DetailResultDto detailResultDto = response.getDetailResultDto();
|
|
|
+
|
|
|
+ List<JdBackDetails> jdBackDetails = BeanUtil.copyToList(detailResultDto.getDetailDtoList(), JdBackDetails.class);
|
|
|
+ jdBackDetails.forEach(item -> {
|
|
|
+ item.setJdBackId(jdBack.getId());
|
|
|
+ //产品编码
|
|
|
+ Long wareId = item.getWareId();
|
|
|
+ List<ProductInfo> list = productInfoService.lambdaQuery().eq(ProductInfo::getCustomCode, wareId).list();
|
|
|
+ if(CollectionUtil.isEmpty(list)){
|
|
|
+ //TODO 没有产品触发异常;
|
|
|
+ }else {
|
|
|
+ item.setProductId(list.get(0).getId());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ JdBackDetailsList.addAll(jdBackDetails);
|
|
|
+ }
|
|
|
+ jdBackDetailsService.saveBatch(JdBackDetailsList);
|
|
|
+ pageIndex++;
|
|
|
+ } while (pageIndex <= totalPage);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public void startJdSalesReturns(){
|
|
|
+ JdClient jdClient = jdClientFactory.getJdClient();
|
|
|
+ while (true){
|
|
|
+ JdInfoVo jdInfoVo = jdInfoService.getOne();
|
|
|
+ boolean online = jdInfoVo.getOnline() > 0 ? true : false;
|
|
|
+ if(!online){
|
|
|
+ log.info("京东已经下线");
|
|
|
+ ThreadUtil.safeSleep(10000);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ //开始校验是否符合条件
|
|
|
+ if (ObjectUtil.isNull(jdInfoVo.getInitQueryDate())) {
|
|
|
+ log.error("请线配置京东初始化查询时间");
|
|
|
+ ThreadUtil.safeSleep(10000);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ getJdBackOrder(jdClient, jdInfoVo);
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error("获取京东订单列表出错:" + e.getMessage(), e);
|
|
|
+ }
|
|
|
+ ThreadUtil.safeSleep(30000);
|
|
|
}
|
|
|
- jdBackDetailsService.saveBatch(JdBackDetailsList);
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
+ * 获取京东退货订单
|
|
|
+ */
|
|
|
+ /*private void getJdSalesReturns(JdClient client, JdInfoVo jdInfoVo) throws Exception {
|
|
|
+ int pageIndex = 1;
|
|
|
+ int totalPage = 1;
|
|
|
+ int pageSize = 50;
|
|
|
+ do {
|
|
|
+ Date startTime = jdInfoVo.getInitQueryDate();
|
|
|
+ Date endTime = new Date();
|
|
|
+ //根据下单时间获取数据库里最后一个订单
|
|
|
+ JdSalesReturns jdSalesReturns = jdSalesReturnsService.getOne(q -> q.isNotNull(JdSalesReturns::getCreateTime).orderByDesc(JdSalesReturns::getCreateTime));
|
|
|
+ if (ObjectUtil.isNotEmpty(jdSalesReturns)) {
|
|
|
+ //将最后一个下单时间减1个小时设置为开始时间
|
|
|
+ startTime = DateUtil.offsetHour(jdSalesReturns.getCreateTime(), -1);
|
|
|
+ }
|
|
|
+ //计算总页数
|
|
|
+ RoResultDto jdSalesReturnsInfo = getJdSalesReturnsInfo(pageIndex, pageSize, startTime, endTime, client);
|
|
|
+ totalPage = (jdSalesReturnsInfo.getRecordCount()/pageSize)+(jdSalesReturnsInfo.getRecordCount()%pageSize>0?1:0);
|
|
|
+ Integer recordCount = jdSalesReturnsInfo.getRecordCount();
|
|
|
+ List<RoDto> roDtoList = jdSalesReturnsInfo.getRoDtoList();
|
|
|
+ //京东回来的数据是按时间倒序的,使用reverse方法将list中的数据翻转为正序
|
|
|
+ Collections.reverse(roDtoList);
|
|
|
+
|
|
|
+ //过滤出不在数据库里的新数据
|
|
|
+ List<Long> returnIds = roDtoList.stream().map(RoDto::getReturnId).collect(Collectors.toList());
|
|
|
+ List<Long> existReturnIds = jdSalesReturnsService.listObject(JdSalesReturns::getRefundId, q -> q.in(JdSalesReturns::getRefundId, returnIds));
|
|
|
+ roDtoList = roDtoList.stream().filter(item -> !existReturnIds.contains(item.getReturnId())).collect(Collectors.toList());
|
|
|
+ //转成我们自己的实体类
|
|
|
+ List<JdBack> jdBackList = BeanUtil.copyToList(roDtoList, JdBack.class);
|
|
|
+ jdBackService.saveBatch(jdBackList);
|
|
|
+// //获取明细
|
|
|
+ List<JdBackDetails> JdBackDetailsList = new ArrayList<>();
|
|
|
+ for (JdBack jdBack : jdBackList) {
|
|
|
+ VcGetReturnOrderDetailRequest request = new VcGetReturnOrderDetailRequest();
|
|
|
+ request.setReturnId(jdBack.getReturnId());
|
|
|
+ VcGetReturnOrderDetailResponse response = client.execute(request);
|
|
|
+ DetailResultDto detailResultDto = response.getDetailResultDto();
|
|
|
+
|
|
|
+ List<JdBackDetails> jdBackDetails = BeanUtil.copyToList(detailResultDto.getDetailDtoList(), JdBackDetails.class);
|
|
|
+ jdBackDetails.forEach(item -> {
|
|
|
+ item.setJdBackId(jdBack.getId());
|
|
|
+ //产品编码
|
|
|
+ Long wareId = item.getWareId();
|
|
|
+ List<ProductInfo> list = productInfoService.lambdaQuery().eq(ProductInfo::getCustomCode, wareId).list();
|
|
|
+ if(CollectionUtil.isEmpty(list)){
|
|
|
+ //TODO 没有产品触发异常;
|
|
|
+ }else {
|
|
|
+ item.setProductId(list.get(0).getId());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ JdBackDetailsList.addAll(jdBackDetails);
|
|
|
+ }
|
|
|
+ jdBackDetailsService.saveBatch(JdBackDetailsList);
|
|
|
+ pageIndex++;
|
|
|
+ } while (pageIndex <= totalPage);
|
|
|
+
|
|
|
+ }*/
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
* 请求API工具方法
|
|
|
*/
|
|
|
private static JSONObject getJSON(HttpRequestBase httpRequestBase) throws IOException {
|
|
@@ -336,9 +695,9 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
* 处理jd返回对象
|
|
|
* @author hj
|
|
|
* @date 2023/12/10 22:07
|
|
|
- * @param responseJson
|
|
|
+ * @param responseJson
|
|
|
*/
|
|
|
- private void dealJdResponse(JSONObject responseJson) {
|
|
|
+ private void dealJdTokenResponse(JSONObject responseJson) {
|
|
|
if (ObjectUtil.isNotEmpty(responseJson.getString(ACCESS_TOKEN)) && ObjectUtil.isNotEmpty(responseJson.getString(REFRESH_TOKEN))) {
|
|
|
log.info("成功获取AccessToken并保存" + responseJson);
|
|
|
JdInfoVo jdInfoVo = jdInfoService.getOne();
|
|
@@ -350,10 +709,67 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public static void main(String[] args) throws Exception {
|
|
|
- JdClient client = new DefaultJdClient("http://api.jd.com/routerjson", "a1f79f4670fd43a28fa2de02abd86f03ytfm", appKey, appSecret);
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取京东订单信息分页
|
|
|
+ */
|
|
|
+ private JOSOrderResultDto getJdOrderInfo(Integer pageIndex, Integer pageSize, Date startTime, Date endTime, JdClient client, List<Long> orderIds) throws Exception {
|
|
|
+ VcGetpurchaseorderlistRequest request = new VcGetpurchaseorderlistRequest();
|
|
|
+ request.setCreatedDateStart(startTime);
|
|
|
+ request.setCreatedDateEnd(endTime);
|
|
|
+ request.setPageIndex(pageIndex);
|
|
|
+ request.setPageSize(pageSize);
|
|
|
+ if(CollectionUtil.isNotEmpty(orderIds)){
|
|
|
+ request.setOrderIds(orderIds.stream().map(o->StrUtil.toString(orderIds)).collect(Collectors.joining(",")));
|
|
|
+ }
|
|
|
+ VcGetpurchaseorderlistResponse response = client.execute(request);
|
|
|
+ validSuccess(response, "获取京东订单信息分页");
|
|
|
+ return response.getJosOrderResultDto();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取京东退货单信息分页
|
|
|
+ */
|
|
|
+ private RoResultDto getJdBackInfo(Integer pageIndex, Integer pageSize, Date startTime, Date endTime, JdClient client) throws Exception {
|
|
|
+ VcReturnOrderListPageGetRequest request = new VcReturnOrderListPageGetRequest();
|
|
|
+ request.setCreateDateBegin(startTime);
|
|
|
+ request.setCreateDateEnd(endTime);
|
|
|
+ request.setPageSize(pageIndex);
|
|
|
+ request.setPageIndex(pageSize);
|
|
|
+ VcReturnOrderListPageGetResponse response = client.execute(request);
|
|
|
+ validSuccess(response, "获取京东退货单信息分页");
|
|
|
+ return response.getRoResultDto();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取京东退货售后单信息分页
|
|
|
+ */
|
|
|
+/* private RoResultDto getJdSalesReturnsInfo(Integer pageIndex, Integer pageSize, Date startTime, Date endTime, JdClient client) throws Exception {
|
|
|
+ EdiwsRoRefundInfoListRequest request=new EdiwsRoRefundInfoListRequest();
|
|
|
+ request.setCreateDateBegin(startTime);
|
|
|
+ request.setCreateDateEnd(endTime);
|
|
|
+ request.setPageSize(pageIndex);
|
|
|
+ request.setPageIndex(pageSize);
|
|
|
+ VcReturnOrderListPageGetResponse response = client.execute(request);
|
|
|
+ validSuccess(response, "获取京东退货单信息分页");
|
|
|
+ return response.getRoResultDto();
|
|
|
+ }*/
|
|
|
+
|
|
|
+
|
|
|
+ void validSuccess(AbstractResponse response, String method){
|
|
|
+ String code = response.getCode();
|
|
|
+ if(!"200".equals(code)){
|
|
|
+ log.error("获取{}失败:{}", method ,response.getZhDesc());
|
|
|
+ throw new RuntimeException("获取"+ method +"失败:" + response.getZhDesc());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void main(String[] args) throws Exception {
|
|
|
+ JdClient client = new DefaultJdClient("http://api.jd.com/routerjson", "a1f79f4670fd43a28fa2de02abd86f03ytfm", JdParamConstant.appKey, JdParamConstant.appSecret);
|
|
|
}
|
|
|
|
|
|
}
|