| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- <?php
- namespace App\Module\UrsPromotion\Test;
- use App\Module\UrsPromotion\Logics\UrsRelationCacheLogic;
- use App\Module\UrsPromotion\Models\UrsUserRelationCache;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Log;
- /**
- * URS关系缓存测试脚本
- *
- * 用于手动测试关系缓存功能
- */
- class TestRelationCacheScript
- {
- private UrsRelationCacheLogic $logic;
- public function __construct()
- {
- $this->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;
- }
- }
|