新增计算医生平均响应时间

This commit is contained in:
wucongxing 2023-04-24 15:06:59 +08:00
parent 65bdc30ca9
commit 9be6e54dc5

View File

@ -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