exec($this->orderId); } //方便调试 public function exec($orderId){ $this->orderId = $orderId; OrderLog::saveLog($this->orderId,'发送问诊消息start'); $t = \Yii::$app->db->beginTransaction(); try { $this->setRequest(); /* @var \common\models\oldDb\Order $order */ $order = Order::find()->where([ 'id' => $this->orderId, 'is_pay' => 1, 'cancel_status' => 0 ])->with('inquiry','user')->one(); if (!$order || !$order->inquiry) { OrderLog::saveLog($this->orderId,'订单不存在或者问诊信息不存在'); throw new \Exception('订单不存在或者问诊信息不存在'); } //------------------------------------------发消息----------------------------------------------------------- //创建会话 $ims = new ImMessageSession(); $ims->user_id = $order->user_id; $ims->service_id = $order->su_id; $ims->type = UserRoleEnum::DOCTOR; $ims->saveOrFail(); $ims_id = $ims->id; //绑定订单和会话消息的关系 $session_order = new ImMessageSessionOrder(); $session_order->ims_id = $ims_id; $session_order->order_id = $this->orderId; $session_order->saveOrFail(); //发送病情 $message = [ 'type' => 'desc', 'from_User' => [ 'id' => $order->user->id, 'name' => $order->user->nickname, 'avatar' => $order->user->avatarurl ], 'data' => [ 'text' => $order->inquiry->desc ], ]; $form = new ImMessageForm(); $form->ims_id = $ims_id; $form->from_id = $order->user_id; $form->to_id = $order->su_id; $form->type = ImMessageSendTypeEnum::USER_SEND; $form->content = json_encode($message); $form->sendMessage(); //发送基本健康信息 $message = [ 'type' => 'text_a', 'from_User' => [ 'id' => $order->user->id, 'name' => $order->user->nickname, 'avatar' => $order->user->avatarurl ], 'data' => [ 'text' => $order->id ], ]; $form = new ImMessageForm(); $form->ims_id = $ims_id; $form->from_id = $order->user_id; $form->to_id = $order->su_id; $form->type = ImMessageSendTypeEnum::USER_SEND; $form->content = json_encode($message); $form->sendMessage(); //发送图片信息 $message = [ 'type' => 'images', 'from_User' => [ 'id' => $order->user->id, 'name' => $order->user->nickname, 'avatar' => $order->user->avatarurl ], 'data' => [ 'text' => $order->inquiry->images ], ]; $form = new ImMessageForm(); $form->ims_id = $ims_id; $form->from_id = $order->user_id; $form->to_id = $order->su_id; $form->type = ImMessageSendTypeEnum::USER_SEND; $form->content = json_encode($message); $form->sendMessage(); //就诊记录 if($order->inquiry->is_visit && $order->inquiry->visit_desc){ $message = [ 'type' => 'record', 'from_User' => [ 'id' => $order->user->id, 'name' => $order->user->nickname, 'avatar' => $order->user->avatarurl ], 'data' => [ 'text' => $order->inquiry->visit_desc ], ]; $form = new ImMessageForm(); $form->ims_id = $ims_id; $form->from_id = $order->user_id; $form->to_id = $order->su_id; $form->type = ImMessageSendTypeEnum::USER_SEND; $form->content = json_encode($message); $form->sendMessage(); } //以医生身份给用户发送一条提示信息 $message = [ 'type' => 'system', 'from_User' => [ 'id' => $order->su_id, 'name' => $order->serviceUser->docInfo->name, 'avatar' => $order->serviceUser->docIdentity->work_avator ], 'data' => [ 'text' => '温馨提示:您可继续补充问诊内容,便于更快确认病情,医生均在临床一线工作,还请耐心等待,医生接诊时会第一时间短信通知您' ], ]; $form = new ImMessageForm(); $form->ims_id = $ims_id; $form->from_id = $order->su_id; $form->to_id = $order->user_id; $form->type = ImMessageSendTypeEnum::SERVICE_SEND;//!! $form->content = json_encode($message); $form->sendMessage(); //以用户身份给医生发送一条事件消息 $message = [ 'type' => 'end', 'from_User' => [ 'id' => $order->user->id, 'name' => $order->user->nickname, 'avatar' => $order->user->avatarurl ], 'data' => [ 'text' => '请在24小时内接诊,超时将会自动退诊' ], ]; $form = new ImMessageForm(); $form->ims_id = $ims_id; $form->from_id = $order->user_id; $form->to_id = $order->su_id; $form->type = ImMessageSendTypeEnum::USER_SEND; $form->content = json_encode($message); $form->sendMessage(); //----------------------------------------发消息------------------------------------------------------------- $t->commit(); OrderLog::saveLog($this->orderId,'发送问诊消息end'); } catch (\Exception $exception) { $t->rollBack(); \Yii::error($exception); OrderLog::saveLog($this->orderId,'发送问诊消息异常:'.$exception->getMessage()); return; } } }