diff --git a/app/Amqp/Consumer/AssignDoctorDelayDirectConsumer.php b/app/Amqp/Consumer/AssignDoctorDelayDirectConsumer.php index 0c72b76..0f0514c 100644 --- a/app/Amqp/Consumer/AssignDoctorDelayDirectConsumer.php +++ b/app/Amqp/Consumer/AssignDoctorDelayDirectConsumer.php @@ -9,6 +9,8 @@ use App\Amqp\Producer\CancelUnInquiryOrdersDelayDirectProducer; use App\Amqp\Producer\UserCouponExpiredDelayDirectProducer; use App\Constants\HttpEnumCode; use App\Model\OrderInquiry; +use App\Model\UserDoctor; +use App\Services\ImService; use App\Services\InquiryService; use App\Services\MessagePush; use App\Services\UserDoctorService; @@ -187,6 +189,7 @@ class AssignDoctorDelayDirectConsumer extends ConsumerMessage return Result::REQUEUE; } + Db::commit(); Log::getInstance("queue-AssignDoctor")->info("结束"); return Result::ACK; } @@ -236,10 +239,30 @@ class AssignDoctorDelayDirectConsumer extends ConsumerMessage $res = $producer->produce($message); if (!$res) { Db::rollBack(); - Log::getInstance("queue-AssignDoctor")->error("加入未接诊取消订单延迟队列失败"); - return Result::ACK; + Log::getInstance("queue-AssignDoctor")->error("错误:加入未接诊取消订单延迟队列失败"); + return Result::REQUEUE; } + Log::getInstance("queue-AssignDoctor")->info("信息:发送消息"); + + // 获取订单医生数据 + $params = array(); + $params['doctor_id'] = $doctor_id; + $user_doctor = UserDoctor::getOne($params); + if (empty($user_doctor)) { + Db::rollBack(); + Log::getInstance("queue-AssignDoctor")->error("错误:医生数据错误"); + return Result::REQUEUE; + } + + // 发送IM消息-等待医生接诊 + $imService = new ImService(); + $imService->waitDoctorInquiry($order_inquiry,$user_doctor['user_id'],$order_inquiry['user_id']); + + // 医生-医生有新问诊 站内、订阅失败发送短信 + $MessagePush = new MessagePush($user_doctor['user_id'],$order_inquiry['order_inquiry_id']); + $MessagePush->doctorHaveNewInquiry(); + Db::commit(); Log::getInstance("queue-AssignDoctor")->info("成功"); } catch (\Exception $e) {