فهرست منبع

阿里快递查询无结果标记状态

haozi 4 سال پیش
والد
کامیت
f882f663d1

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

@@ -13,9 +13,11 @@ use App\Jobs\CacheShelfTaskJob;
 use App\Jobs\OrderCreateInstantBill;
 use App\Jobs\OrderCreateWaybill;
 use App\Jobs\StoreCreateInstantBill;
+use App\Logistic;
 use App\MaterialBox;
 use App\MaterialBoxModel;
 use App\Order;
+use App\OrderPackage;
 use App\Owner;
 use App\OwnerFeeDetail;
 use App\OwnerFeeDetailLogistic;

+ 5 - 7
app/Jobs/LogisticAliJiSuSync.php

@@ -35,7 +35,7 @@ class LogisticAliJiSuSync implements ShouldQueue
      */
     public function __construct($logistic_number)
     {
-        $this->logistic_number=$logistic_number;
+        $this->logistic_number = $logistic_number;
     }
 
     /**
@@ -47,13 +47,11 @@ class LogisticAliJiSuSync implements ShouldQueue
     {
         LogService::log(LogisticAliJiSuSync::class, "{$this->logistic_number}-JOB-AliJiSu", '');
         $this->logisticAliJiSuApiService = app('LogisticAliJiSuApiService');
+        $response = $this->logisticAliJiSuApiService->query($this->logistic_number);
+        $format = $this->logisticAliJiSuApiService->format($response,$this->logistic_number);
         try {
-            $response = $this->logisticAliJiSuApiService->query($this->logistic_number);
-            if ($response && $response->status==0){
-                $format = $this->logisticAliJiSuApiService->format($response);
-                $this->orderPackageReceivedSyncService = app('OrderPackageReceivedSyncService');
-                if (count($format)>0 && $format['logistic_number']??false) $this->orderPackageReceivedSyncService->update([$format]);
-            }
+            $this->orderPackageReceivedSyncService = app('OrderPackageReceivedSyncService');
+            if (count($format) > 0 && $format['logistic_number'] ?? false) $this->orderPackageReceivedSyncService->update([$format]);
         } catch (\Exception $e) {
             app('LogService')->log(__METHOD__, __FUNCTION__, "阿里极速数据同步快递数据 ERROR " . ' || ' . json_encode($this->logistic_number) . ' || ' . json_encode($e->getMessage()) . ' || ' . json_encode($e->getTraceAsString()));
         }

+ 8 - 2
app/Services/LogisticAliJiSuApiService.php

@@ -40,10 +40,16 @@ class LogisticAliJiSuApiService
         return json_decode(curl_exec($curl));
     }
 
-    public function format($response): array
+    public function format($response,$logistic_number): array
     {
         $result = [];
-        if (!isset($response)) {return [];}
+        if (!isset($response)||($response && $response->status!=0)) {
+            return [
+                'logistic_number' => $logistic_number,
+                'exception_type' => '揽件异常',
+                'exception' => '是',
+            ];
+        }
         else {
             try {
                 if ($response->result->number??false)$result['logistic_number'] = $response->result->number;

+ 1 - 1
app/Services/OrderPackageReceivedSyncService.php

@@ -92,7 +92,7 @@ class OrderPackageReceivedSyncService
             ->select(['logistic_number', 'order_id','id'])
             ->whereIn('order_id',function ($query){
                 $query->from('orders')->selectRaw('id')->whereIn('logistic_id',function ($builder){
-                    $builder->from('logistics')->selectRaw('id')->where('type','!=','物流')->whereNotIn('belong_company',['顺丰','中通','韵达','圆通','京东']);
+                    $builder->from('logistics')->selectRaw('id')->where('type','=','快递')->whereNotIn('belong_company',['顺丰','中通','韵达','圆通','京东']);
                 });
             });
         $query = $query->where('sent_at', '>=', now()->subDays(config('api_logistic.querying_days')))

+ 5 - 6
tests/Services/LogisticAliJiSuApiService/FormatTest.php

@@ -30,11 +30,10 @@ class FormatTest extends TestCase
      */
     public function format_test()
     {
-//        $response=$this->service->query('JDVB09966674081');
-//        if ($response && $response->status==0){
-//            $result = $this->service->format($response);
-//            $this->assertNotEmpty($result);
-//        }
-            $this->assertTrue(true);
+//        $response = $this->service->query('9830318696194');
+//        $result = $this->service->format($response, '9830318696194');
+//        dd($result);
+//      $this->assertNotEmpty($result);
+        $this->assertTrue(true);
     }
 }

+ 3 - 2
tests/Services/LogisticAliJiSuApiService/QueryTest.php

@@ -4,6 +4,7 @@
 namespace Tests\Services\LogisticAliJiSuApiService;
 
 use App\OrderPackage;
+use App\Services\LogisticAliJiSuApiService;
 use App\Services\LogisticYDService;
 use App\Services\LogisticYTOService;
 use Doctrine\DBAL\Exception;
@@ -13,7 +14,7 @@ use Tests\TestCase;
 class QueryTest extends TestCase
 {
     /**
-     * @var LogisticYTOService $service
+     * @var LogisticAliJiSuApiService $service
      */
     private $service;
 
@@ -29,7 +30,7 @@ class QueryTest extends TestCase
      */
     public function prod_test()
     {
-//       $response = $this->service->query('KYE700000006097');
+//       $response = $this->service->query('9883840347518');
 //       dd($response);
 //       if ($response->status==0){
 //           $this->assertNotEmpty($response->result);