shish 5 лет назад
Родитель
Сommit
ff565b9432

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

@@ -161,15 +161,15 @@ class NoticeController extends PublicController
         $orderSn = $postData['order_id'];
         $sign = $postData['signature']; //签名验证?没有
         //判断订单是否存在
-        $orderInfo = OrderClass::getByOrderSn($orderSn);
+        $orderInfo = OrderClass::getByOrderSn($orderSn, true);
         if (!$orderInfo) {
             Yii::warning("dada callback error: 订单不不存在: " . $orderSn);
             util::end();
         }
         $orderStatus = $postData['order_status'];
-        $orderSn = $orderInfo['orderSn'];
-        $sjId = $orderInfo['merchantId'] ?? 0;
-        $sendTime = $orderInfo['sendTime'];
+        $orderSn = $orderInfo->orderSn;
+        $sjId = $orderInfo->merchantId ?? 0;
+        $sendTime = $orderInfo->sendTime;
 
         switch ($orderStatus) {
             case DadaExpressServices::ORDER_WAIT_ACCEPT:
@@ -189,8 +189,6 @@ class NoticeController extends PublicController
                 break;
             case DadaExpressServices::ORDER_COMPLETE:
                 //订单完成 todo
-                OrderExpressClass::reach($orderInfo);
-                //OrderSendClass::reach($orderInfo);
                 OrderService::reach($orderInfo);
                 break;
             case DadaExpressServices::ORDER_CANCEL:

+ 2 - 2
app-ghs/controllers/OrderController.php

@@ -339,8 +339,8 @@ class OrderController extends BaseController
     {
         $get = Yii::$app->request->get();
         $id = isset($get['id']) ? $get['id'] : 0;
-        $info = OrderClass::getOrderInfo($id);
-        OrderClass::valid($info, $this->shopId);
+        $info = OrderClass::getById($id, true);
+        OrderClass::valid($info->attributes, $this->shopId);
         $connection = Yii::$app->db;
         $transaction = $connection->beginTransaction();
         try {

+ 0 - 33
app-ghs/controllers/OrderSendController.php

@@ -12,37 +12,4 @@ use common\components\util;
 class OrderSendController extends BaseController
 {
 
-    //发货 ssh 2019.12.16
-    public function actionDetail()
-    {
-        $id = Yii::$app->request->get('id', 0);
-        $order = OrderService::getById($id);
-        OrderService::valid($order, $this->shopId);
-        //发货列表
-        $list = OrderSendService::sendList($order);
-        util::success($list);
-    }
-
-    //发货 ssh 2019.12.17
-    public function actionDeliver()
-    {
-        $post = Yii::$app->request->post();
-        $id = isset($post['id']) ? $post['id'] : 0;
-        $order = OrderService::getById($id);
-        OrderService::valid($order, $this->shopId);
-        $post['merchantId'] = $this->sjId;
-        $post['orderSn'] = $order['orderSn'];
-        OrderSendService::deliver($post);
-    }
-
-    //送达 ssh 2019.12.17
-    public function actionReach()
-    {
-        $post = Yii::$app->request->post();
-        $id = isset($post['id']) ? $post['id'] : 0;
-        $order = OrderService::getById($id);
-        OrderService::valid($order, $this->shopId);
-        OrderSendService::reach($order);
-    }
-
 }

+ 6 - 10
biz-ghs/order/classes/OrderClass.php

@@ -150,9 +150,9 @@ class OrderClass extends BaseClass
     }
 
     //根据订单编号查询 ssh 2021.19
-    public static function getByOrderSn($orderSn)
+    public static function getByOrderSn($orderSn, $returnObj = false)
     {
-        return self::getByCondition(['orderSn' => $orderSn]);
+        return self::getByCondition(['orderSn' => $orderSn], $returnObj);
     }
 
     //订单列表 ssh 2021.1.19
@@ -450,21 +450,17 @@ class OrderClass extends BaseClass
     }
 
     //订单完成 ssh 2020.3.12
-    public static function complete($order, $shop, $currentFlow, $totalFlow = false, $sendType = false)
+    public static function complete($order, $shop)
     {
         $order->status = OrderClass::ORDER_STATUS_COMPLETE;
-        $order->currentFlow = $currentFlow;
-        if (isset($totalFlow)) {
-            $order->totalFlow = $totalFlow;
-        }
-        if (isset($sendType)) {
-            $order->sendType = $sendType;
-        }
+        $order->currentFlow = self::TOTAL_FLOW;
+        $order->totalFlow = self::TOTAL_FLOW;
         $order->save();
 
         $shop->finishOrder += 1;
         $shop->sendingOrder -= 1;
         $shop->save();
+        return $order;
     }
 
     //修改订单表的配送信息 linqh 2021.3.28

+ 12 - 21
biz-ghs/order/classes/OrderExpressClass.php

@@ -16,11 +16,12 @@ class OrderExpressClass extends BaseClass
     public static $baseFile = '\bizGhs\order\models\OrderExpress';
 
     public static $statusMap = [
-        self::STATUS_INIT=>'待接单',
-        self::STATUS_RECEIVE=>'已接单',
-        self::STATUS_COMPLETE=>'已完成',
-        self::STATUS_CANCEL=>'取消',
+        self::STATUS_INIT => '待接单',
+        self::STATUS_RECEIVE => '已接单',
+        self::STATUS_COMPLETE => '已完成',
+        self::STATUS_CANCEL => '取消',
     ];
+
     //获取配送进展
     public static function getProgress($showExpress, $order)
     {
@@ -32,7 +33,7 @@ class OrderExpressClass extends BaseClass
         }
         $res = DadaExpressServices::statusOrder($order['orderSn']);
         return [
-            'progressName' => $res['statusMsg']??'',
+            'progressName' => $res['statusMsg'] ?? '',
         ];
     }
 
@@ -53,26 +54,16 @@ class OrderExpressClass extends BaseClass
     }
 
     //已取货
-    public static function pickUp($order,$dmName,$dmMobile)
-    {
-        $orderSn = $order['orderSn'];
-        $data = [
-            'dmName'=>$dmName,
-            'dmMobile'=>$dmMobile,
-        ];
-        return self::updateByCondition(['orderSn'=>$orderSn],$data);
-    }
-
-    //配送完成
-    public static function reach($order)
+    public static function pickUp($order, $dmName, $dmMobile)
     {
-        self::updateExpressStatus($order['orderSn'],OrderExpressClass::STATUS_COMPLETE);
-        return true;
+        $order->dmName = $dmName;
+        $order->dmMobile = $dmMobile;
+        return $order->save();
     }
 
     //修改快递状态
-    public static function updateExpressStatus($orderSn,$status)
+    public static function updateExpressStatus($orderSn, $status)
     {
-        return self::updateByCondition(['orderSn'=>$orderSn],['status'=>$status]);
+        return self::updateByCondition(['orderSn' => $orderSn], ['status' => $status]);
     }
 }

+ 0 - 158
biz-ghs/order/services/OrderSendService.php

@@ -2,169 +2,11 @@
 
 namespace bizGhs\order\services;
 
-use biz\shop\models\Shop;
 use bizGhs\base\services\BaseService;
-use bizGhs\order\classes\OrderClass;
-use bizGhs\order\classes\OrderExpressClass;
-use bizGhs\order\classes\OrderSendClass;
-use common\components\util;
 
 class OrderSendService extends BaseService
 {
 
     public static $baseFile = '\bizGhs\order\classes\OrderSendClass';
 
-
-    //制单 ssh 2019.12.17
-    public static function printOrder($data)
-    {
-        $id = $data['id'];
-        $orderSn = $data['orderSn'];
-        $option = $data['option'];
-        $actionRelation = OrderSendClass::ACTION_RELATION;
-        $printOrderId = $actionRelation['printOrder'];
-        $currentId = OrderSendClass::toDoActionId($orderSn);
-        if ($printOrderId != $currentId) {
-            util::fail('当前流程无法操作');
-        }
-        //1有配送单 2 填单制单
-        if (in_array($option, [1, 2]) == false) {
-            util::fail('操作无效');
-        }
-        $time = time();
-        OrderSendClass::updateByCondition(['orderId' => $id, 'actionId' => $printOrderId], ['option' => $option, 'finishTime' => $time]);
-        $hasDeliver = 0;
-        if ($option == 1) {
-            //有纸质配送单
-            $hasDeliver = 1;
-        }
-        if ($option == 2) {
-            //填单制单
-            $hasDeliver = 2;
-        }
-        OrderClass::updateById($id, ['status' => OrderClass::ORDER_STATUS_UN_SEND, 'currentFlow' => 2, 'printStatus' => 1, 'hasDeliver' => $hasDeliver]);
-
-        //显示发货流程
-        $deliverId = $actionRelation['deliver'];
-        $data = ['actionId' => $deliverId, 'orderId' => $id, 'finishTime' => 0, 'addTime' => $time, 'inTurn' => $deliverId, 'orderSn' => $orderSn];
-        OrderSendClass::add($data);
-        $actionList = OrderSendClass::ACTION_LIST;
-        $data['actionSign'] = isset($actionList[$deliverId]['sign']) ? $actionList[$deliverId]['sign'] : '';
-        util::success(['nextAction' => $data]);
-    }
-
-    //发货 ssh 2019.12.17
-    public static function deliver($data)
-    {
-        $id = $data['id'];
-        $orderSn = $data['orderSn'];
-        $option = $data['option'];
-        $actionRelation = OrderSendClass::ACTION_RELATION;
-        $deliverId = $actionRelation['deliver'];
-        $currentId = OrderSendClass::toDoActionId($orderSn);
-        if ($deliverId != $currentId) {
-            util::fail('当前流程无法操作');
-        }
-        $time = time();
-        $sendType = isset($data['sendType']) ? $data['sendType'] : OrderClass::SEND_TYPE_UNKNOWN;
-        $sendInfo = [];
-        if ($sendType == OrderClass::SEND_TYPE_THIRD) {
-            util::fail('即将开通...');
-            $side = $data['expressId'];
-            $sendTime = strtotime(date("Y-m-d") . ' ' . $data['sendTime']);
-            if ($sendTime < ($time + 20 * 60)) {
-                util::fail('请选择20分钟之后的时间');
-            }
-            $sendInfo = [
-                'sideId' => $side,
-                'sendTime' => $sendTime,
-                'addTime' => $time,
-                'sendTip' => 0,
-                'merchantId' => $data['merchantId'],
-                'orderId' => $id,
-                'cost' => 6,
-                'tip' => 0,
-                'distance' => 7,
-                'sendTime' => $sendTime,
-                'side' => $side,
-            ];
-            OrderExpressClass::add($sendInfo);
-        }
-
-        OrderSendClass::updateByCondition(['orderId' => $id, 'actionId' => $deliverId], ['option' => $option, 'finishTime' => $time]);
-        OrderClass::updateById($id, ['status' => OrderClass::ORDER_STATUS_SENDING, 'currentFlow' => 3, 'sendType' => $sendType]);
-
-        //待发货订单-1,配送中订单+1
-        $shopId = $data['shopId'];
-        $shop = Shop::findBySql('select * from ' . Shop::tableName() . ' where id = :id for update', ['id' => $shopId])->one();
-        if (empty($shop)) {
-            util::fail('没有找到门店');
-        }
-        $shop->unSendOrder -= 1;
-        $shop->sendingOrder += 1;
-        $shop->save();
-
-        //显示送达流程
-        $reachId = $actionRelation['reach'];
-        $data = ['actionId' => $reachId, 'orderId' => $id, 'finishTime' => 0, 'addTime' => $time, 'inTurn' => $reachId, 'orderSn' => $orderSn];
-        OrderSendClass::add($data);
-        $actionList = OrderSendClass::ACTION_LIST;
-        $data['actionSign'] = isset($actionList[$reachId]['sign']) ? $actionList[$reachId]['sign'] : '';
-        util::success(['nextAction' => $data, 'sendInfo' => $sendInfo]);
-    }
-
-    //送达 ssh 2019.12.17
-    public static function reach($order)
-    {
-        $orderSn = $order['orderSn'];
-        $actionRelation = OrderSendClass::ACTION_RELATION;
-        $reachId = $actionRelation['reach'];
-        $currentId = OrderSendClass::toDoActionId($orderSn);
-        if ($reachId != $currentId) {
-            util::fail('当前流程无法操作');
-        }
-        OrderSendClass::reach($order);
-
-        //送达,订单完成。【现在有三个地方有订单完成操作】
-        $id = $order['id'];
-        $currentOrder = self::getById($id, true);
-        $shopId = $order['shopId'] ?? 0;
-        $shop = Shop::findBySql('select * from ' . Shop::tableName() . ' where id = :id for update', ['id' => $shopId])->one();
-        if (empty($shop)) {
-            util::fail('没有找到门店');
-        }
-        OrderClass::complete($currentOrder, $shop, OrderClass::TOTAL_FLOW);
-    }
-
-    //发货详情 ssh 2019.12.15
-    public static function sendList($order)
-    {
-        $orderId = $order['id'];
-        $orderSn = $order['orderSn'];
-        $list = OrderSendClass::getAllByCondition(['orderSn' => $orderSn], 'inTurn DESC', '*');
-        if (empty($list)) {
-            return [];
-        }
-        $actionList = OrderSendClass::ACTION_LIST;
-        $actionRelation = OrderSendClass::ACTION_RELATION;
-        foreach ($list as $key => $val) {
-            $currentId = $val['actionId'];
-            $list[$key]['actionName'] = $actionList[$currentId]['name'] ?? '';
-            $list[$key]['actionSign'] = $actionList[$currentId]['sign'] ?? '';
-
-            //发货需要显示的信息
-            if ($currentId == $actionRelation['deliver']) {
-                $list[$key]['sendInfo'] = [];
-                if ($order['sendType'] == OrderClass::SEND_TYPE_THIRD) {
-                    $list[$key]['sendInfo'] = OrderExpressClass::getExpress($orderId);
-                }
-            }
-            //送达需要显示的信息
-            if ($currentId == $actionRelation['reach']) {
-
-            }
-        }
-        return $list;
-    }
-
 }

+ 32 - 7
biz-ghs/order/services/OrderService.php

@@ -9,6 +9,7 @@ use bizGhs\base\services\BaseService;
 use bizGhs\custom\classes\CustomClass;
 use bizGhs\custom\models\Custom;
 use bizGhs\order\classes\OrderClass;
+use bizGhs\order\classes\OrderExpressClass;
 use bizGhs\order\classes\OrderSendClass;
 use bizGhs\stat\classes\StatYjClass;
 use bizHd\stat\classes\StatIncomeClass;
@@ -85,7 +86,6 @@ class OrderService extends BaseService
     //自取免发货流程处理 ssh 2021.1.24
     public static function withoutSend($order)
     {
-        $id = $order->id ?? 0;
         if (isset($order->status) == false) {
             util::fail('没有订单状态');
         }
@@ -94,7 +94,6 @@ class OrderService extends BaseService
         }
 
         //自取订单,订单直接完成。【现在有三个地方有订单完成操作】
-        $currentOrder = self::getById($id, true);
         $shopId = $order->shopId ?? 0;
         $shop = Shop::findBySql('select * from ' . Shop::tableName() . ' where id = :id for update', ['id' => $shopId])->one();
         if (empty($shop)) {
@@ -104,7 +103,8 @@ class OrderService extends BaseService
         $shop->sendingOrder += 1;
         $shop->save();
 
-        OrderClass::complete($currentOrder, $shop, self::TOTAL_FLOW, OrderClass::TOTAL_FLOW, self::SEND_TYPE_NO);
+        //订单完成
+        self::finish($order, $shop);
 
         OrderSendClass::withoutSend($order);
 
@@ -114,15 +114,40 @@ class OrderService extends BaseService
     //确认送达 ssh 2021.3.4
     public static function reach($order)
     {
-        if ($order['status'] != OrderClass::ORDER_STATUS_SENDING) {
+        if ($order->status != OrderClass::ORDER_STATUS_SENDING) {
             util::fail('订单没有在配送状态');
         }
-        $id = $order['id'];
-        //送达订单完成。【现在有三个地方有订单完成操作】
-        OrderClass::updateById($id, ['status' => OrderClass::ORDER_STATUS_COMPLETE, 'totalFlow' => OrderClass::TOTAL_FLOW, 'currentFlow' => OrderClass::TOTAL_FLOW]);
+        //第三方配送的变更第三方订单状态
+        if (isset($order->sendType) && $order->sendType == OrderClass::SEND_TYPE_THIRD) {
+            $express = OrderExpressClass::getByCondition(['orderSn' => $order->orderSn], true);
+            if (!empty($express)) {
+                $express->status = OrderExpressClass::STATUS_COMPLETE;
+                $express->save();
+            }
+        }
+        $shopId = $order->shopId ?? 0;
+        $shop = Shop::findBySql('select * from ' . Shop::tableName() . ' where id = :id for update', ['id' => $shopId])->one();
+        if (empty($shop)) {
+            util::fail('没有找到门店');
+        }
+
+        //订单完成
+        self::finish($order, $shop);
+
         OrderSendClass::reach($order);
     }
 
+    //订单完成
+    public static function finish($order, $shop, $sendType)
+    {
+        //销售单完成
+        $order = OrderClass::complete($order, $shop, $sendType);
+        //采购单完成
+        $purchaseId = $order->purchaseId ?? 0;
+        $purchase = PurchaseClass::getById($purchaseId, true);
+        PurchaseClass::complete($purchase);
+    }
+
     //获取订单信息 ssh 2019.11.28
     public static function getOrderList($where)
     {

+ 15 - 0
biz-hd/purchase/classes/PurchaseClass.php

@@ -267,4 +267,19 @@ class PurchaseClass extends BaseClass
 
     }
 
+    //采购单完成 shish 2021.5.15
+    public static function complete($purchase)
+    {
+        $purchase->status = self::STATUS_COMPLETE;
+        $purchase->save();
+
+        /********订单完成后加库存 linqh 2021-05-10*********/
+        $orderSn = $purchase->orderSn;
+        $purchaseItem = PurchaseItemClass::getAllByCondition(['orderSn' => $orderSn], null, "*");
+        foreach ($purchaseItem as $v) {
+            ProductClass::addStockByItemNum($v['productId'], $v['itemNum']);
+        }
+
+    }
+
 }