接单并发处理;派奖开关
parent
6b4644870c
commit
7327fc2f11
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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, '订单状态不对,无法派奖');
|
||||
|
|
|
|||
Loading…
Reference in New Issue