userId; // 获取当前用户的物品变更缓存 $userItemsCache = Cache::get($cacheKey, []); // 构建物品变更数据 $itemData = [ 'item_id' => $event->itemId, 'instance_id' => $event->instanceId, 'old_quantity' => $event->oldQuantity, 'new_quantity' => $event->newQuantity, 'change_amount' => $event->changeAmount, 'user_item_id' => $event->userItemId, 'updated_at' => time(), ]; // 使用物品ID作为键,实现同一物品多次变更的数据覆盖 $userItemsCache[$event->itemId] = $itemData; // dump($userItemsCache); // 将更新后的数据存回缓存 Cache::put($cacheKey, $userItemsCache, self::CACHE_TTL); Log::info('物品变更数据已缓存', [ 'user_id' => $event->userId, 'item_id' => $event->itemId, 'change_amount' => $event->changeAmount, ]); } catch (\Exception $e) { Log::error('物品变更数据缓存失败', [ 'error' => $e->getMessage(), 'user_id' => $event->userId, 'item_id' => $event->itemId, ]); } } /** * 获取用户的物品变更缓存 * * @param int $userId 用户ID * @return array 用户的物品变更数据 */ public static function getUserItemChanges(int $userId): array { $cacheKey = self::CACHE_KEY_PREFIX . $userId; return Cache::get($cacheKey, []); } /** * 获取用户特定物品的变更缓存 * * @param int $userId 用户ID * @param int $itemId 物品ID * @return array|null 物品变更数据,不存在时返回null */ public static function getUserItemChange(int $userId, int $itemId): ?array { $userItemChanges = self::getUserItemChanges($userId); return $userItemChanges[$itemId] ?? null; } /** * 清除用户的物品变更缓存 * * @param int $userId 用户ID * @return void */ public static function clearUserItemChanges(int $userId): void { $cacheKey = self::CACHE_KEY_PREFIX . $userId; Cache::put($cacheKey, [], 0); } }