|
@@ -2,6 +2,7 @@ package com.iamberry.rst.controllers.mq;
|
|
|
|
|
|
//import com.iamberry.redis.RedisUtils;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.iamberry.rst.core.cm.SalesOrder;
|
|
|
import com.iamberry.rst.core.cm.SalesOrderItem;
|
|
|
import com.iamberry.rst.core.order.OrderSyncLog;
|
|
@@ -27,14 +28,15 @@ import com.jd.open.api.sdk.domain.order.OrderQueryJsfService.response.enSearch.O
|
|
|
import com.jd.open.api.sdk.domain.order.OrderQueryJsfService.response.enSearch.OrderSearchInfo;
|
|
|
import com.jd.open.api.sdk.domain.order.OrderQueryJsfService.response.enSearch.UserInfo;
|
|
|
import com.jd.open.api.sdk.domain.order.OrderShipmentService.response.shipment.OperatorResult;
|
|
|
-import com.jd.open.api.sdk.request.order.PopOrderEnGetRequest;
|
|
|
-import com.jd.open.api.sdk.request.order.PopOrderEnSearchRequest;
|
|
|
-import com.jd.open.api.sdk.request.order.PopOrderGetmobilelistRequest;
|
|
|
-import com.jd.open.api.sdk.request.order.PopOrderShipmentRequest;
|
|
|
-import com.jd.open.api.sdk.response.order.PopOrderEnGetResponse;
|
|
|
-import com.jd.open.api.sdk.response.order.PopOrderEnSearchResponse;
|
|
|
-import com.jd.open.api.sdk.response.order.PopOrderGetmobilelistResponse;
|
|
|
-import com.jd.open.api.sdk.response.order.PopOrderShipmentResponse;
|
|
|
+import com.jd.open.api.sdk.domain.sku.IOaidService.request.decrypt.GetReceiverInfoListReqVO;
|
|
|
+import com.jd.open.api.sdk.domain.sku.IOaidService.request.decrypt.OrderInfoReqVO;
|
|
|
+import com.jd.open.api.sdk.domain.sku.IOaidService.response.decrypt.OrderReceiverInfoModel;
|
|
|
+import com.jd.open.api.sdk.request.order.*;
|
|
|
+import com.jd.open.api.sdk.request.sku.JosOrderOaidDecryptRequest;
|
|
|
+import com.jd.open.api.sdk.response.order.*;
|
|
|
+import com.jd.open.api.sdk.response.sku.JosOrderOaidDecryptResponse;
|
|
|
+import com.jd.security.tdeclient.SecretJdClient;
|
|
|
+import com.jd.security.tdeclient.TDEClient;
|
|
|
import com.taobao.api.internal.util.StringUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
@@ -139,8 +141,9 @@ public class JingdongTask {
|
|
|
JdClient client = null;
|
|
|
PopOrderEnSearchRequest orderSearchRequest = null;
|
|
|
PopOrderEnSearchResponse rsp = null;
|
|
|
+ SysConfig sysConfig = null;
|
|
|
try {
|
|
|
- SysConfig sysConfig = sysConfigService.getSysConfigAll(configId);
|
|
|
+ sysConfig = sysConfigService.getSysConfigAll(configId);
|
|
|
if (org.apache.commons.lang3.StringUtils.isBlank(sysConfig.getConfigParameter())) {
|
|
|
break;
|
|
|
}
|
|
@@ -185,9 +188,43 @@ public class JingdongTask {
|
|
|
// logger.error("【京东订单】{}获取订单详细数据失败", trade.getTid());
|
|
|
// return;
|
|
|
// }
|
|
|
+ PopOrderGetRequest popOrderGetRequest=new PopOrderGetRequest();
|
|
|
+ popOrderGetRequest.setOrderState("WAIT_SELLER_STOCK_OUT,WAIT_SELLER_DELIVERY,WAIT_GOODS_RECEIVE_CONFIRM");
|
|
|
+ popOrderGetRequest.setOptionalFields("fullname,orderId,fullAddress,oaid,consigneeInfo,orderState");
|
|
|
+ popOrderGetRequest.setOrderId(Long.parseLong(orderSearchInfo.getOrderId()));
|
|
|
+ logger.info("【京东订单】请求订单详情:{}", JSONObject.toJSONString(popOrderGetRequest));
|
|
|
+ PopOrderGetResponse popOrderGetResponse=client.execute(popOrderGetRequest);
|
|
|
+ logger.info("【京东订单】返回订单详情:{}", JSONObject.toJSONString(popOrderGetResponse));
|
|
|
+ if (popOrderGetResponse == null || popOrderGetResponse.getOrderDetailInfo() == null || popOrderGetResponse.getOrderDetailInfo().getOrderInfo() == null) {
|
|
|
+ logger.info("【京东订单】请求数据失败{}", orderSearchInfo.getOrderId());
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 解密数据
|
|
|
*/
|
|
|
+ JosOrderOaidDecryptRequest request = new JosOrderOaidDecryptRequest();
|
|
|
+ GetReceiverInfoListReqVO getReceiverInfoListReqVO = new GetReceiverInfoListReqVO();
|
|
|
+ getReceiverInfoListReqVO.setOrderType("POP");
|
|
|
+ getReceiverInfoListReqVO.setAppName("爱贝源官方旗航店");
|
|
|
+ getReceiverInfoListReqVO.setScenesType(new Random().nextBoolean() ? "1003" : "1002");
|
|
|
+ // 订单信息
|
|
|
+ Set<OrderInfoReqVO> orderInfoReqVOSet = new HashSet<>(1);
|
|
|
+ OrderInfoReqVO orderInfoReqVO = new OrderInfoReqVO();
|
|
|
+ orderInfoReqVO.setOrderId(Long.parseLong(orderSearchInfo.getOrderId()));
|
|
|
+ orderInfoReqVO.setOaid(popOrderGetResponse.getOrderDetailInfo().getOrderInfo().getConsigneeInfo().getOaid());
|
|
|
+ orderInfoReqVOSet.add(orderInfoReqVO);
|
|
|
+ // 请求
|
|
|
+ getReceiverInfoListReqVO.setOrderInfos(orderInfoReqVOSet);
|
|
|
+ request.setGetReceiverInfoListReqVO(getReceiverInfoListReqVO);
|
|
|
+ logger.info("组装数据:{}", JSONObject.toJSONString(getReceiverInfoListReqVO));
|
|
|
+ JosOrderOaidDecryptResponse josOrderOaidDecryptResponse = client.execute(request);
|
|
|
+ logger.info("返回数据:{}", JSONObject.toJSONString(josOrderOaidDecryptResponse));
|
|
|
+ OrderReceiverInfoModel orderReceiverInfoModel = josOrderOaidDecryptResponse.getReturnType().getData().get(0);
|
|
|
+ // 替换数据
|
|
|
+ orderSearchInfo.getConsigneeInfo().setFullname(orderReceiverInfoModel.getCustomerName());
|
|
|
+ orderSearchInfo.getConsigneeInfo().setMobile(orderReceiverInfoModel.getConsMobilePhone());
|
|
|
+ orderSearchInfo.getConsigneeInfo().setFullAddress(orderReceiverInfoModel.getAddress());
|
|
|
|
|
|
// 组装数据
|
|
|
SalesOrder salesOrder = packageOrder(orderSearchInfo, storeId, salesCompanyId);
|
|
@@ -234,6 +271,18 @@ public class JingdongTask {
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ * 请求宙斯网关获取凭证和密钥
|
|
|
+ * 1、凭证和密钥缓存本地(用于数据加解密)
|
|
|
+ * 2、数据来源于请求宙斯网关API敏感字段值
|
|
|
+ * 3、数据加解密案例如下
|
|
|
+ *
|
|
|
+ */
|
|
|
+ public static String dataEncryptOrDecrypt(String token, String plaintext) throws Exception {
|
|
|
+ TDEClient tdeClient = SecretJdClient.getInstance(TaobaoConfig.JINGDONG_API_URL, token, TaobaoConfig.jd_appkey, TaobaoConfig.jd_secret);
|
|
|
+ return tdeClient.decryptString(plaintext);
|
|
|
+ }
|
|
|
|
|
|
|
|
|
public com.jd.open.api.sdk.domain.order.OrderQueryJsfService.response.enGet.OrderSearchInfo getOrderDetails(Long tid, Integer storeId) {
|
|
@@ -382,7 +431,8 @@ public class JingdongTask {
|
|
|
order.setSalesDeliver(waitGoodsReceiveConfirm ? 2 : 1);
|
|
|
|
|
|
//获取收货人手机号
|
|
|
- OrderPrivacyModel orderPrivacyModel = getMobile(trade.getOrderId(), storeId);
|
|
|
+ // OrderPrivacyModel orderPrivacyModel = getMobile(trade.getOrderId(), storeId);
|
|
|
+ OrderPrivacyModel orderPrivacyModel = null;
|
|
|
|
|
|
//收货人信息
|
|
|
UserInfo consigneeInfo = trade.getConsigneeInfo();
|