37 lines
948 B
PHP
37 lines
948 B
PHP
|
|
<?php
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 文件功能:清理过期婚礼红包(24h 后自动消失)
|
|||
|
|
*
|
|||
|
|
* 每小时执行一次,将超过 expires_at 且有未领取 claims 的婚礼标记为 expired。
|
|||
|
|
* 未领取的金额不退还(设计决定:促进即时领取)。
|
|||
|
|
*
|
|||
|
|
* @author ChatRoom Laravel
|
|||
|
|
*
|
|||
|
|
* @version 1.0.0
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
namespace App\Jobs;
|
|||
|
|
|
|||
|
|
use App\Models\WeddingCeremony;
|
|||
|
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
|||
|
|
use Illuminate\Foundation\Queue\Queueable;
|
|||
|
|
|
|||
|
|
class ExpireWeddingEnvelopes implements ShouldQueue
|
|||
|
|
{
|
|||
|
|
use Queueable;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 执行 Job:将过期的 active 婚礼标记为 completed(已过领取期)。
|
|||
|
|
*/
|
|||
|
|
public function handle(): void
|
|||
|
|
{
|
|||
|
|
// 将已过期的婚礼状态改为 completed
|
|||
|
|
WeddingCeremony::query()
|
|||
|
|
->where('status', 'active')
|
|||
|
|
->whereNotNull('expires_at')
|
|||
|
|
->where('expires_at', '<', now())
|
|||
|
|
->update(['status' => 'completed']);
|
|||
|
|
}
|
|||
|
|
}
|