- 为多个广播事件添加 retryUntil 方法,设置派发后 30 秒内必须执行,否则丢弃 - 修改 LotteryDrawTickCommand handle,添加异常捕获及错误日志,保证失败时返回 FAILURE - 修改 LotteryHallCountdownCommand handle,添加异常捕获及错误日志,超时情况写入警告日志 - 针对 SettlementOrchestrator 和 DrawHallSnapshotBuilder 查询结果添加限制,防止数据量过大 - 调整计划任务 withoutOverlapping 调用,增加 expiresAt 参数避免任务锁死 - 更新 .env.example,完善本地开发与生产环境部署说明及日志配置说明 - 移除 e2e 相关测试代码、配置及依赖,精简项目体积
39 lines
1.1 KiB
PHP
39 lines
1.1 KiB
PHP
<?php
|
||
|
||
namespace App\Console\Commands;
|
||
|
||
use Illuminate\Console\Command;
|
||
use App\Services\Draw\DrawTickService;
|
||
|
||
final class LotteryDrawTickCommand extends Command
|
||
{
|
||
protected $signature = 'lottery:draw-tick';
|
||
|
||
protected $description = '封盘、开奖 RNG、补齐期号缓冲(每分钟调度入口)';
|
||
|
||
public function handle(DrawTickService $tickService): int
|
||
{
|
||
try {
|
||
$report = $tickService->tick();
|
||
|
||
$statusSum = array_sum($report['status_updates'] ?? []);
|
||
$this->info(sprintf(
|
||
'Status rows updated: %d | RNG runs: %d | Planned draws created: %d',
|
||
$statusSum,
|
||
$report['rng_rung'],
|
||
$report['planned']['created'] ?? 0,
|
||
));
|
||
|
||
foreach ($report['rng_errors'] as $err) {
|
||
$this->warn($err);
|
||
}
|
||
|
||
return self::SUCCESS;
|
||
} catch (\Throwable $e) {
|
||
report($e);
|
||
$this->error('lottery:draw-tick failed: '.$e->getMessage());
|
||
return self::FAILURE;
|
||
}
|
||
}
|
||
}
|