新增im消息内页通知

This commit is contained in:
wucongxing 2023-03-29 21:06:34 +08:00
parent 4ca988f3a2
commit ad40e97d39
5 changed files with 161 additions and 4 deletions

View File

@ -203,8 +203,13 @@ class AssignDoctorConsumer extends ConsumerMessage
// 消息内容 // 消息内容
$message_content_data = array(); $message_content_data = array();
$message_content_data['message_type'] = 1; $message_content_data['message_type'] = 1;
$message_content_data['content'] = "--等待医生接诊--"; $message_content_data['title'] = "--等待医生接诊--";
$message_content_data['desc'] = "温馨提示:您可继续补充问诊内容,便于更快确认病情,医生均在临床一线工作,还请耐心等待,医生接诊会第一时间短信通知您。"; if ($order_inquiry['inquiry_type'] == 2){
$message_content_data['desc'] = "温馨提示:您可继续补充问诊内容,便于更快确认病情,医生均在临床一线工作,还请耐心等待,医生接诊会第一时间短信通知您。";
} else {
$message_content_data['desc'] = "温馨提示当前服务为公益问诊可以在24小时内和医生沟通10个回合。医生均为一线工作还请耐心等待医生接诊会第一时间短信通知您。";
}
$message_content = [ $message_content = [
'Data' => json_encode($message_content_data,JSON_UNESCAPED_UNICODE), 'Data' => json_encode($message_content_data,JSON_UNESCAPED_UNICODE),
]; ];
@ -218,7 +223,6 @@ class AssignDoctorConsumer extends ConsumerMessage
return Result::ACK; return Result::ACK;
} }
// 加入消息通知队列
return Result::ACK; return Result::ACK;
} }

View File

@ -7,6 +7,8 @@ namespace App\Amqp\Consumer;
use App\Model\OrderInquiry; use App\Model\OrderInquiry;
use App\Model\OrderInquiryCoupon; use App\Model\OrderInquiryCoupon;
use App\Model\UserCoupon; use App\Model\UserCoupon;
use App\Model\UserDoctor;
use App\Services\ImService;
use App\Services\InquiryService; use App\Services\InquiryService;
use App\Utils\Log; use App\Utils\Log;
use Hyperf\Amqp\Message\ConsumerDelayedMessageTrait; use Hyperf\Amqp\Message\ConsumerDelayedMessageTrait;
@ -144,6 +146,47 @@ class CancelUnInquiryOrdersDelayDirectConsumer extends ConsumerMessage
} }
Log::getInstance()->info("取消未接诊问诊订单成功"); Log::getInstance()->info("取消未接诊问诊订单成功");
Log::getInstance()->info("取消未接诊问诊订单成功,发送IM消息");
try {
$ImService = new ImService();
// 获取订单医生数据
$params = array();
$params['doctor_id'] = $order_inquiry['doctor_id'];
$user_doctor = UserDoctor::getOne($params);
if (empty($user_doctor)) {
Log::getInstance()->info("取消未接诊问诊订单成功,发送IM消息失败医生数据错误");
}
// 发送消息
// 自定义消息
$cloud_custom_data = array();
$cloud_custom_data['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
$cloud_custom_data['is_system'] = 1;
$cloud_custom_data['inquiry_type'] = $order_inquiry['inquiry_type'];
$cloud_custom_data['message_rounds'] = 0;
$cloud_custom_data['patient_family_data']['patient_name'] = $order_inquiry['patient_name'];
$cloud_custom_data['patient_family_data']['patient_sex'] = $order_inquiry['patient_sex'];
$cloud_custom_data['patient_family_data']['patient_age'] = $order_inquiry['patient_age'];
// 消息内容
$message_content_data = array();
$message_content_data['message_type'] = 1;
$message_content_data['content'] = "--医生未接诊--";
$message_content_data['desc'] = "医生因工作繁忙未能接诊和您沟通希望见谅。平台在24小时内进行退款钱会退回至原账户中。";
$message_content = [
'Data' => json_encode($message_content_data,JSON_UNESCAPED_UNICODE),
];
$ImService->sendMessage($user_doctor['user_id'], $order_inquiry['user_id'], $message_content, "TIMCustomElem", $cloud_custom_data);
Log::getInstance()->info("取消未接诊问诊订单成功,发送IM消息成功");
} catch (\Exception $e) {
// 验证失败
Log::getInstance()->error("取消未接诊问诊订单成功,发送IM消息失败:" . $e->getMessage());
}
return Result::ACK; return Result::ACK;
} }

View File

@ -175,7 +175,18 @@ class CallBackController extends AbstractController
$message_content_data = array(); $message_content_data = array();
$message_content_data['message_type'] = 1; $message_content_data['message_type'] = 1;
$message_content_data['title'] = "--等待医生接诊--"; $message_content_data['title'] = "--等待医生接诊--";
$message_content_data['desc'] = "温馨提示:您可继续补充问诊内容,便于更快确认病情,医生均在临床一线工作,还请耐心等待,医生接诊会第一时间短信通知您。"; $message_content_data['desc'] = "";
if ($order_inquiry['inquiry_type'] == 1){
$message_content_data['desc'] = "温馨提示当前服务为专家问诊可以在24小时内和医生沟通20个回合。医生均为一线工作还请耐心等待医生接诊会第一时间短信通知您。";
} elseif ($order_inquiry['inquiry_type'] == 2){
$message_content_data['desc'] = "温馨提示:您可继续补充问诊内容,便于更快确认病情,医生均在临床一线工作,还请耐心等待,医生接诊会第一时间短信通知您。";
} elseif ($order_inquiry['inquiry_type'] == 3){
$message_content_data['desc'] = "温馨提示当前服务为公益问诊可以在24小时内和医生沟通10个回合。医生均为一线工作还请耐心等待医生接诊会第一时间短信通知您。";
} elseif ($order_inquiry['inquiry_type'] == 4){
$message_content_data['desc'] = "温馨提示当前服务为公益问诊可以在24小时内和医生沟通10个回合。医生均为一线工作还请耐心等待医生接诊会第一时间短信通知您。";
}
$message_content = [ $message_content = [
'Data' => json_encode($message_content_data,JSON_UNESCAPED_UNICODE), 'Data' => json_encode($message_content_data,JSON_UNESCAPED_UNICODE),
]; ];

View File

@ -872,6 +872,42 @@ class InquiryService extends BaseService
$params = array(); $params = array();
$params['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; $params['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
OrderInquiry::edit($params, $data); OrderInquiry::edit($params, $data);
// 存在问诊医生时,需发送退款消息
if (!empty($order_inquiry['doctor_id'])){
// 获取医生数据
$params = array();
$params['doctor_id'] = $order_inquiry['doctor_id'];
$user_doctor = UserDoctor::getOne($params);
if (empty($user_doctor)){
throw new BusinessException("医生数据错误");
}
// 发送问诊消息
$ImService = new ImService();
// 发送消息
$cloud_custom_data = array();
$cloud_custom_data['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
$cloud_custom_data['is_system'] = 1;
$cloud_custom_data['inquiry_type'] = $order_inquiry['inquiry_type'];
$cloud_custom_data['message_rounds'] = 0;
$cloud_custom_data['patient_family_data']['patient_name'] = $order_inquiry['patient_name'];
$cloud_custom_data['patient_family_data']['patient_sex'] = $order_inquiry['patient_sex'];
$cloud_custom_data['patient_family_data']['patient_age'] = $order_inquiry['patient_age'];
// 消息内容
$message_content_data = array();
$message_content_data['message_type'] = 1;
$message_content_data['title'] = "问诊已结束";
$message_content_data['desc'] = "线上咨询不能代替问诊,医生的回复仅为建议。";
$message_content = [
'Data' => json_encode($message_content_data,JSON_UNESCAPED_UNICODE),
];
$ImService->sendMessage($user_doctor['user_id'], $order_inquiry['user_id'], $message_content, "TIMCustomElem", $cloud_custom_data);
}
} }
/** /**

View File

@ -1472,6 +1472,7 @@ class UserDoctorService extends BaseService
/** /**
* 新增医生接诊 * 新增医生接诊
* @return array * @return array
* @throws GuzzleException
*/ */
public function addDoctorInquiry(): array public function addDoctorInquiry(): array
{ {
@ -1516,6 +1517,43 @@ class UserDoctorService extends BaseService
OrderInquiry::edit($params,$data); OrderInquiry::edit($params,$data);
// 发送问诊消息 // 发送问诊消息
$ImService = new ImService();
// 发送消息
$cloud_custom_data = array();
$cloud_custom_data['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
$cloud_custom_data['is_system'] = 1;
$cloud_custom_data['inquiry_type'] = $order_inquiry['inquiry_type'];
$cloud_custom_data['message_rounds'] = 0;
$cloud_custom_data['patient_family_data']['patient_name'] = $order_inquiry['patient_name'];
$cloud_custom_data['patient_family_data']['patient_sex'] = $order_inquiry['patient_sex'];
$cloud_custom_data['patient_family_data']['patient_age'] = $order_inquiry['patient_age'];
// 消息内容
$message_content_data = array();
$message_content_data['message_type'] = 1;
$message_content_data['title'] = "";
$message_content_data['desc'] = "";
if ($order_inquiry['inquiry_type'] == 1){
$message_content_data['title'] = "--问诊已开始本次问诊可持续24小时--";
$message_content_data['desc'] = "医生已接诊,您可继续补充问诊内容,如目前症状、患病时长、检查及用药情况、需要的帮助等,线上咨询不能代表面诊,医生的回复仅为建议。";
} elseif ($order_inquiry['inquiry_type'] == 2){
$message_content_data['title'] = "--问诊已开始本次问诊可持续60分钟--";
$message_content_data['desc'] = "医生已接诊,您可继续补充问诊内容,如目前症状、患病时长、检查及用药情况、需要的帮助等,线上咨询不能代表面诊,医生的回复仅为建议。";
} elseif ($order_inquiry['inquiry_type'] == 3){
$message_content_data['title'] = "--问诊已开始本次问诊可持续24小时--";
$message_content_data['desc'] = "医生已接诊,您可一次描述需要问诊的内容,以免浪费问诊次数,如目前症状、患病时长、检查及用药情况、需要的帮助等,线上咨询不能代表面诊,医生的回复仅为建议。";
} elseif ($order_inquiry['inquiry_type'] == 4){
$message_content_data['title'] = "--问诊已开始本次问诊可持续30分钟--";
$message_content_data['desc'] = "医生已接诊,您可继续补充问诊内容,如目前症状、患病时长、检查及用药情况、需要的帮助等,线上咨询不能代表面诊,医生的回复仅为建议。";
}
$message_content = [
'Data' => json_encode($message_content_data,JSON_UNESCAPED_UNICODE),
];
$ImService->sendMessage($user_info['user_id'], $order_inquiry['user_id'], $message_content, "TIMCustomElem", $cloud_custom_data);
Db::commit(); Db::commit();
} catch (\Exception $e) { } catch (\Exception $e) {
@ -1529,6 +1567,7 @@ class UserDoctorService extends BaseService
/** /**
* 结束问诊 * 结束问诊
* @return array * @return array
* @throws GuzzleException
*/ */
public function putDoctorFinishInquiry(): array public function putDoctorFinishInquiry(): array
{ {
@ -1572,6 +1611,30 @@ class UserDoctorService extends BaseService
$params['order_inquiry_id'] = $order_inquiry_id; $params['order_inquiry_id'] = $order_inquiry_id;
OrderInquiry::edit($params,$data); OrderInquiry::edit($params,$data);
// 发送问诊消息
$ImService = new ImService();
// 发送消息
$cloud_custom_data = array();
$cloud_custom_data['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
$cloud_custom_data['is_system'] = 1;
$cloud_custom_data['inquiry_type'] = $order_inquiry['inquiry_type'];
$cloud_custom_data['message_rounds'] = 0;
$cloud_custom_data['patient_family_data']['patient_name'] = $order_inquiry['patient_name'];
$cloud_custom_data['patient_family_data']['patient_sex'] = $order_inquiry['patient_sex'];
$cloud_custom_data['patient_family_data']['patient_age'] = $order_inquiry['patient_age'];
// 消息内容
$message_content_data = array();
$message_content_data['message_type'] = 1;
$message_content_data['title'] = "问诊已结束";
$message_content_data['desc'] = "线上咨询不能代替问诊,医生的回复仅为建议。";
$message_content = [
'Data' => json_encode($message_content_data,JSON_UNESCAPED_UNICODE),
];
$ImService->sendMessage($user_info['user_id'], $order_inquiry['user_id'], $message_content, "TIMCustomElem", $cloud_custom_data);
Db::commit(); Db::commit();
} catch (\Exception $e) { } catch (\Exception $e) {
Db::rollBack(); Db::rollBack();