Просмотр исходного кода

获取快递单号 按照快递公司分类

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

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

@@ -1188,4 +1188,16 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
         if(count($update_params) == 0)return ;
         $orderTrackingService->batchUpdate($update_params);
     }
+
+    public function testGetLogisticNumbers(): array
+    {
+        $orderPackageReceivedSyncService = new OrderPackageReceivedSyncService();
+        return $orderPackageReceivedSyncService->getLogisticNumbers();
+    }
+
+    public function testLogisticNumberGet()
+    {
+        $orderPackageReceivedSyncService = new OrderPackageReceivedSyncService();
+        return $orderPackageReceivedSyncService->get();
+    }
 }

+ 55 - 2
app/Services/OrderPackageReceivedSyncService.php

@@ -4,6 +4,11 @@
 namespace App\Services;
 
 
+use App\OrderPackage;
+use Carbon\Carbon;
+use Exception;
+use Illuminate\Database\Eloquent\Collection;
+
 class OrderPackageReceivedSyncService
 {
     protected $logisticQiaoSFService;
@@ -14,8 +19,10 @@ class OrderPackageReceivedSyncService
      * 'SF' => ['SF1038651915891', 'SF1038651413847', 'SF1038611050071'],
      * 'ZT'=>['75424148714142','548464120822', '75424147834290']
      * ]
+     * @return array
+     * @throws Exception
      */
-    public function get(array $request)
+    public function get(array $request): array
     {
         $this->logisticQiaoSFService = new LogisticSFService();
         $resultSF = [];
@@ -28,7 +35,7 @@ class OrderPackageReceivedSyncService
                 case "SF":
                     $resultSF = $this->logisticQiaoSFService->get($logisticNums);
                     break;
-                case "ZT":
+                case "ZTO":
                     $resultZT = [];
                     break;
                 case "YD":
@@ -44,4 +51,50 @@ class OrderPackageReceivedSyncService
         }
         return array_merge($resultSF, $resultYD, $resultYT, $resultZT, $resultOther);
     }
+
+    /**
+     * 查询当前日期前的快递单号并按照承运商分类
+     */
+    public function getLogisticNumbers(): array
+    {
+        $initDate = Carbon::parse(config('api_logistic.init_date'));
+        $data = [];
+        $query = OrderPackage::query()
+            ->with(['order' => function ($query) {
+                return $query->with('logistic');
+            }]);
+        if (Carbon::now()->gt($initDate)) {
+            $query = $query->where('created_at', '>=', $initDate->toDateTimeString()); //大于初始化时间的全部快递单号
+        } else {
+            $query = $query->where('created_at', '>=', $initDate->subMonths(1)->toDateTimeString()); //初始化查询一个月的数据
+        }
+        $query = $query
+            ->where('exception', '否')
+            ->whereNull('received_at');
+        return $this->buildData($query->get(), $data);
+    }
+
+    /**
+     * 将orderPackage集合分类并摘取指定数据
+     * @param Collection $orderPackages
+     * @param array $data
+     * @return array
+     */
+    public function buildData(Collection $orderPackages, array $data): array
+    {
+        foreach ($orderPackages as $orderPackage) {
+            try {
+                $logisticCode = $orderPackage->order->logistic->code;
+            } catch (Exception $e) {
+                continue;
+            }
+            $key = config('api_logistic.logistic.' . $logisticCode);
+            if (!isset($data[$key])) {
+                $data[$key] = [];
+            } else {
+                $data[$key][] = $orderPackage->logistic_number;
+            }
+        }
+        return $data;
+    }
 }

+ 76 - 0
config/api_logistic.php

@@ -1,5 +1,80 @@
 <?php
 return [
+    'logistic'=>[
+        'ZTO' => 'ZTO',
+        'SF' => 'SF',
+        'YUNDA' => 'YUNDA',
+        'STO' => 'STO',
+        'YTO' => 'YTO',
+        'POSTB' => 'OTHER',
+        'EMS' => 'OTHER',
+        'OTHER' => 'OTHER',
+        'DFZPS' => 'OTHER',
+        'DBKD' => 'OTHER',
+        'DBWL' => 'OTHER',
+        'ANWL' => 'OTHER',
+        'ANWLDF' => 'OTHER',
+        'BSZFC' => 'OTHER',
+        'BSZFCDF' => 'OTHER',
+        'BSZX' => 'OTHER',
+        'BSZXDF' => 'OTHER',
+        'DBKDDF' => 'OTHER',
+        'DBWLDF' => 'OTHER',
+        'ECJG' => 'OTHER',
+        'GYZT' => 'OTHER',
+        'KCTZ' => 'OTHER',
+        'KHZT' => 'OTHER',
+        'KNDB' => 'OTHER',
+        'KYSY' => 'OTHER',
+        'KYSYLY' => 'OTHER',
+        'KYSYLYDF' => 'OTHER',
+        'SFCC' => 'SF',
+        'SFCCDF' => 'SF',
+        'SFGJBK' => 'SF',
+        'SFGJTH' => 'SF',
+        'SFJR' => 'SF',
+        'SFJRDF' => 'SF',
+        'SFLD' => 'SF',
+        'SFSX' => 'SF',
+        'SFSY' => 'SF',
+        'SFSYDF' => 'SF',
+        'SFSYQHD' => 'SF',
+        'SFTH' => 'SF',
+        'SFTHBJ' => 'SF',
+        'SFTHDF' => 'SF',
+        'SFTHDFBJ' => 'SF',
+        'SFTHQHD' => 'SF',
+        'SFTHZMJ' => 'SF',
+        'SFTHZMJDF' => 'SF',
+        'SHUNFENG' => 'OTHER',
+        'WPSFSY' => 'SF',
+        'WPZTO' => 'ZTO',
+        'WXWL' => 'OTHER',
+        'XJWL' => 'OTHER',
+        'XJWLDF' => 'OTHER',
+        'ZT' => 'OTHER',
+        'YCT' => 'OTHER',
+        'ZHUANGXIAN' => 'OTHER',
+        'CHANGTONG' => 'OTHER',
+        'YMDD' => 'OTHER',
+        'GUONENG' => 'OTHER',
+        'DUMMY' => 'OTHER',
+        'SANGSONG' => 'OTHER',
+        'JITU' => 'OTHER',
+        'JDKD' => 'OTHER',
+        'SXJD' => 'OTHER',
+        'EMS标准快递' => 'OTHER',
+        '圆通速递' => 'OTHER',
+        '京东快递' => 'OTHER',
+        '邮政快递包裹' => 'OTHER',
+        'SFGJBKDF' => 'SF',
+        '飞扬' => 'OTHER',
+        '测试承运商' => 'OTHER',
+        '货拉拉' => 'OTHER',
+        '运满满' => 'OTHER',
+        '马玉亮' => 'OTHER',
+        '其他' => 'OTHER',
+    ],
     //丰桥
     'SF' => [
         'url' =>  'https://bspsw.sf-express.com/sfexpressService',
@@ -31,4 +106,5 @@ return [
         'x-appKey' => '67af93a877a027581b775',
         'x-dataDigest' => 'c47eda396cc4d0739c45524a839f48c9',
     ],
+    'init_date' => '2020-12-17'
 ];