2024-09-19 11:32:39 +08:00
|
|
|
|
<?php
|
|
|
|
|
|
namespace common\jobs;
|
|
|
|
|
|
|
|
|
|
|
|
use common\enums\ImMessageSendTypeEnum;
|
|
|
|
|
|
use common\enums\UserRoleEnum;
|
|
|
|
|
|
use common\forms\ImMessageForm;
|
2024-12-19 19:20:27 +08:00
|
|
|
|
use common\models\oldDb\ImMessageSession;
|
|
|
|
|
|
use common\models\oldDb\ImMessageSessionOrder;
|
|
|
|
|
|
use common\models\oldDb\Order;
|
|
|
|
|
|
use common\models\oldDb\OrderLog;
|
2024-09-19 11:32:39 +08:00
|
|
|
|
use yii\queue\JobInterface;
|
|
|
|
|
|
use yii\queue\Queue;
|
|
|
|
|
|
|
|
|
|
|
|
//支付后发送问诊消息
|
|
|
|
|
|
class OrderPayImJob extends BaseJob implements JobInterface
|
|
|
|
|
|
{
|
|
|
|
|
|
public $orderId;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @param Queue $queue which pushed and is handling the job
|
|
|
|
|
|
*/
|
|
|
|
|
|
public function execute($queue)
|
|
|
|
|
|
{
|
|
|
|
|
|
$this->exec($this->orderId);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//方便调试
|
|
|
|
|
|
public function exec($orderId){
|
|
|
|
|
|
$this->orderId = $orderId;
|
|
|
|
|
|
OrderLog::saveLog($this->orderId,'发送问诊消息start');
|
|
|
|
|
|
|
|
|
|
|
|
$t = \Yii::$app->db->beginTransaction();
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
|
|
|
|
$this->setRequest();
|
2024-12-19 19:20:27 +08:00
|
|
|
|
/* @var \common\models\oldDb\Order $order */
|
2024-09-19 11:32:39 +08:00
|
|
|
|
$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;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|