创建服务包问诊订单增加医生有新服务包订单的消息推送

This commit is contained in:
2024-04-19 10:24:55 +08:00
parent 0ddd0d5eba
commit e92ccdcc5e
5 changed files with 302 additions and 38 deletions
@@ -28,6 +28,26 @@ class MessagePushServicePackageService extends BaseService
// 订单数据
public ?array $order = null;
// 服务包订单数据
public ?array $order_service_package = null;
// 问诊订单数据
public ?array $order_inquiry = null;
public function __construct(string $order_no){
// 获取订单数据
$params = array();
$params['order_service_no'] = $order_no;
$order_service_package = OrderServicePackage::getOne($params);
if (empty($order_service_package)){
throw new BusinessException("订单数据错误");
}
$this->order_service_package = $order_service_package->toArray();
$params = array();
}
/**
* 患者-通知患者医生已接诊
* @return void
@@ -54,15 +74,6 @@ class MessagePushServicePackageService extends BaseService
}
// 站内
// 获取服务包订单
$params = array();
$params['order_service_no'] = $this->order['order_no'];
$order_service_package = OrderServicePackage::getOne($params);
if (empty($order_service_package)){
Log::getInstance("MessagePushServicePackageService-patientDoctorAcceptedInquiry")->error("服务包订单数据为空");
return;
}
// 获取服务包订单详情
$params = array();
$params['order_service_no'] = $this->order['order_no'];
@@ -73,13 +84,13 @@ class MessagePushServicePackageService extends BaseService
}
// 转换服务包订单类型为汉字
$order_type = orderServiceTypeToString($order_service_package['order_service_type']);
$order_type = orderServiceTypeToString($this->order_service_package['order_service_type']);
// 转换每月次数为汉字
$monthly_frequency = monthlyFrequencyToString($order_service_package_detail['monthly_frequency']);
$start_time = date('Y年m月d日 H时i分',strtotime($order_service_package['start_time']));
$finish_time = date('Y年m月d日 H时i分',strtotime($order_service_package['finish_time']));
$start_time = date('Y年m月d日 H时i分',strtotime($this->order_service_package['start_time']));
$finish_time = date('Y年m月d日 H时i分',strtotime($this->order_service_package['finish_time']));
// 站内
$data = array();
@@ -136,4 +147,49 @@ class MessagePushServicePackageService extends BaseService
Log::getInstance("MessagePushServicePackageService-patientDoctorAcceptedInquiry")->error($e->getMessage());
}
}
// 医生-服务包待接诊
// 仅限于患者购买服务包后,首次发起问诊后使用
public function doctorWaitInquiry()
{
try {
// 获取医生数据
$params = array();
$params['doctor_id'] = $this->order['doctor_id'];
$user_doctor = UserDoctor::getOne($params);
if (empty($user_doctor)) {
Log::getInstance("MessagePushServicePackageService-doctorWaitInquiry")->error("医生数据为空");
return;
}
// 站内
$data = array();
$data['user_id'] = $this->user['user_id'];
$data['notice_type'] = 1;
$data['inquiry_type'] = 1; // 问诊类型(医生端服务通知存在 1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药)
$data['from_name'] = "肝胆小秘书";
$data['notice_brief_title'] = "您有新的问诊咨询,请及时处理。";
$data['notice_title'] = "您有新的问诊咨询,请及时处理。";
$data['notice_content'] = "您有新的问诊咨询,请及时处理。";
$data['link_type'] = 3; // 问诊消息列表页
$link_params = array();
$link_params['order_inquiry_id'] = $this->order_inquiry['order_inquiry_id'];
$link_params['inquiry_type'] = $this->order_inquiry['inquiry_type'];
$link_params['doctor_user_id'] = $user_doctor['user_id'];
$link_params['patient_user_id'] = $this->order_inquiry['user_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) {
Log::getInstance("MessagePush")->error("错误:加入站内推送队列失败" . json_encode($data, JSON_UNESCAPED_UNICODE));
}
}catch (\Throwable $e){
Log::getInstance("MessagePushServicePackageService-doctorWaitInquiry")->error($e->getMessage());
}
}
}