info("开始:" . json_encode($data, JSON_UNESCAPED_UNICODE)); // 获取检测订单数据 $params = array(); $params['detection_no'] = $data['detection_no']; $order_detection = OrderDetection::getOne($params); if (empty($order_detection)){ Log::getInstance("queue-DoctorNotYetInquiry")->error("非法订单"); return Result::ACK; } try { // 检测当前医生是否和患者存在未完成问诊订单 $InquiryService = new InquiryService(); $order_inquiry = $InquiryService->checkPatientDoctorProgressInquiry($order_detection['user_id'],$order_detection['doctor_id']); if (!empty($order_inquiry)){ // 存在未完成订单 // 获取现在时间距离订单结束时间的时间差 $time_diff = $InquiryService->getInquiryFinishTimeDiff($order_inquiry); // 计算时间并重新加入队列 $queue_data = array(); $queue_data['order_inquiry_id'] = $data['order_inquiry_id']; $message = new DetectionCompleteDelayDirectProducer($queue_data); $message->setDelayMs(1000 * $time_diff); $producer = $this->container->get(Producer::class); $res = $producer->produce($message); if (!$res) { Db::rollBack(); Log::getInstance()->error("处理用户优惠卷过期队列 执行失败:未到过期时间,重新添加队列失败"); return Result::REQUEUE; } return Result::DROP; } }catch (\Throwable $e){ Log::getInstance("queue-DoctorNotYetInquiry")->error($e->getMessage()); return Result::DROP; // 重回队列 } return Result::ACK; } }