Ver Fonte

运费计算

林琦海 há 5 anos atrás
pai
commit
0a126b7454

+ 43 - 1
app-ghs/controllers/OrderController.php

@@ -3,6 +3,7 @@
 namespace ghs\controllers;
 
 use biz\sj\services\MerchantExtendService;
+use bizGhs\express\services\DadaExpressServices;
 use bizHd\wx\classes\WxOpenClass;
 use bizGhs\admin\classes\AdminClass;
 use bizGhs\custom\classes\CustomClass;
@@ -246,7 +247,48 @@ class OrderController extends BaseController
     //运费计算 shish 2021.1.24
     public function actionFreight()
     {
-        util::success(['sedCost' => 20]);
+        //2021.3.28 接入达达
+        $get = Yii::$app->request->get();
+        $orderId = $get['id']??0; //订单ID
+        $customId = $get['customId']??0;
+        $province = $get['province']??'';
+        $city = $get['city']??'';
+        $address = $get['address']??'';
+        $floor = $get['floor']??'';
+        $fullAddress = $province.$city.$address.$floor;
+        $sendTime = $get['sendTime']??'';
+        $lat = $get['lat']??'';
+        $lng = $get['long']??'';
+        if(empty($lat) || empty($lng) || empty($fullAddress)) {
+            util::fail('请选择配送地址');
+        }
+        if(!empty($sendTime)){
+            //配送时间不为空
+            // 预约发单时间(预约时间unix时间戳(10位),精确到分;整分钟为间隔,并且需要至少提前5分钟预约
+            $sendTimeInt = strtotime($sendTime);
+            $now = time();
+            $diff = $sendTimeInt - $now;
+            //因服务器写入时间,改为至少提前6分钟
+            if($diff <= 360){
+                util::fail('配送时间至少提前6分钟');
+            }
+        }
+        //更新订单表
+        $info = OrderClass::getOrderInfo($orderId);
+        OrderClass::valid($info, $this->shopId);
+        $expressAddInfo = [
+            'province'=>$province,
+            'city'=>$city,
+            'address'=>$address,
+            'floor'=>$floor,
+            'lat'=>$lat,
+            'long'=>$lng,
+            'sendTime'=>date('Y-m-d H:i', strtotime($sendTime)),
+        ];
+        OrderClass::updateCustomExpressInfo($orderId,$expressAddInfo);
+        //计算运费
+        $res = DadaExpressServices::queryDeliverFee($info);
+        util::success(['sedCost' => $res['fee']]);
     }
 
     //发快递和第三方配送 shish 2021.1.24

+ 3 - 1
biz-ghs/express/services/DadaExpressServices.php

@@ -129,8 +129,10 @@ class DadaExpressServices
             'cargo_type'=>3, //类型:鲜花
             'cargo_num'=>(int)$orderInfo['bigNum'],
             'origin_mark_no'=>'#销花宝#',
-            'delay_publish_time'=>strtotime($orderInfo['sendTime']),
         ];
+        if($orderInfo['sendTime'] != '0000-00-00 00:00:00'){
+            $params['delay_publish_time']=strtotime($orderInfo['sendTime']);
+        }
         return $params;
 
     }

+ 16 - 1
biz-ghs/order/classes/OrderClass.php

@@ -501,4 +501,19 @@ class OrderClass extends BaseClass
         OrderSendClass::placeOrder($placeData);
     }
 
-}
+    //修改订单表的配送信息 linqh 2021.3.28
+    public static function updateCustomExpressInfo($id,$expressAddInfo)
+    {
+        $data = [
+            'province'=>$expressAddInfo['province'],
+            'city'=>$expressAddInfo['city'],
+            'address'=>$expressAddInfo['address'],
+            'floor'=>$expressAddInfo['floor'],
+            'fullAddress'=>$expressAddInfo['province'].$expressAddInfo['city'].$expressAddInfo['address'].$expressAddInfo['floor'],
+            'lat'=>$expressAddInfo['lat'],
+            'long'=>$expressAddInfo['long'],
+            'sendTime'=>$expressAddInfo['sendTime'],
+        ];
+        return self::updateById($id,$data);
+    }
+}