diff --git a/app/Amqp/Consumer/AssignDoctorConsumer.php b/app/Amqp/Consumer/AssignDoctorConsumer.php index b123d2e..b6747da 100644 --- a/app/Amqp/Consumer/AssignDoctorConsumer.php +++ b/app/Amqp/Consumer/AssignDoctorConsumer.php @@ -203,8 +203,13 @@ class AssignDoctorConsumer extends ConsumerMessage // 消息内容 $message_content_data = array(); $message_content_data['message_type'] = 1; - $message_content_data['content'] = "--等待医生接诊--"; - $message_content_data['desc'] = "温馨提示:您可继续补充问诊内容,便于更快确认病情,医生均在临床一线工作,还请耐心等待,医生接诊会第一时间短信通知您。"; + $message_content_data['title'] = "--等待医生接诊--"; + if ($order_inquiry['inquiry_type'] == 2){ + $message_content_data['desc'] = "温馨提示:您可继续补充问诊内容,便于更快确认病情,医生均在临床一线工作,还请耐心等待,医生接诊会第一时间短信通知您。"; + } else { + $message_content_data['desc'] = "温馨提示:当前服务为公益问诊,可以在24小时内和医生沟通10个回合。医生均为一线工作,还请耐心等待,医生接诊会第一时间短信通知您。"; + } + $message_content = [ 'Data' => json_encode($message_content_data,JSON_UNESCAPED_UNICODE), ]; @@ -218,7 +223,6 @@ class AssignDoctorConsumer extends ConsumerMessage return Result::ACK; } - // 加入消息通知队列 return Result::ACK; } diff --git a/app/Amqp/Consumer/CancelUnInquiryOrdersDelayDirectConsumer.php b/app/Amqp/Consumer/CancelUnInquiryOrdersDelayDirectConsumer.php index 8c48a53..8d5b078 100644 --- a/app/Amqp/Consumer/CancelUnInquiryOrdersDelayDirectConsumer.php +++ b/app/Amqp/Consumer/CancelUnInquiryOrdersDelayDirectConsumer.php @@ -7,6 +7,8 @@ namespace App\Amqp\Consumer; use App\Model\OrderInquiry; use App\Model\OrderInquiryCoupon; use App\Model\UserCoupon; +use App\Model\UserDoctor; +use App\Services\ImService; use App\Services\InquiryService; use App\Utils\Log; use Hyperf\Amqp\Message\ConsumerDelayedMessageTrait; @@ -144,6 +146,47 @@ class CancelUnInquiryOrdersDelayDirectConsumer extends ConsumerMessage } 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; } diff --git a/app/Controller/CallBackController.php b/app/Controller/CallBackController.php index b3dc54a..58a08f4 100644 --- a/app/Controller/CallBackController.php +++ b/app/Controller/CallBackController.php @@ -175,7 +175,18 @@ class CallBackController extends AbstractController $message_content_data = array(); $message_content_data['message_type'] = 1; $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 = [ 'Data' => json_encode($message_content_data,JSON_UNESCAPED_UNICODE), ]; diff --git a/app/Services/InquiryService.php b/app/Services/InquiryService.php index b37f595..9166a99 100644 --- a/app/Services/InquiryService.php +++ b/app/Services/InquiryService.php @@ -872,6 +872,42 @@ class InquiryService extends BaseService $params = array(); $params['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; 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); + } } /** diff --git a/app/Services/UserDoctorService.php b/app/Services/UserDoctorService.php index 1226440..5663192 100644 --- a/app/Services/UserDoctorService.php +++ b/app/Services/UserDoctorService.php @@ -1472,6 +1472,7 @@ class UserDoctorService extends BaseService /** * 新增医生接诊 * @return array + * @throws GuzzleException */ public function addDoctorInquiry(): array { @@ -1516,6 +1517,43 @@ class UserDoctorService extends BaseService 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(); } catch (\Exception $e) { @@ -1529,6 +1567,7 @@ class UserDoctorService extends BaseService /** * 结束问诊 * @return array + * @throws GuzzleException */ public function putDoctorFinishInquiry(): array { @@ -1572,6 +1611,30 @@ class UserDoctorService extends BaseService $params['order_inquiry_id'] = $order_inquiry_id; 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(); } catch (\Exception $e) { Db::rollBack();