order_id) { return [ 'code' => 1, 'msg' => '数据错误,请刷新后重试' ]; } $order = Order::findOne(['id' => $this->order_id]); if (!$order) { return [ 'code' => 1, 'msg' => '订单不存在,请刷新后重试' ]; } if ($order->is_pay == 0 && $order->pay_type != 2) { return [ 'code' => 1, 'msg' => '订单未支付' ]; } $this->order = $order; return $this->order(); } // 商城订单核销 private function order() { $t = \Yii::$app->db->beginTransaction(); try { $orderClass = $this->order_model; $order = $this->order; //如果订单已经取消 if ($order->apply_delete == Order::ORDER_APPLY_DELETE || $order->trade_status == Order::ORDER_FLOW_CANCEL) { return [ 'code' => 1, 'msg' => '订单已取消或申请取消中,不可核销' ]; } if ($order->pay_type == 2) { $order->is_pay = 1; $order->pay_time = time(); } $order->send_time = time(); $order->confirm_time = time(); $order->trade_status = Order::ORDER_FLOW_CONFIRM; $mp_profit = MdProfit::findOne(['order_id' => $order->id]); if ((int)$order->md_id > 0 && $mp_profit) { $md = Md::findOne($order->md_id); $md_staff = MdStaff::findOne(['md_id' => $order->md_id, 'is_manager' => 1, 'is_delete' => 0, 'store_id' => get_store_id()]); if (!$md_staff) { return [ 'code' => 1, 'msg' => '当前无可操作权限,请先配置店长' ]; } if ($md_staff->is_disable) { return [ 'code' => 1, 'msg' => '核销权限已被禁用' ]; } if ($mp_profit->is_clerk == 1 && $mp_profit->is_send == 0) { $mp_profit->is_send = 1; $mp_profit->clerk_id = $md_staff->id; $mp_profit->updated_at = time(); if (!$mp_profit->save()) { $t->rollBack(); return [ 'code' => 1, 'msg' => $mp_profit->errors[0] ]; } $md->total_profit += $mp_profit->total_profit; $md->cash_profit += $mp_profit->total_profit; $md->clerk_profit += $mp_profit->clerk_profit; if (!$md->save()) { $t->rollBack(); return [ 'code' => 1, 'msg' => $md->errors[0] ]; } $order->clerk_id = get_user_id(); if (!$order->save()) { $t->rollBack(); return [ 'code' => 1, 'msg' => implode(';', array_values($order->firstErrors)) ]; } } } if ($order->save()) { \app\models\OrderAdminHandleLog::addHandleLog($order->id, \app\models\OrderAdminHandleLog::HANDLE_TYPE_CLERK); $t->commit(); // TODO: 核销成功 消息发送 return [ 'code' => 0, 'msg' => '操作成功' ]; } else { return [ 'code' => 1, 'msg' => $this->getErrorSummary(false)[0], ]; } } catch (\Exception $e) { return [ 'code' => 1, 'msg' => $e->getMessage() ]; } } }