ANG YU 5 лет назад
Родитель
Сommit
9dfbebc49c

+ 4 - 2
app/Http/Controllers/TestController.php

@@ -44,6 +44,7 @@ use App\Services\LogisticService;
 use App\Services\LogService;
 use App\Services\OracleDocAsnHerderService;
 use App\Services\OracleDOCOrderHeaderService;
+use App\Services\OrderPackageReceivedSyncService;
 use App\Services\OrderPackageService;
 use App\Services\OrderService;
 use App\Services\OrderTrackingOwnerService;
@@ -1195,9 +1196,10 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
         return $orderPackageReceivedSyncService->getLogisticNumbers();
     }
 
-    public function testLogisticNumberGet()
+    public function test_orderPackage_updated()
     {
         $orderPackageReceivedSyncService = new OrderPackageReceivedSyncService();
-        return $orderPackageReceivedSyncService->get();
+        $response = $orderPackageReceivedSyncService->get(['SF' => ['SF1038343374236']]);
+        $orderPackageReceivedSyncService->update($response);
     }
 }

+ 1 - 1
app/OrderPackage.php

@@ -18,7 +18,7 @@ class OrderPackage extends Model
     use ModelTimeFormat;
 
     protected $fillable = ['order_id','logistic_number','batch_number',
-        'batch_rule','bulk','weight','length','width','height','paper_box_id','measuring_machine_id','weighed_at','status'];
+        'batch_rule','bulk','weight','length','width','height','paper_box_id','measuring_machine_id','weighed_at','status','sent_at','received_at','exception','transfer_status','remark'];
 
     public function order(){
         return $this->belongsTo('App\Order','order_id','id');

+ 6 - 1
app/Services/LogisticSFService.php

@@ -92,7 +92,12 @@ xml;
     public function transformSFOneToArr(array $routeResponse, array $data): array
     {
         $data['logistic_number'] = $routeResponse['@attributes'][$this->protected_switch['logistic_number']];
-        $lastRoute = get_object_vars($routeResponse['Route'][count($routeResponse['Route']) - 1])['@attributes'];//获取最新的路由信息
+        try {
+            $lastRoute = get_object_vars($routeResponse['Route'][count($routeResponse['Route']) - 1])['@attributes'];//获取最新的路由信息
+        } catch (Exception $e) {
+            LogService::log(__METHOD__, "ERROR-该单号{$data['logistic_number']}未查询到快递路由信息", json_encode($e));
+            return [];
+        }
         $data = $this->switchOpCodeToStatus($lastRoute, $data);
         $data['transfer_status'] = $this->transformRoutes($routeResponse['Route']);
         return $data;

+ 19 - 3
app/Services/OrderPackageReceivedSyncService.php

@@ -11,7 +11,8 @@ use Illuminate\Database\Eloquent\Collection;
 
 class OrderPackageReceivedSyncService
 {
-    protected $logisticQiaoSFService;
+    protected $logisticSFService;
+    protected $logisticZopService;
 
     /**
      * 获取快件揽收信息
@@ -24,7 +25,8 @@ class OrderPackageReceivedSyncService
      */
     public function get(array $request): array
     {
-        $this->logisticQiaoSFService = new LogisticSFService();
+        $this->logisticSFService = new LogisticSFService();
+        $this->logisticZopService = new LogisticZopService();
         $resultSF = [];
         $resultZT = [];
         $resultYD = [];
@@ -33,9 +35,10 @@ class OrderPackageReceivedSyncService
         foreach ($request as $key => $logisticNums) {
             switch ($key) {
                 case "SF":
-                    $resultSF = $this->logisticQiaoSFService->get($logisticNums);
+                    $resultSF = $this->logisticSFService->get($logisticNums);
                     break;
                 case "ZTO":
+//                    $resultZT = $this->logisticZopService->get($logisticNums);
                     $resultZT = [];
                     break;
                 case "YD":
@@ -52,6 +55,19 @@ class OrderPackageReceivedSyncService
         return array_merge($resultSF, $resultYD, $resultYT, $resultZT, $resultOther);
     }
 
+    public function update(array $orderPackages)
+    {
+        foreach ($orderPackages as $data) {
+            $orderPackage = OrderPackage::query()->where('logistic_number',$data['logistic_number'])->first();
+            if (isset($data['status'])) $orderPackage->status = $data['status'];
+            if (isset($data['received_at'])) $orderPackage->received_at = $data['received_at'];
+            if (isset($data['exception'])) $orderPackage->exception = $data['exception'];
+            if (isset($data['transfer_status'])) $orderPackage->transfer_status = $data['transfer_status'];
+            $orderPackage->save();
+            LogService::log(__METHOD__, "SUCCESS-快递信息更新成功", json_encode($orderPackage));
+        }
+    }
+
     /**
      * 查询当前日期前的快递单号并按照承运商分类
      */