Files
water-back/modules/Mall/Jobs/CloseOrder.php
2023-01-12 14:47:38 +08:00

68 lines
1.2 KiB
PHP

<?php
namespace Modules\Mall\Jobs;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Modules\Mall\Models\Goods;
use Modules\Mall\Models\Order;
/**
* 自动关闭订单
*/
class CloseOrder implements ShouldQueue
{
use Dispatchable, InteractsWithQueue;
/**
* 队列名称
*
* @var string
*/
public string $queue = 'ORDER';
/**
* 队列执行 延迟时间
*
* @var integer
*/
public int $delay = 1800;
/**
* 最大尝试次数
*
* @var integer
*/
public int $tries = 1;
/**
* 脚本超时时间
*
* @var integer
*/
public int $timeout = 10;
protected Order $order;
public function __construct(Order $order)
{
$this->order = $order;
}
public function handle()
{
$order = $this->order->fresh();
if ($order->canCancel()) {
$order->cancel();
foreach ($order->items as $item) {
if ($item->source['deduct_stock_type'] == Goods::DEDUCT_STOCK_ORDER) {
$item->item->addStock($item->qty); //加库存
}
}
}
}
}