|
@@ -1,11 +1,7 @@
|
|
|
package com.iamberry.rst.controllers.mq;
|
|
|
|
|
|
-import com.alibaba.fastjson.JSONObject;
|
|
|
//import com.iamberry.redis.RedisUtils;
|
|
|
-import com.iamberry.rst.controllers.order.AdminJingdongAuthController;
|
|
|
-import com.iamberry.rst.core.address.City;
|
|
|
-import com.iamberry.rst.core.address.District;
|
|
|
-import com.iamberry.rst.core.address.Province;
|
|
|
+
|
|
|
import com.iamberry.rst.core.cm.SalesOrder;
|
|
|
import com.iamberry.rst.core.cm.SalesOrderItem;
|
|
|
import com.iamberry.rst.core.order.OrderSyncLog;
|
|
@@ -23,7 +19,6 @@ import com.iamberry.rst.util.JingdongConfig;
|
|
|
import com.iamberry.wechat.tools.DateTimeUtil;
|
|
|
import com.jd.open.api.sdk.DefaultJdClient;
|
|
|
import com.jd.open.api.sdk.JdClient;
|
|
|
-import com.jd.open.api.sdk.JdException;
|
|
|
import com.jd.open.api.sdk.domain.order.IOrderService.response.getmobilelist.OrderPrivacyModel;
|
|
|
import com.jd.open.api.sdk.domain.order.IOrderService.response.getmobilelist.ResponseData;
|
|
|
import com.jd.open.api.sdk.domain.order.OrderQueryJsfService.response.enGet.OrderResult;
|
|
@@ -48,11 +43,9 @@ import org.springframework.context.annotation.Lazy;
|
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
-import javax.annotation.PostConstruct;
|
|
|
import java.util.*;
|
|
|
|
|
|
-import static com.iamberry.rst.controllers.mq.TaobaoConfig.DB_JD_PULL_ORDER_LIMIT_TIME;
|
|
|
-import static com.iamberry.rst.controllers.mq.TaobaoConfig.DB_JD_TOKEN_ID;
|
|
|
+import static com.iamberry.rst.controllers.mq.TaobaoConfig.*;
|
|
|
|
|
|
/**
|
|
|
* https://jos.jd.com/apilistnewdetail?apiGroupId=55&apiId=14263&apiName=null
|
|
@@ -64,6 +57,15 @@ public class JingdongTask {
|
|
|
|
|
|
private static Logger logger = LoggerFactory.getLogger(JingdongTask.class);
|
|
|
|
|
|
+ /**
|
|
|
+ * 爱贝源京东店铺 rst id
|
|
|
+ */
|
|
|
+ public static final int STORE_ID_JD_IAMBERRY = 40;
|
|
|
+ /**
|
|
|
+ * 美塔璞儿京东店铺 rst id
|
|
|
+ */
|
|
|
+ public static final int STORE_ID_JD_METAPURE = 187;
|
|
|
+
|
|
|
/** 是否允许淘宝抓取订单,true表示允许,false表示不允许 */
|
|
|
private static boolean isDebug = false;
|
|
|
|
|
@@ -112,109 +114,125 @@ public class JingdongTask {
|
|
|
String endTime = DateTimeUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss");
|
|
|
logger.info("开始时间:{}, 结束时间:{}", startTime, endTime);
|
|
|
|
|
|
- // 批次号
|
|
|
- String batchIdST = generateKeyUtil.getSalesBatchIdJD();
|
|
|
- // 循环抓取
|
|
|
- boolean hasNext = true;
|
|
|
- int pageNo = 1;
|
|
|
- try {
|
|
|
- int total = 0;
|
|
|
- // 开始循环
|
|
|
- while (hasNext) {
|
|
|
- logger.info("【京东订单】抓取第{}页的数据......", pageNo);
|
|
|
- // 抓取京东数据
|
|
|
- JdClient client = null;
|
|
|
- PopOrderEnSearchRequest orderSearchRequest = null;
|
|
|
- PopOrderEnSearchResponse rsp = null;
|
|
|
- try {
|
|
|
- SysConfig sysConfig = sysConfigService.getSysConfigAll(DB_JD_TOKEN_ID);
|
|
|
- client = new DefaultJdClient(TaobaoConfig.JINGDONG_API_URL, sysConfig.getConfigParameter(), TaobaoConfig.jd_appkey, TaobaoConfig.jd_secret);
|
|
|
- orderSearchRequest = new PopOrderEnSearchRequest();
|
|
|
- orderSearchRequest.setStartDate(startTime);
|
|
|
- orderSearchRequest.setEndDate(endTime);
|
|
|
- orderSearchRequest.setOrderState("WAIT_SELLER_STOCK_OUT,WAIT_SELLER_DELIVERY,WAIT_GOODS_RECEIVE_CONFIRM");//待出库和境外待发货, 一般仅存在前者
|
|
|
- orderSearchRequest.setOptionalFields(initOrderOptionalFields());
|
|
|
- orderSearchRequest.setPage("" + pageNo);
|
|
|
- orderSearchRequest.setPageSize("" + 40L);
|
|
|
- orderSearchRequest.setDateType(0);//按照最后修改时间查询
|
|
|
- rsp = client.execute(orderSearchRequest);
|
|
|
- } catch (Exception e) {
|
|
|
- logger.error("请求京东服务器异常:{}", e);
|
|
|
- }
|
|
|
- if (rsp == null) {
|
|
|
- logger.error("【京东订单】请求京东服务器失败!");
|
|
|
- return;
|
|
|
- }
|
|
|
- // 判断数据
|
|
|
- String code = rsp.getCode();
|
|
|
- if (!"0".equals(rsp.getCode())) {
|
|
|
- logger.info("【京东订单】请求京东服务器,返回错误码:{}, 错误信息:{}", code, rsp.getMsg());
|
|
|
- break;
|
|
|
- }
|
|
|
- logger.info("【京东订单】请求京东服务器,返回信息:{}", rsp.getMsg());
|
|
|
+ int[] storeIds = new int[]{STORE_ID_JD_IAMBERRY, STORE_ID_JD_METAPURE};
|
|
|
+ for (int storeId : storeIds) {
|
|
|
+ // 销售公司 tb_rst_sales_company
|
|
|
+ int salesCompanyId;
|
|
|
+ Integer configId = getConfigId(storeId);
|
|
|
+ if (storeId == STORE_ID_JD_IAMBERRY) {
|
|
|
+ salesCompanyId = 1;
|
|
|
+ } else {
|
|
|
+ salesCompanyId = 16;
|
|
|
+ }
|
|
|
|
|
|
- OrderListResult orderResult = rsp.getSearchorderinfoResult();
|
|
|
- if (orderResult == null) {
|
|
|
- break;
|
|
|
- }
|
|
|
- List<OrderSearchInfo> orderInfoList = orderResult.getOrderInfoList();
|
|
|
- if (orderInfoList == null || orderInfoList.size() == 0) {
|
|
|
- logger.info("【京东订单】数据请求完毕, 数量为0");
|
|
|
- break;
|
|
|
- }
|
|
|
- for (OrderSearchInfo orderSearchInfo : orderInfoList) {
|
|
|
- //获取的详情数据和列表数据没什么区别, 直接使用列表数据即可
|
|
|
+ // 批次号
|
|
|
+ String batchIdST = generateKeyUtil.getSalesBatchIdJD();
|
|
|
+ // 循环抓取
|
|
|
+ boolean hasNext = true;
|
|
|
+ int pageNo = 1;
|
|
|
+ try {
|
|
|
+ int total = 0;
|
|
|
+ // 开始循环
|
|
|
+ while (hasNext) {
|
|
|
+ logger.info("【京东订单】抓取第{}页的数据......", pageNo);
|
|
|
+ // 抓取京东数据
|
|
|
+ JdClient client = null;
|
|
|
+ PopOrderEnSearchRequest orderSearchRequest = null;
|
|
|
+ PopOrderEnSearchResponse rsp = null;
|
|
|
+ try {
|
|
|
+ SysConfig sysConfig = sysConfigService.getSysConfigAll(configId);
|
|
|
+ if (org.apache.commons.lang3.StringUtils.isBlank(sysConfig.getConfigParameter())) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ client = new DefaultJdClient(TaobaoConfig.JINGDONG_API_URL, sysConfig.getConfigParameter(), TaobaoConfig.jd_appkey, TaobaoConfig.jd_secret);
|
|
|
+ orderSearchRequest = new PopOrderEnSearchRequest();
|
|
|
+ orderSearchRequest.setStartDate(startTime);
|
|
|
+ orderSearchRequest.setEndDate(endTime);
|
|
|
+ orderSearchRequest.setOrderState("WAIT_SELLER_STOCK_OUT,WAIT_SELLER_DELIVERY,WAIT_GOODS_RECEIVE_CONFIRM");//待出库和境外待发货, 一般仅存在前者
|
|
|
+ orderSearchRequest.setOptionalFields(initOrderOptionalFields());
|
|
|
+ orderSearchRequest.setPage("" + pageNo);
|
|
|
+ orderSearchRequest.setPageSize("" + 40L);
|
|
|
+ orderSearchRequest.setDateType(0);//按照最后修改时间查询
|
|
|
+ rsp = client.execute(orderSearchRequest);
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error("请求京东服务器异常:{}", e);
|
|
|
+ }
|
|
|
+ if (rsp == null) {
|
|
|
+ logger.error("【京东订单】请求京东服务器失败!");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ // 判断数据
|
|
|
+ String code = rsp.getCode();
|
|
|
+ if (!"0".equals(rsp.getCode())) {
|
|
|
+ logger.info("【京东订单】请求京东服务器,返回错误码:{}, 错误信息:{}", code, rsp.getMsg());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ logger.info("【京东订单】请求京东服务器,返回信息:{}", rsp.getMsg());
|
|
|
+
|
|
|
+ OrderListResult orderResult = rsp.getSearchorderinfoResult();
|
|
|
+ if (orderResult == null) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ List<OrderSearchInfo> orderInfoList = orderResult.getOrderInfoList();
|
|
|
+ if (orderInfoList == null || orderInfoList.size() == 0) {
|
|
|
+ logger.info("【京东订单】数据请求完毕, 数量为0");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ for (OrderSearchInfo orderSearchInfo : orderInfoList) {
|
|
|
+ //获取的详情数据和列表数据没什么区别, 直接使用列表数据即可
|
|
|
// Trade details = getOrderDetails(orderSearchInfo.getOrderId());
|
|
|
// if (details == null) {
|
|
|
// logger.error("【京东订单】{}获取订单详细数据失败", trade.getTid());
|
|
|
// return;
|
|
|
// }
|
|
|
- // 组装数据
|
|
|
- SalesOrder salesOrder = packageOrder(orderSearchInfo);
|
|
|
- if (salesOrder != null) {
|
|
|
- salesOrder.setSalesBatchId(batchIdST);
|
|
|
- salesOrderService.addOrder(salesOrder, "创建订单(京东拉取订单)");
|
|
|
- total ++;
|
|
|
+ // 组装数据
|
|
|
+ SalesOrder salesOrder = packageOrder(orderSearchInfo, storeId, salesCompanyId);
|
|
|
+ if (salesOrder != null) {
|
|
|
+ salesOrder.setSalesBatchId(batchIdST);
|
|
|
+ salesOrderService.addOrder(salesOrder, "创建订单(京东拉取订单)");
|
|
|
+ total ++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 迭代数据
|
|
|
+ if (rsp.getSearchorderinfoResult().getOrderTotal() <= pageNo * 40) {
|
|
|
+ hasNext = false;
|
|
|
+ } else {
|
|
|
+ hasNext = true;
|
|
|
+ pageNo ++;
|
|
|
}
|
|
|
}
|
|
|
- // 迭代数据
|
|
|
- if (rsp.getSearchorderinfoResult().getOrderTotal() <= pageNo * 40) {
|
|
|
- hasNext = false;
|
|
|
- } else {
|
|
|
- hasNext = true;
|
|
|
- pageNo ++;
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- OrderSyncLog orderSyncLog = new OrderSyncLog();
|
|
|
- orderSyncLog.setSyncPlatId(1);
|
|
|
- orderSyncLog.setSyncLogType(1);
|
|
|
- orderSyncLog.setSyncLogMode(1);
|
|
|
- orderSyncLog.setSyncLogRecentNum(total); //同步总数量
|
|
|
- orderSyncLog.setSyncLogErrorNum(0); //同步失败数量
|
|
|
- orderSyncLog.setSyncLogMsg("拉取京东订单"); //备注
|
|
|
- orderSyncLogMapper.save(orderSyncLog);
|
|
|
+ OrderSyncLog orderSyncLog = new OrderSyncLog();
|
|
|
+ orderSyncLog.setSyncPlatId(1);
|
|
|
+ orderSyncLog.setSyncLogType(1);
|
|
|
+ orderSyncLog.setSyncLogMode(1);
|
|
|
+ orderSyncLog.setSyncLogRecentNum(total); //同步总数量
|
|
|
+ orderSyncLog.setSyncLogErrorNum(0); //同步失败数量
|
|
|
+ orderSyncLog.setSyncLogMsg("拉取京东订单:店铺id" + storeId); //备注
|
|
|
+ orderSyncLogMapper.save(orderSyncLog);
|
|
|
|
|
|
- sysConfigTime.setConfigParameter(endTime);
|
|
|
- sysConfigService.updateSysConfig(sysConfigTime);
|
|
|
+ sysConfigTime.setConfigParameter(endTime);
|
|
|
+ sysConfigService.updateSysConfig(sysConfigTime);
|
|
|
|
|
|
// RedisUtils.put("JINGDONG_SYNC_TIME", endTime);
|
|
|
- } catch (Exception e) {
|
|
|
- logger.error("", e);
|
|
|
- OrderSyncLog orderSyncLog = new OrderSyncLog();
|
|
|
- orderSyncLog.setSyncPlatId(1);
|
|
|
- orderSyncLog.setSyncLogType(1);
|
|
|
- orderSyncLog.setSyncLogMode(1);
|
|
|
- orderSyncLog.setSyncLogRecentNum(1); //同步总数量
|
|
|
- orderSyncLog.setSyncLogErrorNum(1); //同步失败数量
|
|
|
- orderSyncLog.setSyncLogMsg("拉取京东订单"); //备注
|
|
|
- orderSyncLog.setSyncLogErrorMsg(e.getMessage());
|
|
|
- orderSyncLogMapper.save(orderSyncLog);
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error("", e);
|
|
|
+ OrderSyncLog orderSyncLog = new OrderSyncLog();
|
|
|
+ orderSyncLog.setSyncPlatId(1);
|
|
|
+ orderSyncLog.setSyncLogType(1);
|
|
|
+ orderSyncLog.setSyncLogMode(1);
|
|
|
+ orderSyncLog.setSyncLogRecentNum(1); //同步总数量
|
|
|
+ orderSyncLog.setSyncLogErrorNum(1); //同步失败数量
|
|
|
+ orderSyncLog.setSyncLogMsg("拉取京东订单:店铺id" + storeId); //备注
|
|
|
+ orderSyncLog.setSyncLogErrorMsg(e.getMessage());
|
|
|
+ orderSyncLogMapper.save(orderSyncLog);
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
|
- public com.jd.open.api.sdk.domain.order.OrderQueryJsfService.response.enGet.OrderSearchInfo getOrderDetails(Long tid) {
|
|
|
+ public com.jd.open.api.sdk.domain.order.OrderQueryJsfService.response.enGet.OrderSearchInfo getOrderDetails(Long tid, Integer storeId) {
|
|
|
try {
|
|
|
Thread.sleep(1000);
|
|
|
} catch (InterruptedException e) {
|
|
@@ -222,7 +240,7 @@ public class JingdongTask {
|
|
|
}
|
|
|
|
|
|
try {
|
|
|
- SysConfig sysConfig = sysConfigService.getSysConfigAll(DB_JD_TOKEN_ID);
|
|
|
+ SysConfig sysConfig = sysConfigService.getSysConfigAll(getConfigId(storeId));
|
|
|
JdClient client = new DefaultJdClient(TaobaoConfig.JINGDONG_API_URL, sysConfig.getConfigParameter(), TaobaoConfig.jd_appkey, TaobaoConfig.jd_secret);
|
|
|
PopOrderEnGetRequest request = new PopOrderEnGetRequest();
|
|
|
request.setOrderId(tid);
|
|
@@ -242,6 +260,15 @@ public class JingdongTask {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
+ private Integer getConfigId(Integer storeId) {
|
|
|
+ if (storeId == STORE_ID_JD_IAMBERRY) {
|
|
|
+ return DB_JD_TOKEN_ID;
|
|
|
+ } else if (storeId == STORE_ID_JD_METAPURE) {
|
|
|
+ return DB_JD_METAPURE_TOKEN_ID;
|
|
|
+ }
|
|
|
+ return DB_JD_TOKEN_ID;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
public String initOrderOptionalFields() {
|
|
|
return "orderId,venderId,orderType,payType,orderTotalPrice,orderSellerPrice,orderPayment,freightPrice,sellerDiscount,orderState,orderStateRemark,deliveryType," +
|
|
@@ -260,13 +287,15 @@ public class JingdongTask {
|
|
|
|
|
|
/**
|
|
|
* 京东发货
|
|
|
+ *
|
|
|
* @param orderId
|
|
|
* @param logiCoprId
|
|
|
* @param logiNo
|
|
|
+ * @param storeId
|
|
|
*/
|
|
|
- public OperatorResult orderShipment(String orderId, String logiCoprId, String logiNo){
|
|
|
+ public OperatorResult orderShipment(String orderId, String logiCoprId, String logiNo, Integer storeId){
|
|
|
|
|
|
- SysConfig sysConfig = sysConfigService.getSysConfigAll(DB_JD_TOKEN_ID);
|
|
|
+ SysConfig sysConfig = sysConfigService.getSysConfigAll(getConfigId(storeId));
|
|
|
JdClient client = new DefaultJdClient(JingdongConfig.JINGDONG_API_URL, sysConfig.getConfigParameter(), JingdongConfig.jd_appkey, JingdongConfig.jd_secret);
|
|
|
PopOrderShipmentRequest req = new PopOrderShipmentRequest();
|
|
|
req.setOrderId(Long.parseLong(orderId));
|
|
@@ -288,7 +317,7 @@ public class JingdongTask {
|
|
|
}
|
|
|
|
|
|
|
|
|
- public OrderPrivacyModel getMobile(String orderId) {
|
|
|
+ public OrderPrivacyModel getMobile(String orderId, int storeId) {
|
|
|
try {
|
|
|
Thread.sleep(1000);
|
|
|
} catch (InterruptedException e) {
|
|
@@ -296,7 +325,7 @@ public class JingdongTask {
|
|
|
}
|
|
|
|
|
|
try {
|
|
|
- SysConfig sysConfig = sysConfigService.getSysConfigAll(DB_JD_TOKEN_ID);
|
|
|
+ SysConfig sysConfig = sysConfigService.getSysConfigAll(getConfigId(storeId));
|
|
|
PopOrderGetmobilelistResponse rsp = null;
|
|
|
JdClient client = new DefaultJdClient(TaobaoConfig.JINGDONG_API_URL, sysConfig.getConfigParameter(), TaobaoConfig.jd_appkey, TaobaoConfig.jd_secret);
|
|
|
PopOrderGetmobilelistRequest request = new PopOrderGetmobilelistRequest();
|
|
@@ -326,10 +355,13 @@ public class JingdongTask {
|
|
|
|
|
|
/**
|
|
|
* 数据还需要完善地址库编码、成本价格
|
|
|
+ *
|
|
|
* @param trade
|
|
|
+ * @param storeId
|
|
|
+ * @param salesCompanyId
|
|
|
* @return
|
|
|
*/
|
|
|
- private SalesOrder packageOrder(OrderSearchInfo trade) {
|
|
|
+ private SalesOrder packageOrder(OrderSearchInfo trade, int storeId, int salesCompanyId) {
|
|
|
logger.info("packageOrder orderState:" + trade.getOrderState());
|
|
|
// 处理京东仓自发货场景
|
|
|
boolean waitGoodsReceiveConfirm = "WAIT_GOODS_RECEIVE_CONFIRM".equals(trade.getOrderState()) || "等待确认收货".equals(trade.getOrderStateRemark());
|
|
@@ -344,7 +376,7 @@ public class JingdongTask {
|
|
|
order.setSalesDeliver(waitGoodsReceiveConfirm ? 2 : 1);
|
|
|
|
|
|
//获取收货人手机号
|
|
|
- OrderPrivacyModel orderPrivacyModel = getMobile(trade.getOrderId());
|
|
|
+ OrderPrivacyModel orderPrivacyModel = getMobile(trade.getOrderId(), storeId);
|
|
|
|
|
|
//收货人信息
|
|
|
UserInfo consigneeInfo = trade.getConsigneeInfo();
|
|
@@ -396,8 +428,8 @@ public class JingdongTask {
|
|
|
order.setSalesCreateTime(DateTimeUtil.parse(trade.getOrderStartTime()));
|
|
|
order.setSalesAdminRemark(trade.getVenderRemark());
|
|
|
order.setSalesUserRemark(trade.getOrderRemark());
|
|
|
- order.setSalesCompanyId(1);
|
|
|
- order.setSalesStoreId(40);
|
|
|
+ order.setSalesCompanyId(salesCompanyId);
|
|
|
+ order.setSalesStoreId(storeId);
|
|
|
order.setSalesType(1);
|
|
|
order.setSalesAddType(4);
|
|
|
order.setSalesAdminId(10135);
|