push_type = $push_type; if (!empty($user_id)) { $params = array(); $params['user_id'] = $user_id; $user = User::getOne($params); if (!empty($user)) { $this->user = $user->toArray(); } } if (!empty($order_inquiry_id)) { $params = array(); $params['order_inquiry_id'] = $order_inquiry_id; $order_inquiry = OrderInquiry::getOne($params); if (!empty($order_inquiry)) { $this->order_inquiry = $order_inquiry->toArray(); } } } /** * 快速/购药的服务5分钟未接诊 * 公益/专家24小时未接诊 * @return bool * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ public function noInquiry(): bool { try { if ($this->push_type == 1) { // 站内 // 服务消息 $data = array(); $data['user_id'] = $this->user['user_id']; $data['notice_type'] = 3; $data['notice_system_type'] = 1; $data['from_name'] = "肝胆小秘书"; if ($this->order_inquiry['inquiry_type'] == 1 || $this->order_inquiry['inquiry_type'] == 3) { // 专家-公益 $inquiry_type_string = inquiryTypeToString($this->order_inquiry['inquiry_type']); $data['notice_title'] = "【{$inquiry_type_string}】医生未接诊:您咨询的医生因工作繁忙没有时间接诊,点击查看详情。"; $data['notice_content'] = "【{$inquiry_type_string}】未接诊:您咨询的服务当前排队人较多,暂无空闲医生接诊。给您带来不便敬请谅解,平台会在24小时内进行退款,您可以点击订单详情查看退款详情。"; } elseif ($this->order_inquiry['inquiry_type'] == 1 || $this->order_inquiry['inquiry_type'] == 4) { // 快速-购药 $inquiry_type_string = inquiryTypeToString($this->order_inquiry['inquiry_type']); $data['notice_title'] = "【{$inquiry_type_string}】未接诊:您咨询的服务暂无医生接诊,点击查看详情。"; $data['notice_content'] = "【{$inquiry_type_string}】医生未接诊:您咨询的医生因工作繁忙,暂无空闲时间接诊。给您带来不便敬请谅解,平台会在24小时内进行退款,您可以点击订单详情查看退款详情。"; } $data['link_type'] = 10;// 问诊订单详情 $link_params = array(); $link_params['order_inquiry_id'] = $this->order_inquiry['order_inquiry_id']; $data['link_params'] = json_encode($link_params,JSON_UNESCAPED_UNICODE);// 跳转参数 $message = new SendStationMessageProducer($data); $producer = ApplicationContext::getContainer()->get(Producer::class); $result = $producer->produce($message); if (!$result) { throw new BusinessException("加入推送队列失败" . json_encode($data,JSON_UNESCAPED_UNICODE)); } } elseif ($this->push_type == 2) { // 订阅 // 获取医生数据 $params = array(); $params['doctor_id'] = $this->order_inquiry['doctor_id']; $user_doctor = UserDoctor::getOne($params); if (empty($user_doctor)){ throw new BusinessException("加入推送队列失败:医生数据为空"); } $sub_data = array(); $sub_data['push_user_id'] = $this->user['user_id']; $sub_data['template_title'] = "问诊异常通知"; $sub_data['params']['page'] = "pages/orderDetail/orderDetail"; $sub_data['params']['data'] = [ "character_string1" => $this->order_inquiry['inquiry_no'],// 订单ID "name2" => (string)$user_doctor['user_name'],// 问诊医生 "date3" => $this->order_inquiry['created_at'],// 问诊时间 "thing4" => cancelReasonToString($this->order_inquiry['cancel_reason']),// 取消原因 "thing5" => "点击详情更换医生问诊",// 提示说明 ]; $data = array(); $data['sub_data'] = $sub_data; $data['sms_data'] = array(); $message = new SendSubMessageProducer($data); $producer = ApplicationContext::getContainer()->get(Producer::class); $result = $producer->produce($message); if (!$result) { throw new BusinessException("加入推送队列失败" . json_encode($data,JSON_UNESCAPED_UNICODE)); } } elseif ($this->push_type == 3) { // 短信 无需接入 } else { } } catch (\Exception $e) { throw new BusinessException("加入推送队列失败" . $e->getMessage()); } return true; } /** * 患者回复通知 * @param string $content 回复内容 * @return bool * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ public function patientReplyNotice(string $content): bool { try { // 只有订阅消息 if ($this->push_type == 2){ $sub_data = array(); $sub_data['push_user_id'] = $this->user['user_id']; $sub_data['template_title'] = "患者回复通知"; $sub_data['params']['page'] = "Pages/yishi/chat/index?from_account={$this->user['user_id']}&order_inquiry_id={$this->order_inquiry['order_inquiry_id']}&inquiry_type={$this->order_inquiry['inquiry_type']}"; $sub_data['params']['data'] = [ "thing1" => $this->user['user_name'],// 患者姓名 "thing2" => $content,// 回复内容 ]; $data = array(); $data['sub_data'] = $sub_data; $data['sms_data'] = array(); $message = new SendSubMessageProducer($data); $producer = ApplicationContext::getContainer()->get(Producer::class); $result = $producer->produce($message); if (!$result) { throw new BusinessException("加入推送队列失败" . json_encode($data,JSON_UNESCAPED_UNICODE)); } } } catch (\Exception $e) { throw new BusinessException("加入推送队列失败" . $e->getMessage()); } return true; } }