wesmiler 2 months ago
parent
commit
0cac7601bb
3 changed files with 43 additions and 26 deletions
  1. 1 1
      app/Models/OrderModel.php
  2. 40 23
      app/Services/Common/OrderService.php
  3. 2 2
      app/Services/MpService.php

+ 1 - 1
app/Models/OrderModel.php

@@ -41,7 +41,7 @@ class OrderModel extends BaseModel
     public function user()
     {
         return $this->hasOne(MemberModel::class, 'id', 'user_id')
-            ->select(['id', 'mobile', 'nickname','balance', 'realname', 'status']);
+            ->select(['id','openid', 'mobile', 'nickname','balance', 'realname', 'status']);
     }
 
     /**

+ 40 - 23
app/Services/Common/OrderService.php

@@ -489,7 +489,14 @@ class OrderService extends BaseService
             return ['code' => 1, 'msg' => '参数错误'];
         }
 
-        $order = $this->model->find($id);
+        // 发货方式
+        $deliveryType = \App\Services\ConfigService::make()->getConfigByCode('delivery_type',1);
+        $order = $this->model->with(['user','orderGoods'])->find($id);
+        $orderGoods = isset($order['orderGoods'])?$order['orderGoods'] : [];
+        $goodsName = isset($orderGoods[0]['goods_name'])?$orderGoods[0]['goods_name']:'订单商品';
+        $userInfo = isset($order['user'])?$order['user'] : [];
+        $openid = isset($userInfo['openid'])?$userInfo['openid'] : '';
+        $mobile = isset($userInfo['mobile'])?$userInfo['mobile'] : '';
         if (!$order) {
             return ['code' => 1, 'msg' => '订单不存在'];
         }
@@ -517,36 +524,46 @@ class OrderService extends BaseService
         }
 
         // 调用小程序发货信息同步接口
-        $sendData = [
-            'order_key' => [
-                "order_number_type" => 2,
-                "transaction_id" => isset($order['transaction_id']) ? $order['transaction_id'] : '',
-                "out_trade_no" => isset($order['out_trade_no']) ? $order['out_trade_no'] : ''
-            ],
-            "delivery_mode" => 1,
-            "logistics_type" => 1,
-            "shipping_list" => [
-                [
-                    "tracking_no" => $deliveryNo,
-                    "express_company" => "STO",
-                    "item_desc" => "微信气泡狗集线器*1",
-                    "contact" => [
-                        "consignor_contact" => "+86-177****1234"
+        $msg = '发货成功';
+        if($deliveryType == 1 && $openid){
+            $sendData = [
+                'order_key' => [
+                    "order_number_type" => 2,
+                    "transaction_id" => isset($order['transaction_id']) ? $order['transaction_id'] : '',
+                    "out_trade_no" => isset($order['out_trade_no']) ? $order['out_trade_no'] : ''
+                ],
+                "delivery_mode" => 1,
+                "logistics_type" => 1,
+                "shipping_list" => [
+                    [
+                        "tracking_no" => $deliveryNo,
+                        "express_company" => $deliveryCompany,
+                        "item_desc" => $goodsName,
+                        "contact" => [
+                            "consignor_contact" => isset($order['receiver_mobile']) ? $order['receiver_mobile'] : $mobile
+                        ]
                     ]
+                ],
+                "upload_time" => date('Y-m-d H:i:s'),
+                "payer" => [
+                    "openid" => $openid
                 ]
-            ],
-            "upload_time" => "2022-12-15T13:29:35.120+08:00",
-            "payer" => [
-                "openid" => "ogqztkPsejM9MQAFfwCQSCi4oNg3"
-            ]
-        ];
+            ];
 
+            $result = MpService::make()->requestApi('deliverySend',$sendData);
+            $errcode = isset($result['errcode'])?$result['errcode'] : -1;
+            $errmsg = isset($result['errmsg']) && $result['errmsg']?$result['errmsg'] : '请求失败';
+            if($errcode == -1){
+                $msg = '发货成功,但上传发货信息到小程序失败:'.$errmsg;
+            }
+            var_dump($result);
+        }
 
         if ($result) {
             ActionLogModel::setTitle("订单发货");
             ActionLogModel::record();
             RedisService::keyDel("caches:orders:*");
-            return ['code' => 0, 'msg' => '发货成功'];
+            return ['code' => 0, 'msg' => $msg];
         }
 
         return ['code' => 1, 'msg' => '操作失败'];

+ 2 - 2
app/Services/MpService.php

@@ -39,8 +39,8 @@ class MpService extends BaseService
         'getPhoneNumber'=>'https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=%s',
         // 获取快递公司列表
         'getDelivery'=>'https://api.weixin.qq.com/product/delivery/get_company_list?access_token=%s',
-        // 同步发货状态
-        'deliverySend'=>'https://api.weixin.qq.com/product/delivery/send?access_token=%s',
+        // 上传发货信息,同步发货状态
+        'deliverySend'=>'https://api.weixin.qq.com/wxa/sec/order/upload_shipping_info?access_token=%s',
     ];