接单并发处理;派奖开关

pull/1/head
jcadmin 2025-02-09 15:45:37 +08:00
parent 6b4644870c
commit 7327fc2f11
2 changed files with 12 additions and 1 deletions

View File

@ -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');
$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();
}

View File

@ -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, '订单状态不对,无法派奖');