userId; // 获取当前用户的资金变更临时数据 $userFundsTemp = Cache::get($tempKey, []); // 构建资金变更数据 $fundData = [ 'fund_id' => $event->fundId, 'old_balance' => $event->beforeBalance, 'new_balance' => $event->afterBalance, 'change_amount' => $event->amount, 'updated_at' => time(), ]; // 使用资金类型ID作为键,实现同一资金类型多次变更的数据覆盖 $userFundsTemp[$event->fundId] = $fundData; // 将更新后的数据存回临时存储 Cache::put($tempKey, $userFundsTemp, self::TEMP_TTL); Log::info('资金变更数据已临时存储', [ 'user_id' => $event->userId, 'fund_id' => $event->fundId, 'change_amount' => $event->amount, ]); } catch (\Exception $e) { Log::error('资金变更数据临时存储失败', [ 'error' => $e->getMessage(), 'user_id' => $event->userId, 'fund_id' => $event->fundId, ]); } } /** * 获取用户的资金变更临时数据 * * @param int $userId 用户ID * @return FundChangeTempDto[] 用户的资金变更数据 */ public static function getUserFundChanges(int $userId): array { $tempKey = self::TEMP_KEY_PREFIX . $userId; $rawData = Cache::get($tempKey, []); $result = []; foreach ($rawData as $fundId => $fundData) { $result[$fundId] = FundChangeTempDto::fromArray($fundData); } return $result; } /** * 获取用户特定资金类型的变更临时数据 * * @param int $userId 用户ID * @param int $fundId 资金类型ID * @return FundChangeTempDto|null 资金变更数据,不存在时返回null */ public static function getUserFundChange(int $userId, int $fundId): ?FundChangeTempDto { $userFundChanges = self::getUserFundChanges($userId); return $userFundChanges[$fundId] ?? null; } /** * 清除用户的资金变更临时数据 * * @param int $userId 用户ID * @return void */ public static function clearUserFundChanges(int $userId): void { $tempKey = self::TEMP_KEY_PREFIX . $userId; Cache::put($tempKey, [], 0); } }