|
|
@@ -0,0 +1,95 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace bizGhs\order\classes;
|
|
|
+
|
|
|
+use bizGhs\base\classes\BaseClass;
|
|
|
+
|
|
|
+class OrderSendClass extends BaseClass
|
|
|
+{
|
|
|
+
|
|
|
+ public static $baseFile = '\bizGhs\order\models\OrderSend';
|
|
|
+
|
|
|
+ //流程id与名称
|
|
|
+ public static $actionId = ['placeOrder' => 10, 'deliver' => 30, 'reach' => 40];
|
|
|
+ public static $action = [
|
|
|
+ 10 => ['name' => '下单', 'sign' => 'placeOrder'],
|
|
|
+ 30 => ['name' => '发货', 'sign' => 'deliver'],
|
|
|
+ 40 => ['name' => '送达', 'sign' => 'reach']
|
|
|
+ ];
|
|
|
+
|
|
|
+ //下单操作完成 shish 2019.12.13
|
|
|
+ public static function placeOrder($data)
|
|
|
+ {
|
|
|
+ //下单完成
|
|
|
+ $orderId = $data['orderId'];
|
|
|
+ $payTime = $data['payTime'];
|
|
|
+ $actionId = self::$actionId;
|
|
|
+ $placeOrderId = $actionId['placeOrder'];
|
|
|
+ $time = time();
|
|
|
+ $data = ['actionId' => $placeOrderId, 'orderId' => $orderId, 'finishTime' => $payTime, 'addTime' => $time, 'inTurn' => $placeOrderId];
|
|
|
+ self::add($data);
|
|
|
+
|
|
|
+ OrderClass::updateById($orderId, ['currentFlow' => 1]);
|
|
|
+
|
|
|
+ //制单未开始
|
|
|
+ $printOrderId = $actionId['printOrder'];
|
|
|
+ $data = ['actionId' => $printOrderId, 'orderId' => $orderId, 'finishTime' => 0, 'addTime' => $time, 'inTurn' => $printOrderId];
|
|
|
+ self::add($data);
|
|
|
+ }
|
|
|
+
|
|
|
+ //当前待执行的动作 shish 2019.12.16
|
|
|
+ public static function toDoActionId($id)
|
|
|
+ {
|
|
|
+ $action = self::getByCondition(['orderId' => $id], false, 'inTurn DESC');
|
|
|
+ $actionId = 0;
|
|
|
+ if (empty($action['finishTime'])) {
|
|
|
+ $actionId = $action['actionId'];
|
|
|
+ }
|
|
|
+ return $actionId;
|
|
|
+ }
|
|
|
+
|
|
|
+ //免发货流程的处理 shish 2020.3.12
|
|
|
+ public static function withoutSend($order)
|
|
|
+ {
|
|
|
+ $id = $order['id'];
|
|
|
+ if ($order['status'] == OrderClass::ORDER_STATUS_COMPLETE) {
|
|
|
+ util::fail('订单已完成');
|
|
|
+ }
|
|
|
+ self::deleteByCondition(['orderId' => $id]);
|
|
|
+ //订单状态变更
|
|
|
+ OrderClass::updateById($id, ['sendType' => 1, 'totalFlow' => OrderClass::ORDER_TOTAL_FLOW, 'currentFlow' => OrderClass::ORDER_TOTAL_FLOW]);
|
|
|
+ OrderClass::complete($order, OrderClass::ORDER_TOTAL_FLOW);
|
|
|
+
|
|
|
+ //待发货订单-1,完成订单+1
|
|
|
+ $merchantId = $order['merchantId'];
|
|
|
+ $asset = MerchantAssetClass::getByMerchantId($merchantId, true);
|
|
|
+ $asset->finishOrder += 1;
|
|
|
+ $asset->unSendOrder -= 1;
|
|
|
+ $asset->save();
|
|
|
+
|
|
|
+ return OrderClass::ORDER_TOTAL_FLOW;
|
|
|
+ }
|
|
|
+
|
|
|
+ //送达 shish 2020.6.1
|
|
|
+ public static function reach($order)
|
|
|
+ {
|
|
|
+ $id = $order['id'];
|
|
|
+ //1 确认送达
|
|
|
+ $option = 1;
|
|
|
+ $time = time();
|
|
|
+ $actionIdList = self::$actionId;
|
|
|
+ $reachId = $actionIdList['reach'];
|
|
|
+ OrderSendClass::updateByCondition(['orderId' => $id, 'actionId' => $reachId], ['option' => $option, 'finishTime' => $time]);
|
|
|
+
|
|
|
+ $userId = $order['userId'];
|
|
|
+ $user = UserClass::getById($userId);
|
|
|
+ $merchantId = $order['merchantId'];
|
|
|
+ $merchant = MerchantClass::getById($merchantId);
|
|
|
+ //完成通知客户
|
|
|
+ InformUserClass::sendComplete($user, $order, $merchant);
|
|
|
+ //完成通知管理员
|
|
|
+ InformAdminClass::sendComplete($order);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|