From 7327fc2f11bc1ae3b311fd8815bf8e1af0d93852 Mon Sep 17 00:00:00 2001 From: jcadmin Date: Sun, 9 Feb 2025 15:45:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=8D=95=E5=B9=B6=E5=8F=91=E5=A4=84?= =?UTF-8?q?=E7=90=86=EF=BC=9B=E6=B4=BE=E5=A5=96=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Api/Seller/OrderController.php | 12 +++++++++++- app/Service/OrderService.php | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Api/Seller/OrderController.php b/app/Http/Controllers/Api/Seller/OrderController.php index 526a10eb..a3a45fe7 100755 --- a/app/Http/Controllers/Api/Seller/OrderController.php +++ b/app/Http/Controllers/Api/Seller/OrderController.php @@ -16,6 +16,7 @@ use App\Service\OrderService; use App\Utils\Helps; use App\Utils\ThrowException; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Redis; class OrderController extends BaseController { @@ -490,7 +491,16 @@ class OrderController extends BaseController public function receive(Request $request, OrderService $orderService) { $orderSn = $request->input('order_sn'); - $orderService->sellerReceive($this->seller(), $orderSn); + $lockKey = 'order:receive:'.$orderSn; + $lock = Redis::setnx($lockKey, 1); + ThrowException::isTrue(!$lock, '接单中...'); + try { + $orderService->sellerReceive($this->seller(), $orderSn); + } catch (\Exception $e) { + throw $e; + } finally {// 确保释放锁 + Redis::del($lockKey); + } return $this->jsonSuccess(); } diff --git a/app/Service/OrderService.php b/app/Service/OrderService.php index f6c76e3f..c6db4c46 100755 --- a/app/Service/OrderService.php +++ b/app/Service/OrderService.php @@ -339,6 +339,7 @@ class OrderService public function sellerSendPrize(Seller $seller, $orderSn, $sendPrize) { + ThrowException::isTrue(!$seller->enable_send_prize, '无派奖权限'); $order = Order::sn($orderSn)->first(); ThrowException::isTrue(!$order, '订单不存在'); ThrowException::isTrue($order->lottery_state != LottState::WIN, '订单状态不对,无法派奖');