format('Y-m-d'); $count = 0; Visit::query() ->where('long_time', 1) ->whereIn('audit_status', [3, 4]) ->orderBy('id') ->chunkById(200, function ($visits) use ($today, &$count) { foreach ($visits as $visit) { $lastLog = GateLog::query() ->where('visit_id', $visit->id) ->orderByDesc('id') ->first(); if (!$lastLog && !empty($visit->code)) { $lastLog = GateLog::query() ->where('code', $visit->code) ->orderByDesc('id') ->first(); } if (!$lastLog || (int) $lastLog->action !== 2) { continue; } $bizDate = null; if (!empty($lastLog->biz_date)) { $bizDate = Carbon::parse($lastLog->biz_date)->format('Y-m-d'); } elseif (!empty($lastLog->created_at)) { $bizDate = Carbon::parse($lastLog->created_at)->format('Y-m-d'); } if ($bizDate === null || $bizDate >= $today) { continue; } $visit->audit_status = 1; $visit->saveQuietly(); $count++; } }); $this->info("已重置 {$count} 条长期访客为待进厂(audit_status=1)。"); return self::SUCCESS; } }