wesmiler 3 週間 前
コミット
9620b0a138
1 ファイル変更51 行追加1 行削除
  1. 51 1
      app/Services/Common/OrderService.php

+ 51 - 1
app/Services/Common/OrderService.php

@@ -22,6 +22,7 @@ use App\Models\PayOrdersModel;
 use App\Models\StoreModel;
 use App\Services\Api\SettleService;
 use App\Services\BaseService;
+use App\Services\Kd100Service;
 use App\Services\RedisService;
 use Illuminate\Support\Facades\DB;
 
@@ -148,7 +149,7 @@ class OrderService extends BaseService
         $info = $info->toArray();
         $info['create_time'] = $info['create_time'] ? date('Y-m-d H:i:s', strtotime($info['create_time'])) : '';
         $info['update_time'] = $info['update_time'] ? date('Y-m-d H:i:s', strtotime($info['update_time'])) : '';
-
+        $info['deliveryData'] = $this->getDelivery($info);
         if (isset($info['order_goods'])) {
             foreach ($info['order_goods'] as &$goods) {
                 $goods['thumb'] = $goods['thumb'] ? get_image_url($goods['thumb']) : '';
@@ -222,6 +223,55 @@ class OrderService extends BaseService
     }
 
     /**
+     * 物流查询
+     * @param $id
+     * @return array|false|mixed
+     */
+    public function getDelivery($info)
+    {
+        $id = isset($info['id']) ? $info['id'] : 0;
+        $deliveryNo = isset($info['delivery_no']) ? $info['delivery_no'] : '';
+        $deliveryCode = isset($info['delivery_code']) ? $info['delivery_code'] : '';
+        $mobile = isset($info['receiver_mobile']) ? $info['receiver_mobile'] : '';
+        $receiverArea = isset($info['receiver_area']) && $info['receiver_area']? $info['receiver_area'] : '';
+        if (empty($info)) {
+            $this->error = '请选择订单';
+            return false;
+        }
+
+        $cacheKey = "caches:kd100:order_{$id}";
+        $data = RedisService::get($cacheKey);
+        if ($data) {
+            return $data;
+        }
+        $result = Kd100Service::make()->query($deliveryNo, $mobile, $deliveryCode,$receiverArea);
+        RedisService::set($cacheKey.'_result', $result, 300);
+        $status = isset($result['status'])?$result['status']:0;
+        $data = isset($result['data'])?$result['data']:[];
+        $courierInfo = isset($result['courierInfo'])?$result['courierInfo']:[];
+        $arrivalTime = isset($result['arrivalTime'])?$result['arrivalTime']:'';
+        $predictedRoute = isset($result['predictedRoute'])?$result['predictedRoute']:[];
+        $predictedData = $predictedRoute?end($predictedRoute):[];
+        $arrivalData = [];
+        if($arrivalTime){
+            $arrivalData['arrivalTime'] =  dayFormat(strtotime($arrivalTime.':00:00'));
+            $arrivalData['predictedData'] =  $predictedData;
+        }
+
+        if($courierInfo && $courierInfo['deliveryManPhone']){
+            $courierInfo['deliveryManPhone'] = explode(',', $courierInfo['deliveryManPhone']);
+            $courierInfo['deliveryPhone'] = $courierInfo['deliveryManPhone'][1]?$courierInfo['deliveryManPhone'][1]:$courierInfo['deliveryManPhone'][0];
+        }
+
+        if ($data && $status==200) {
+            RedisService::set($cacheKey, ['info'=>$courierInfo,'arrivalData'=>$arrivalData,'list'=>$data], 1200);
+        }
+
+        return $data?['info'=>$courierInfo,'arrivalData'=>$arrivalData,'list'=>$data]:[];
+
+    }
+
+    /**
      * 按日期统计订单数
      * @param string $beginAt 开始时间
      * @param string $endAt 结束时间