|
|
@@ -131,23 +131,7 @@ public class JDLogisticsService implements LogisticsService {
|
|
|
//产品信息
|
|
|
com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.CommonProductInfo productInfo = new com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.CommonProductInfo();
|
|
|
productInfo.setProductCode(bizWaybillOrder.getProductCode());
|
|
|
-
|
|
|
- if (StringUtils.isNotEmpty(bizWaybillOrder.getAddedService())) {
|
|
|
- JSONObject addedJson = JSON.parseObject(bizWaybillOrder.getAddedService());
|
|
|
- List<com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.CommonProductInfo> addedProducts = new ArrayList<>();
|
|
|
- if (!addedJson.isEmpty()) {
|
|
|
- addedJson.keySet().forEach(key -> {
|
|
|
- com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.CommonProductInfo addedProduct = new com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.CommonProductInfo();
|
|
|
- addedProduct.setProductCode(key);
|
|
|
-
|
|
|
- addedProduct.setProductAttrs(getProductAttrs(requestDTO.getOrderOrigin(), key, addedJson.getString(key)));
|
|
|
-
|
|
|
- addedProducts.add(addedProduct);
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- productInfo.setAddedProducts(addedProducts);
|
|
|
- }
|
|
|
+ productInfo.setAddedProducts(getAddedProducts(requestDTO.getOrderOrigin(), bizWaybillOrder.getAddedService()));
|
|
|
|
|
|
|
|
|
//货物信息
|
|
|
@@ -295,40 +279,128 @@ public class JDLogisticsService implements LogisticsService {
|
|
|
return orderOrigin;
|
|
|
}
|
|
|
|
|
|
+ // 增值服务配置映射表
|
|
|
+ private static final Map<Integer, Map<String, ProductConfig>> SERVICE_CONFIG_MAP = new HashMap<>();
|
|
|
+
|
|
|
+ static {
|
|
|
+ // 订单来源为1的配置
|
|
|
+ Map<String, ProductConfig> origin1Config = new HashMap<>();
|
|
|
+ origin1Config.put("isPack", new ProductConfig("ed-a-0002", true));
|
|
|
+ origin1Config.put("guaranteeMoney", new ProductConfig("ed-a-0010", true));
|
|
|
+ origin1Config.put("isReceiptCollect", new ProductConfig("ed-a-0011", false));
|
|
|
+ SERVICE_CONFIG_MAP.put(1, origin1Config);
|
|
|
+
|
|
|
+ // 订单来源为4的配置
|
|
|
+ Map<String, ProductConfig> origin4Config = new HashMap<>();
|
|
|
+ origin4Config.put("isPack", new ProductConfig("fr-a-0002", true));
|
|
|
+ origin4Config.put("guaranteeMoney", new ProductConfig("fr-a-0007", true));
|
|
|
+ origin4Config.put("isReceiptCollect", new ProductConfig("fr-a-0005", false));
|
|
|
+ SERVICE_CONFIG_MAP.put(4, origin4Config);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 产品配置类
|
|
|
+ */
|
|
|
+ private static class ProductConfig {
|
|
|
+ private final String productCode;
|
|
|
+ private final boolean hasAttrs;
|
|
|
+
|
|
|
+ public ProductConfig(String productCode, boolean hasAttrs) {
|
|
|
+ this.productCode = productCode;
|
|
|
+ this.hasAttrs = hasAttrs;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getProductCode() {
|
|
|
+ return productCode;
|
|
|
+ }
|
|
|
+
|
|
|
+ public boolean isHasAttrs() {
|
|
|
+ return hasAttrs;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 封装增值服务参数
|
|
|
- * @param addedProductCode
|
|
|
- * @return
|
|
|
+ * @param orderOrigin 订单来源
|
|
|
+ * @param addedService 增值服务JSON字符串
|
|
|
+ * @return 增值服务产品列表
|
|
|
*/
|
|
|
- private Map<String, String> getProductAttrs(Integer orderOrigin, String addedProductCode, String value) {
|
|
|
- if (StringUtils.isBlank(addedProductCode)) {
|
|
|
+ private List<com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.CommonProductInfo> getAddedProducts(Integer orderOrigin, String addedService) {
|
|
|
+ if (StringUtils.isBlank(addedService)) {
|
|
|
return null;
|
|
|
}
|
|
|
+
|
|
|
+ JSONObject addedJson = JSON.parseObject(addedService);
|
|
|
+ List<com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.CommonProductInfo> addedProducts = new ArrayList<>();
|
|
|
+
|
|
|
+ // 获取当前订单来源的配置
|
|
|
+ Map<String, ProductConfig> configMap = SERVICE_CONFIG_MAP.get(orderOrigin);
|
|
|
+ if (configMap == null) {
|
|
|
+ return addedProducts;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 遍历配置中的所有增值服务键
|
|
|
+ for (Map.Entry<String, ProductConfig> entry : configMap.entrySet()) {
|
|
|
+ String serviceKey = entry.getKey();
|
|
|
+ ProductConfig config = entry.getValue();
|
|
|
+
|
|
|
+ // 检查JSON中是否包含该增值服务
|
|
|
+ if (addedJson.containsKey(serviceKey)) {
|
|
|
+ com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.CommonProductInfo addedProduct =
|
|
|
+ createProductInfo(config.getProductCode(), config.isHasAttrs() ?
|
|
|
+ addedJson.getString(serviceKey) : null);
|
|
|
+ addedProducts.add(addedProduct);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return addedProducts;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 创建产品信息对象
|
|
|
+ * @param productCode 产品编码
|
|
|
+ * @param attrValue 属性值(可为空)
|
|
|
+ * @return 产品信息对象
|
|
|
+ */
|
|
|
+ private com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.CommonProductInfo
|
|
|
+ createProductInfo(String productCode, String attrValue) {
|
|
|
+ com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.CommonProductInfo addedProduct =
|
|
|
+ new com.lop.open.api.sdk.domain.ECAP.CommonCreateOrderApi.commonCreateOrderV1.CommonProductInfo();
|
|
|
+ addedProduct.setProductCode(productCode);
|
|
|
+
|
|
|
+ // 如果需要设置属性,则添加属性
|
|
|
+ if (attrValue != null) {
|
|
|
+ addedProduct.setProductAttrs(getProductAttrs(productCode, attrValue));
|
|
|
+ }
|
|
|
+
|
|
|
+ return addedProduct;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取产品属性
|
|
|
+ * @param productCode 产品编码
|
|
|
+ * @param value 属性值
|
|
|
+ * @return 产品属性映射
|
|
|
+ */
|
|
|
+ private Map<String, String> getProductAttrs(String productCode, String value) {
|
|
|
Map<String, String> productAttrs = new HashMap<>();
|
|
|
- if (orderOrigin == 1) {
|
|
|
- if (addedProductCode.equals("ed-a-0002")) {
|
|
|
+
|
|
|
+ switch (productCode) {
|
|
|
+ case "ed-a-0002":
|
|
|
+ case "fr-a-0002":
|
|
|
productAttrs.put("guaranteeMoney", value);
|
|
|
- return productAttrs;
|
|
|
- } else if (addedProductCode.equals("ed-a-0010")) {
|
|
|
+ break;
|
|
|
+ case "ed-a-0010":
|
|
|
productAttrs.put("reReceiveMode", "[\"electronic\"]");
|
|
|
productAttrs.put("reReceiveType", "[\"electronicStubForm\"]");
|
|
|
- return productAttrs;
|
|
|
- } else if (addedProductCode.equals("ed-a-0011")) {
|
|
|
- productAttrs.put("packagingType", value);
|
|
|
- return productAttrs;
|
|
|
- }
|
|
|
- } else if (orderOrigin == 4) {
|
|
|
- if (addedProductCode.equals("fr-a-0002")) {
|
|
|
- productAttrs.put("guaranteeMoney", value);
|
|
|
- return productAttrs;
|
|
|
- } else if (addedProductCode.equals("fr-a-0007")) {
|
|
|
- productAttrs.put("reReceiveMode", value);
|
|
|
- return productAttrs;
|
|
|
- } else if (addedProductCode.equals("fr-a-0005")) {
|
|
|
- productAttrs.put("packagingType", value);
|
|
|
- return productAttrs;
|
|
|
- }
|
|
|
+ break;
|
|
|
+ case "fr-a-0007":
|
|
|
+ productAttrs.put("reReceiveMode", "[\"electronic\"]");
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ return null;
|
|
|
}
|
|
|
- return null;
|
|
|
+
|
|
|
+ return productAttrs;
|
|
|
}
|
|
|
}
|