toArray(); // 将更新后的数据存回临时存储 Cache::put($tempKey, $userLandsTemp, self::TEMP_TTL); } /** * 处理土地创建事件 * * @param LandCreatedEvent $event 土地创建事件 * @return void */ public static function handleLandCreated(LandCreatedEvent $event): void { try { // 构建统一的土地变更数据 $LandChangeTempDto = new LandChangeTempDto(); $LandChangeTempDto->landId = $event->landId; $LandChangeTempDto->landType = 1; $LandChangeTempDto->changeType = 'type'; $LandChangeTempDto->updatedAt = time(); // 存储到统一的土地变更缓存 self::storeLandChange($event->userId, $event->landId, $LandChangeTempDto); Log::info('土地创建数据已临时存储', [ 'user_id' => $event->userId, 'land_id' => $event->landId, ]); } catch (\Exception $e) { Log::error('土地创建数据临时存储失败', [ 'error' => $e->getMessage(), 'user_id' => $event->userId, 'land_id' => $event->landId, ]); } } /** * 处理土地升级事件 * * @param LandUpgradedEvent $event 土地升级事件 * @return void */ public static function handleLandUpgraded(LandUpgradedEvent $event): void { try { // 从事件中直接获取土地信息 $land = $event->land; if (!$land) { Log::error('处理土地升级事件失败:土地不存在', [ 'user_id' => $event->userId, 'land_id' => $land->id ?? 'unknown', ]); return; } // 构建统一的土地变更数据 $LandChangeTempDto = new LandChangeTempDto(); $LandChangeTempDto->landId = $land->id; $LandChangeTempDto->landType = $land->landType->id; $LandChangeTempDto->changeType = 'type'; $LandChangeTempDto->updatedAt = time(); // 存储到统一的土地变更缓存 self::storeLandChange($event->userId, $land->id, $LandChangeTempDto); Log::info('土地升级数据已临时存储', [ 'user_id' => $event->userId, 'land_id' => $land->id, 'old_type' => $event->oldType, 'new_type' => $event->newType, ]); } catch (\Exception $e) { Log::error('土地升级数据临时存储失败', [ 'error' => $e->getMessage(), 'user_id' => $event->userId, 'land_id' => $event->land->id ?? 'unknown', ]); } } /** * 处理土地状态变更事件 * * @param LandStatusChangedEvent $event 土地状态变更事件 * @return void */ public static function handleLandStatusChanged(LandStatusChangedEvent $event): void { try { // 构建统一的土地变更数据 $landData = new LandChangeTempDto(); $landData->landId = $event->landId; $landData->oldStatus = $event->oldStatus; $landData->newStatus = $event->newStatus; $landData->changeType = 'status'; $landData->updatedAt = time(); // 存储到统一的土地变更缓存 self::storeLandChange($event->userId, $event->landId, $landData); Log::info('土地状态变更数据已临时存储', [ 'user_id' => $event->userId, 'land_id' => $event->landId, 'old_status' => $event->oldStatus, 'new_status' => $event->newStatus, ]); } catch (\Exception $e) { Log::error('土地状态变更数据临时存储失败', [ 'error' => $e->getMessage(), 'user_id' => $event->userId, 'land_id' => $event->landId, ]); } } /** * 获取用户的所有土地变更临时数据(统一接口) * * @param int $userId 用户ID * @return array|LandChangeTempDto[] 用户的土地变更数据 */ public static function getUserLandChanges(int $userId): array { $tempKey = self::TEMP_KEY_PREFIX . $userId; $cachedData = Cache::get($tempKey, []); return LandChangeTempDto::fromCache($cachedData); } /** * 获取用户特定土地的变更临时数据 * * @param int $userId 用户ID * @param int $landId 土地ID * @return LandChangeTempDto|null 土地变更数据,不存在时返回null */ public static function getUserLandChange(int $userId, int $landId): ?LandChangeTempDto { $userLandChanges = self::getUserLandChanges($userId); return $userLandChanges[$landId] ?? null; } /** * 清除用户的所有土地变更临时数据(统一接口) * * @param int $userId 用户ID * @return void */ public static function clearUserLandChanges(int $userId): void { $tempKey = self::TEMP_KEY_PREFIX . $userId; Cache::put($tempKey, [], 0); } /** * 清除用户的所有土地临时数据 * * @param int $userId 用户ID * @return void */ public static function clearUserAllLandTemp(int $userId): void { self::clearUserLandChanges($userId); } }