Bläddra i källkod

达达 配送业务逻辑

林琦海 5 år sedan
förälder
incheckning
25d609d2ce

+ 12 - 4
app-ghs/controllers/NoticeController.php

@@ -4,6 +4,8 @@ namespace ghs\controllers;
 
 use bizGhs\express\services\DadaExpressServices;
 use bizGhs\order\classes\OrderClass;
+use bizGhs\order\classes\OrderExpressClass;
+use bizGhs\order\classes\OrderSendClass;
 use Yii;
 use common\components\util;
 use common\services\xhPayToolService;
@@ -170,9 +172,14 @@ class NoticeController extends PublicController
             util::end();
         }
         $orderStatus = $postData['order_status'];
+        $orderSn = $orderInfo['orderSn'];
+        $sjId = $orderInfo['merchantId'] ?? 0;
+        $sendTime = $orderInfo['$orderInfo'];
+
         switch ($orderStatus){
             case DadaExpressServices::ORDER_WAIT_ACCEPT:
                 //待接单, 即下单成功: 处理相应的业务逻辑(订单状态变更,消息通知?)
+
                 break;
             case DadaExpressServices::ORDER_WAIT_PICKUP:
                 //待收货 todo
@@ -180,16 +187,17 @@ class NoticeController extends PublicController
                 break;
             case DadaExpressServices::ORDER_SENDING:
                 //配送中 todo
-
+                OrderExpressClass::updateExpressStatus($orderSn,OrderExpressClass::STATUS_RECEIVE);
                 break;
             case DadaExpressServices::ORDER_COMPLETE:
                 //订单完成 todo
-
+                OrderExpressClass::updateExpressStatus($orderSn,OrderExpressClass::STATUS_COMPLETE);
+                OrderSendClass::reach($orderInfo);
                 break;
             case DadaExpressServices::ORDER_CANCEL:
                 //取消 todo
                 $cancel_reason =  $postData['cancel_reason']; //取消理由
-
+                OrderExpressClass::updateExpressStatus($orderSn,OrderExpressClass::STATUS_CANCEL);
                 break;
             case DadaExpressServices::ORDER_WAIT_DISPATCH:
                 //指派单 todo
@@ -207,7 +215,7 @@ class NoticeController extends PublicController
                 break;
             case DadaExpressServices::ORDER_FAIL:
                 //失败 todo
-
+                OrderExpressClass::updateExpressStatus($orderSn,OrderExpressClass::STATUS_CANCEL);
                 break;
             default:
 

+ 21 - 13
biz-ghs/order/classes/OrderClass.php

@@ -5,6 +5,7 @@ namespace bizGhs\order\classes;
 use biz\express\classes\ExpressClass;
 use biz\shop\classes\ShopClass;
 use biz\sj\classes\MerchantClass;
+use bizGhs\express\services\DadaExpressServices;
 use bizGhs\product\classes\ProductClass;
 use biz\sj\classes\MerchantAssetClass;
 use bizGhs\admin\classes\AdminClass;
@@ -353,37 +354,44 @@ class OrderClass extends BaseClass
         if (!empty($express)) {
             util::fail('已经发过了');
         }
+
+        //达达
+        $dadaRes = DadaExpressServices::addOrder($order);
+
+
         $orderSn = $order['orderSn'];
-        $expressId = $expressInfo['expressId'] ?? 0;
-        $getInfo = ExpressClass::getExpressInfo($expressId);
-        $expressName = $getInfo['deliveryName'] ?? '';
         $sjId = $order['merchantId'] ?? 0;
+        $expressId = $expressInfo['expressId'] ?? 1;
+        $expressName = $expressInfo['deliveryName'] ?? '达达';
+
+        /*
+        $getInfo = ExpressClass::getExpressInfo($expressId);
         $hour = $expressInfo['sendTime'] ?? '12:00';
         $sendCost = 12;
         $distance = 5;
-        $status = 1;
+
         $sendTime = strtotime(date("Y-m-d ") . $hour);
+        OrderSendClass::thirdSend($order);
+          */
         $expData = [
             'orderId' => $id,
             'orderSn' => $orderSn,
             'sjId' => $sjId,
             'expressId' => $expressId,
-            'sendTime' => $sendTime,
-            'cost' => $sendCost,
-            'distance' => $distance,
-            'status' => $status,
+            'sendTime' => strtotime($order['sendTime']),
+            'cost' => $dadaRes['free'],
+            'distance' => $dadaRes['distance'],
+            'status' => 1,
             'expressName' => $expressName,
         ];
         OrderExpressClass::addExpress($expData);
-
         OrderSendClass::thirdSend($order);
-
         $respond = [
             'expressName' => $expressName,
             'expressId' => $expressId,
-            'distance' => $distance,
-            'cost' => $sendCost,
-            'status' => $status,
+            'distance' => $dadaRes['distance'],
+            'cost' => $dadaRes['free'],
+            'status' => 2,
             'tip' => 0,
         ];
         return $respond;

+ 10 - 1
biz-ghs/order/classes/OrderExpressClass.php

@@ -8,6 +8,10 @@ use bizGhs\base\classes\BaseClass;
 class OrderExpressClass extends BaseClass
 {
 
+    const STATUS_INIT = 1; //1待接单
+    const STATUS_RECEIVE = 2; //2已接单
+    const STATUS_COMPLETE = 3; //已完成
+    const STATUS_CANCEL = 4; //取消
     public static $baseFile = '\bizGhs\order\models\OrderExpress';
 
     //获取配送进展
@@ -40,4 +44,9 @@ class OrderExpressClass extends BaseClass
         return self::add($expData);
     }
 
-}
+    //修改快递状态
+    public static function updateExpressStatus($orderSn,$status)
+    {
+        return self::updateByCondition(['orderSn'=>$orderSn],['status'=>$status]);
+    }
+}

+ 2 - 2
common/components/dict.php

@@ -13,8 +13,8 @@ class dict
             [
 
                 "id" => 1,
-                "deliveryId" => "TEST",
-                "deliveryName" => "沙盒测试"
+                "deliveryId" => "dada",
+                "deliveryName" => "达达"
             ]
         ],