Explorar o código

扫码添加物流

chao %!s(int64=3) %!d(string=hai) anos
pai
achega
a7988693ab

+ 15 - 0
src/main/java/com/caimei365/order/controller/ShipApi.java

@@ -9,6 +9,7 @@ import com.caimei365.order.service.ShipService;
 import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.*;
 import lombok.RequiredArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
@@ -175,6 +176,20 @@ public class ShipApi {
         return shipService.addLogisticsInfo(logisticsBatchDto);
     }
 
+    /**
+     * 扫码添加物流
+     * @param number 快递单号
+     */
+    @ApiOperation("扫码添加物流(旧:/supplier/scanLogistics)")
+    @ApiImplicitParam(required = true, name = "number", value = "快递单号")
+    @PostMapping("/ship/logistics/scan")
+    public ResponseJson<CompanyVo> scanGetLogisticsInfo(String number) {
+        if (StringUtils.isEmpty(number)) {
+            return ResponseJson.error("快递单号不能为空!", null);
+        }
+        return shipService.scanGetLogisticsInfo(number);
+    }
+
     /**
      * 供应商查看物流
      */

+ 10 - 0
src/main/java/com/caimei365/order/service/RemoteCallService.java

@@ -37,4 +37,14 @@ public interface RemoteCallService {
      * @param headers           HttpHeaders
      */
     String appletsAuthorization(String code, String encryptedData, String iv, HttpHeaders headers);
+
+    /**
+     * 智能获取物流信息
+     *
+     * @param number      快递单号
+     * @param companyCode 快递公司的编码
+     * @param mobile      收/寄件人的电话号码(顺丰必填)
+     */
+    String getLogisticsByNumber(String number, String companyCode, String mobile);
+
 }

+ 6 - 0
src/main/java/com/caimei365/order/service/ShipService.java

@@ -85,6 +85,11 @@ public interface ShipService {
      *                          }
      */
     ResponseJson<Void> addLogisticsInfo(LogisticsBatchDto logisticsBatchDto);
+    /**
+     * 扫码添加物流
+     * @param number 快递单号
+     */
+    ResponseJson<CompanyVo> scanGetLogisticsInfo(String number);
     /**
      * 供应商查看物流
      * @param shopOrderId       子订单Id
@@ -98,4 +103,5 @@ public interface ShipService {
     ResponseJson<Void> deleteLogisticsInfo(Integer logisticsInfoId);
 
 
+
 }

+ 36 - 0
src/main/java/com/caimei365/order/service/impl/RemoteCallServiceImpl.java

@@ -147,4 +147,40 @@ public class RemoteCallServiceImpl implements RemoteCallService {
         });
         return resultData.get();
     }
+
+    /**
+     * 智能获取物流信息
+     *
+     * @param number      快递单号
+     * @param companyCode 快递公司的编码
+     * @param mobile      收/寄件人的电话号码(顺丰必填)
+     */
+    @Override
+    public String getLogisticsByNumber(String number, String companyCode, String mobile) {
+        AtomicReference<String> resultData = new AtomicReference<>("");
+        // 请求参数
+        String params = "?number=" + number;
+        if (StringUtils.isNotEmpty(companyCode) && StringUtils.isNotEmpty(mobile)) {
+            params = params + ("&companyCode=" + companyCode + "&mobile=" + mobile);
+        } else if (StringUtils.isNotEmpty(companyCode)) {
+            params = params + ("&companyCode=" + companyCode);
+        } else if (StringUtils.isNotEmpty(mobile)) {
+            params = params + ("&mobile=" + mobile);
+        }
+        // 发送服务间调用GET请求
+        Mono<String> result = webClientBuilder.build()
+                .get()
+                .uri("http://CAIMEI365-CLOUD-TOOLS/tools/query/logistics" + params)
+                .retrieve()
+                .bodyToMono(String.class);
+        result.subscribe(log::info);
+        result.subscribe(jsonStr -> {
+            JSONObject parseObject = JSONObject.parseObject(jsonStr);
+            if (0 == parseObject.getInteger("code")){
+                // 获取物流信息成功
+                resultData.set(parseObject.getString("data"));
+            }
+        });
+        return resultData.get();
+    }
 }

+ 19 - 0
src/main/java/com/caimei365/order/service/impl/ShipServiceImpl.java

@@ -558,6 +558,25 @@ public class ShipServiceImpl implements ShipService {
         return ResponseJson.success(null);
     }
 
+    /**
+     * 扫码添加物流
+     *
+     * @param number 快递单号
+     */
+    @Override
+    public ResponseJson<CompanyVo> scanGetLogisticsInfo(String number) {
+        String result = remoteCallService.getLogisticsByNumber(number, null, null);
+        if (StringUtils.isNotEmpty(result)){
+            JSONObject resultJson = JSONObject.parseObject(result);
+            String comCode = resultJson.getString("com");
+            if (StringUtils.isNotEmpty(comCode)) {
+                List<CompanyVo> companyList = shipMapper.getLogisticsCompany(comCode);
+                return ResponseJson.success(companyList.get(0));
+            }
+        }
+        return ResponseJson.error("查询失败!", null);
+    }
+
     /**
      * 供应商查看物流
      *