10, 'printOrder' => 20, 'deliver' => 30, 'reach' => 40]; public static $action = [ 10 => ['name' => '下单', 'sign' => 'placeOrder'], 20 => ['name' => '制单', 'sign' => 'printOrder',], 30 => ['name' => '发货', 'sign' => 'deliver'], 40 => ['name' => '送达', 'sign' => 'reach'] ]; //下单完成,开始制单 ssh 2019.12.13 public static function placeOrder($data) { //下单完成 $orderId = $data['orderId']; $payTime = $data['payTime']; $actionId = self::$actionId; $placeOrderId = $actionId['placeOrder']; $orderSn = $data['orderSn'] ?? ''; $time = time(); $data = ['actionId' => $placeOrderId, 'orderId' => $orderId, 'orderSn' => $orderSn, 'finishTime' => $payTime, 'addTime' => $time, 'inTurn' => $placeOrderId]; self::add($data); OrderClass::updateById($orderId, ['currentFlow' => 1]); //制单开始 $printOrderId = $actionId['printOrder']; $data = ['actionId' => $printOrderId, 'orderId' => $orderId, 'orderSn' => $orderSn, 'finishTime' => 0, 'addTime' => $time, 'inTurn' => $printOrderId]; self::add($data); } //当前待执行的动作 ssh 2019.12.16 public static function toDoActionId($orderSn) { $action = self::getByCondition(['orderSn' => $orderSn], false, 'inTurn DESC'); if (empty($action)) { util::fail('没有找到当前待执行的流程'); } $actionId = 0; if (empty($action['finishTime'])) { $actionId = $action['actionId']; } return $actionId; } //免发货流程的处理 ssh 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, 'status' => OrderClass::ORDER_STATUS_COMPLETE, 'totalFlow' => OrderClass::ORDER_TOTAL_FLOW, 'currentFlow' => OrderClass::ORDER_TOTAL_FLOW]); //待发货订单-1,完成订单+1 $shopId = $order['shopId']; $shop = Shop::findBySql('select * from ' . Shop::tableName() . ' where id = :id for update', ['id' => $shopId])->one(); $shop->finishOrder += 1; $shop->unSendOrder -= 1; $shop->save(); return OrderClass::ORDER_TOTAL_FLOW; } //送达 ssh 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]); // $customId = $order['customId']; // $customInfo = []; // $sjId = $order['sjId']; // $merchant = MerchantClass::getById($sjId); // //完成通知客户 // InformUserClass::sendComplete($customInfo, $order, $merchant); //完成通知管理员 //InformAdminClass::sendComplete($order); } }