From 28eb4b73446e21a1ed0b47d418fbe518ac6a4418 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Fri, 5 May 2023 16:46:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8F=96=E6=B6=88=E6=9C=AA?= =?UTF-8?q?=E6=8E=A5=E8=AF=8A=E8=AE=A2=E5=8D=95=E9=94=81=E5=AE=9A=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=94=81=E5=AE=9A=E6=97=B6=E9=97=B4=E6=9C=AA?= =?UTF-8?q?3=E7=A7=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CancelUnInquiryOrdersDelayDirectConsumer.php | 15 +++++++++++++++ app/Services/PatientOrderService.php | 2 +- app/Services/UserDoctorService.php | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app/Amqp/Consumer/CancelUnInquiryOrdersDelayDirectConsumer.php b/app/Amqp/Consumer/CancelUnInquiryOrdersDelayDirectConsumer.php index 3408f1e..5627ec6 100644 --- a/app/Amqp/Consumer/CancelUnInquiryOrdersDelayDirectConsumer.php +++ b/app/Amqp/Consumer/CancelUnInquiryOrdersDelayDirectConsumer.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Amqp\Consumer; +use App\Constants\HttpEnumCode; use App\Model\OrderInquiry; use App\Model\OrderInquiryCoupon; use App\Model\UserCoupon; @@ -19,6 +20,7 @@ use Hyperf\Amqp\Result; use Hyperf\Amqp\Annotation\Consumer; use Hyperf\Amqp\Message\ConsumerMessage; use Hyperf\DbConnection\Db; +use Hyperf\Redis\Redis; use PhpAmqpLib\Message\AMQPMessage; use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; @@ -64,6 +66,19 @@ class CancelUnInquiryOrdersDelayDirectConsumer extends ConsumerMessage return Result::ACK; } + // 检测锁定 + $redis = $this->container->get(Redis::class); + $redis_key = "order_inquiry_lock_" . $data['order_inquiry_id']; + $redis_lock = $redis->setnx($redis_key,1); + // 设置过期时间 + $redis->expire($redis_key,3); + if (!$redis_lock){ + // 设置失败,表示已经设置该值 + Db::rollBack(); + Log::getInstance()->error("取消未接诊问诊订单失败:正在锁定中" ); + return Result::REQUEUE; + } + // 检测订单状态 if ($order_inquiry['inquiry_status'] == 7) { // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) diff --git a/app/Services/PatientOrderService.php b/app/Services/PatientOrderService.php index 98f231b..c38f103 100644 --- a/app/Services/PatientOrderService.php +++ b/app/Services/PatientOrderService.php @@ -287,7 +287,7 @@ class PatientOrderService extends BaseService $redis_key = "order_inquiry_lock_" . $order_inquiry_id; $redis_lock = $redis->setnx($redis_key,1); // 设置过期时间 - $redis->expire($redis_key,2); + $redis->expire($redis_key,3); if (!$redis_lock){ // 设置失败,表示已经设置该值 return fail(HttpEnumCode::HTTP_SUCCESS,"请您稍后重试"); diff --git a/app/Services/UserDoctorService.php b/app/Services/UserDoctorService.php index 31c3a88..b91e09f 100644 --- a/app/Services/UserDoctorService.php +++ b/app/Services/UserDoctorService.php @@ -1697,7 +1697,7 @@ class UserDoctorService extends BaseService $redis_key = "order_inquiry_lock_" . $order_inquiry_id; $redis_lock = $redis->setnx($redis_key,1); // 设置过期时间 - $redis->expire($redis_key,2); + $redis->expire($redis_key,3); if (!$redis_lock){ // 设置失败,表示已经设置该值 return fail(HttpEnumCode::HTTP_SUCCESS,"请您稍后重试");