find($this->eventId); if (! $event) { Log::channel('daily')->warning('AI小班长自动领取买单补偿失败:活动不存在', [ 'event_id' => $this->eventId, ]); return; } // 只有活动进入可领取状态后,才允许自动发起补偿领取。 if (! $event->isClaimable()) { Log::channel('daily')->info('AI小班长自动领取买单补偿跳过:活动暂不可领取', [ 'event_id' => $event->id, 'status' => $event->status, ]); return; } $aiUser = User::query()->where('username', 'AI小班长')->first(); if (! $aiUser) { Log::channel('daily')->warning('AI小班长自动领取买单补偿失败:未找到 AI 用户', [ 'event_id' => $event->id, ]); return; } $record = BaccaratLossCoverRecord::query() ->where('event_id', $event->id) ->where('user_id', $aiUser->id) ->first(); // 没有补偿记录或本次没有待领取金额时,直接记日志后结束。 if (! $record || $record->compensation_amount <= 0 || $record->claim_status !== 'pending') { Log::channel('daily')->info('AI小班长自动领取买单补偿跳过:暂无待领取补偿', [ 'event_id' => $event->id, 'user_id' => $aiUser->id, 'claim_status' => $record?->claim_status, 'compensation_amount' => $record?->compensation_amount, ]); return; } $claimResult = $lossCoverService->claim($event, $aiUser); // 统一记录自动领取结果,便于后续核对 AI 补偿发放情况。 Log::channel('daily')->info('AI小班长自动领取买单补偿结果', [ 'event_id' => $event->id, 'user_id' => $aiUser->id, 'ok' => $claimResult['ok'], 'message' => $claimResult['message'], 'amount' => $claimResult['amount'] ?? 0, ]); } }