diff --git a/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php b/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php index eceb34c..dba07b0 100644 --- a/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php +++ b/app/Amqp/Consumer/AutoFinishInquiryDelayDirectConsumer.php @@ -118,6 +118,12 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage // 处理回写患者病例-回写失败不做处理 $this->handleOrderInquiryCase($order_inquiry); + // 处理医生服务患者数量 + $this->handleDoctorServedPatientsNum($order_inquiry['doctor_id']); + + // 处理医生好评率 + $this->handleDoctorPraiseRate($order_inquiry['doctor_id']); + Db::commit(); Log::getInstance()->info("自动结束问诊订单队列执行成功"); return Result::ACK; @@ -383,5 +389,44 @@ class AutoFinishInquiryDelayDirectConsumer extends ConsumerMessage } } + /** + * 处理医生服务患者数量 + * @param string $doctor_id + * @return void + */ + protected function handleDoctorServedPatientsNum(string $doctor_id): void + { + $params = array(); + $params['doctor_id'] = $doctor_id; + UserDoctor::inc($params,'served_patients_num'); + } + /** + * 处理医生好评率 + * @param string $doctor_id + * @return float|int + */ + protected function handleDoctorPraiseRate(string $doctor_id): float|int + { + // 获取该医生全部问诊评价总数 + $params = array(); + $params['doctor_id'] = $doctor_id; + $order_evaluation_count = OrderEvaluation::getCount($params); + if ($order_evaluation_count == 0){ + return 0; + } + + // 获取该医生好评的评价总数 + $avg_score_params = [80, 100]; + $good_quantity = OrderEvaluation::getScoreCount($params, $avg_score_params); + + $praise_rate = floor(($good_quantity / $order_evaluation_count) * 100) / 100; + + $params = array(); + $params['doctor_id'] = $doctor_id; + + $data = array(); + $data['praise_rate'] = $praise_rate; + UserDoctor::editUserDoctor($params,$data); + } } diff --git a/app/Model/OrderEvaluation.php b/app/Model/OrderEvaluation.php index b2b78e7..b521edd 100644 --- a/app/Model/OrderEvaluation.php +++ b/app/Model/OrderEvaluation.php @@ -99,6 +99,16 @@ class OrderEvaluation extends Model ->count(); } + /** + * 获取评分数量 + * @param array $params 条件 + * @return int + */ + public static function getCount(array $params): int + { + return self::where($params)->count(); + } + /** * 获取信息-单条 * @param array $params diff --git a/app/Model/UserDoctor.php b/app/Model/UserDoctor.php index e8bc6cf..0083fda 100644 --- a/app/Model/UserDoctor.php +++ b/app/Model/UserDoctor.php @@ -321,4 +321,28 @@ class UserDoctor extends Model { return self::where($params)->whereNotIn('doctor_id',$not_in_params)->get($fields); } + + /** + * 自增 + * @param array $params + * @param string $field + * @param float $numeral + * @return int + */ + public static function inc(array $params,string $field,float $numeral = 1): int + { + return self::where($params)->increment($field,$numeral); + } + + /** + * 自减 + * @param array $params + * @param string $field + * @param float $numeral + * @return int + */ + public static function dec(array $params,string $field,float $numeral = 1): int + { + return self::where($params)->decrement($field,$numeral); + } }