diff --git a/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php b/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php index ca5364f..dd42aa9 100644 --- a/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php +++ b/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php @@ -124,8 +124,11 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage // 处理医生服务患者数量 $this->handleDoctorServedPatientsNum($order_inquiry['doctor_id']); - // 处理医生好评率 - $this->handleDoctorPraiseRate($order_inquiry['doctor_id']); + // 计算医生好评率 + $this->computeDoctorPraiseRate($order_inquiry['doctor_id']); + + // 计算医生平均响应时间 + $this->computeDoctorAvgPesponseTime($order_inquiry['doctor_id']); Db::commit(); Log::getInstance("queue-AutoFinishInquiry")->info("成功"); @@ -423,7 +426,7 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage * @param string $doctor_id * @return int|void */ - protected function handleDoctorPraiseRate(string $doctor_id) + protected function computeDoctorPraiseRate(string $doctor_id) { // 获取该医生全部问诊评价总数 $params = array(); @@ -447,6 +450,45 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage UserDoctor::editUserDoctor($params,$data); } + /** + * 处理医生平均响应时间 + * @param string $doctor_id + * @return void + */ + protected function computeDoctorAvgPesponseTime(string $doctor_id) + { + // 统计数组 + $avg_pesponse_time = []; + + // 获取该医生全部已结束问诊订单 + $params = array(); + $params['doctor_id'] = $doctor_id; + $params['inquiry_status'] = 6; + $order_inquiry = OrderInquiry::getList($params); + if (!empty($order_inquiry)){ + foreach ($order_inquiry as $item){ + $pesponse_time = strtotime($item['reception_time']) - strtotime($item['created_at']); + if ($pesponse_time < 0){ + // 小于0的数据不统计 + continue; + } + + $avg_pesponse_time[] = $pesponse_time; + } + + if (!empty($avg_pesponse_time)){ + $result = floor((array_sum($avg_pesponse_time) / count($avg_pesponse_time)) / 60 * 100) / 100; + + $params = array(); + $params['doctor_id'] = $doctor_id; + + $data = array(); + $data['avg_pesponse_time'] = $result; + UserDoctor::editUserDoctor($params,$data); + } + } + } + /** * 推送问诊结束im消息 * @param array|object $order_inquiry