temId); Cache::put($statusKey, ['state' => 'running', 'at' => now()->toDateTimeString()], now()->addMinutes(30)); $result = $service->importTemRowToQuestions($this->temId); if (! empty($result['ok'])) { Cache::put($statusKey, [ 'state' => 'done', 'question_id' => $result['question_id'] ?? null, 'message' => $result['message'] ?? '已入库', 'at' => now()->toDateTimeString(), ], now()->addMinutes(30)); $this->bumpPageVersion(); return; } Cache::put($statusKey, [ 'state' => 'failed', 'message' => $result['message'] ?? '入库失败', 'at' => now()->toDateTimeString(), ], now()->addMinutes(30)); } public function failed(\Throwable $e): void { Cache::put(self::statusKey($this->temId), [ 'state' => 'failed', 'message' => $e->getMessage(), 'at' => now()->toDateTimeString(), ], now()->addMinutes(30)); Log::error('ImportTemToQuestionsJob failed', ['tem_id' => $this->temId, 'error' => $e->getMessage()]); } public static function statusKey(int $temId): string { return "qtr:import:tem:{$temId}"; } private function bumpPageVersion(): void { if (! $this->userId || ! $this->kpCode) { return; } $versionKey = "qtr:version:u{$this->userId}:kp{$this->kpCode}"; Cache::add($versionKey, 1, now()->addHours(2)); Cache::increment($versionKey); } }