logic = new UrsRelationCacheLogic(); } /** * 测试为特定用户生成缓存 */ public function testGenerateCacheForUser(int $ursUserId): array { echo "开始为URS用户 {$ursUserId} 生成关系缓存...\n"; try { $result = $this->logic->generateUserRelationCache($ursUserId); if ($result) { // 查询生成的缓存数据 $caches = UrsUserRelationCache::where('urs_user_id', $ursUserId)->get(); echo "缓存生成成功!生成了 " . $caches->count() . " 条缓存记录:\n"; foreach ($caches as $cache) { echo sprintf( "- 深度%d: URS用户%d -> URS用户%d (农场用户%d -> 农场用户%d)\n", $cache->depth, $cache->urs_user_id, $cache->urs_related_user_id, $cache->user_id, $cache->related_user_id ); } return [ 'success' => true, 'cache_count' => $caches->count(), 'caches' => $caches->toArray() ]; } else { echo "缓存生成失败!\n"; return ['success' => false, 'error' => '生成失败']; } } catch (\Exception $e) { echo "缓存生成异常: " . $e->getMessage() . "\n"; return ['success' => false, 'error' => $e->getMessage()]; } } /** * 测试检查缓存完整性 */ public function testCheckIntegrity(): array { echo "开始检查URS关系缓存完整性...\n"; try { $result = $this->logic->checkRelationCacheIntegrity(); if (isset($result['error'])) { echo "检查失败: " . $result['error'] . "\n"; return $result; } echo "检查结果:\n"; echo "- 总用户数: " . $result['total_users'] . "\n"; echo "- 有缓存的用户数: " . $result['users_with_cache'] . "\n"; echo "- 缺失缓存的用户数: " . $result['missing_users'] . "\n"; echo "- 循环推荐关系数: " . $result['circular_relations'] . "\n"; echo "- 孤立缓存数: " . $result['orphaned_caches'] . "\n"; return $result; } catch (\Exception $e) { echo "检查异常: " . $e->getMessage() . "\n"; return ['error' => $e->getMessage()]; } } /** * 测试批量生成缓存 */ public function testBatchGenerate(array $ursUserIds): array { echo "开始批量生成缓存,用户数量: " . count($ursUserIds) . "\n"; $results = []; $successCount = 0; $failCount = 0; foreach ($ursUserIds as $ursUserId) { try { $result = $this->logic->generateUserRelationCache($ursUserId); if ($result) { $successCount++; echo "✓ URS用户 {$ursUserId} 缓存生成成功\n"; } else { $failCount++; echo "✗ URS用户 {$ursUserId} 缓存生成失败\n"; } $results[$ursUserId] = $result; } catch (\Exception $e) { $failCount++; echo "✗ URS用户 {$ursUserId} 缓存生成异常: " . $e->getMessage() . "\n"; $results[$ursUserId] = false; } } echo "\n批量生成完成:\n"; echo "- 成功: {$successCount}\n"; echo "- 失败: {$failCount}\n"; echo "- 总计: " . count($ursUserIds) . "\n"; return [ 'success' => $successCount, 'fail' => $failCount, 'total' => count($ursUserIds), 'results' => $results ]; } /** * 清理所有缓存数据 */ public function clearAllCache(): void { echo "清理所有缓存数据...\n"; $count = UrsUserRelationCache::count(); UrsUserRelationCache::truncate(); echo "已清理 {$count} 条缓存记录\n"; } /** * 查看缓存统计信息 */ public function showCacheStats(): array { $totalCaches = UrsUserRelationCache::count(); $directCaches = UrsUserRelationCache::where('level', 1)->count(); $indirectCaches = UrsUserRelationCache::where('level', 2)->count(); $usersWithCache = UrsUserRelationCache::distinct('urs_user_id')->count(); $stats = [ 'total_caches' => $totalCaches, 'direct_caches' => $directCaches, 'indirect_caches' => $indirectCaches, 'users_with_cache' => $usersWithCache ]; echo "缓存统计信息:\n"; echo "- 总缓存记录数: {$totalCaches}\n"; echo "- 直接关系缓存: {$directCaches}\n"; echo "- 间接关系缓存: {$indirectCaches}\n"; echo "- 有缓存的用户数: {$usersWithCache}\n"; return $stats; } }