'测试', 'operation_desc' => '测试插件基础记录功能', 'user_id' => 1, 'user_nickname' => '测试用户', 'data_type' => 'test', 'data_id' => '001' ]); echo $result ? "✅ 基础记录成功\n" : "❌ 基础记录失败\n"; } catch (Exception $e) { echo "❌ 基础记录异常: " . $e->getMessage() . "\n"; } echo "\n"; // 测试2: 自动记录功能 echo "测试2: 自动记录功能\n"; echo "--------------------\n"; try { $result = RecorderService::autoRecord([ 'operation_type' => '自动测试', 'operation_desc' => '测试插件自动记录功能', 'data_type' => 'test', 'data_id' => '002', 'extra_data' => ['test' => true, 'timestamp' => time()] ]); echo $result ? "✅ 自动记录成功\n" : "❌ 自动记录失败\n"; } catch (Exception $e) { echo "❌ 自动记录异常: " . $e->getMessage() . "\n"; } echo "\n"; // 测试3: 批量记录功能 echo "测试3: 批量记录功能\n"; echo "--------------------\n"; try { $records = [ [ 'operation_type' => '批量测试1', 'operation_desc' => '批量记录测试1', 'user_id' => 1, 'user_nickname' => '测试用户', 'data_type' => 'batch_test', 'data_id' => 'b001' ], [ 'operation_type' => '批量测试2', 'operation_desc' => '批量记录测试2', 'user_id' => 1, 'user_nickname' => '测试用户', 'data_type' => 'batch_test', 'data_id' => 'b002' ], [ 'operation_type' => '批量测试3', 'operation_desc' => '批量记录测试3', 'user_id' => 1, 'user_nickname' => '测试用户', 'data_type' => 'batch_test', 'data_id' => 'b003' ] ]; $result = RecorderService::batchRecord($records); echo $result ? "✅ 批量记录成功\n" : "❌ 批量记录失败\n"; } catch (Exception $e) { echo "❌ 批量记录异常: " . $e->getMessage() . "\n"; } echo "\n"; // 测试4: 查询功能 echo "测试4: 查询功能\n"; echo "---------------\n"; try { // 查询最近的记录 $recentRecords = RecorderService::query(['limit' => 5]); echo "📊 查询到 " . count($recentRecords['data']) . " 条最近记录\n"; foreach ($recentRecords['data'] as $record) { echo " - {$record['operation_type']}: {$record['operation_desc']} ({$record['created_at']})\n"; } // 按用户查询 $userRecords = RecorderService::getUserRecords(1, ['limit' => 3]); echo "📊 查询到用户1的 " . count($userRecords['data']) . " 条记录\n"; // 按数据类型查询 $dataRecords = RecorderService::getDataRecords('test'); echo "📊 查询到test类型的 " . count($dataRecords['data']) . " 条记录\n"; } catch (Exception $e) { echo "❌ 查询异常: " . $e->getMessage() . "\n"; } echo "\n"; // 测试5: 统计功能 echo "测试5: 统计功能\n"; echo "---------------\n"; try { $stats = RecorderService::getStats(); echo "📈 统计信息:\n"; echo " - 总记录数: " . $stats['total_count'] . "\n"; echo " - 操作类型统计:\n"; foreach ($stats['type_stats'] as $typeStat) { echo " * {$typeStat['operation_type']}: {$typeStat['count']} 次\n"; } echo " - 用户操作统计 (Top 5):\n"; foreach (array_slice($stats['user_stats'], 0, 5) as $userStat) { echo " * {$userStat['user_nickname']} (ID:{$userStat['user_id']}): {$userStat['count']} 次\n"; } } catch (Exception $e) { echo "❌ 统计异常: " . $e->getMessage() . "\n"; } echo "\n"; // 测试6: 视图辅助功能 echo "测试6: 视图辅助功能\n"; echo "-------------------\n"; try { // 测试获取记录数据 $viewRecords = ViewHelper::getRecords(['limit' => 3]); echo "🎨 视图辅助获取到 " . count($viewRecords) . " 条记录\n"; // 测试渲染功能(输出HTML长度作为测试) $listHtml = ViewHelper::renderList(['limit' => 2], ['theme' => 'default']); echo "🎨 默认列表HTML长度: " . strlen($listHtml) . " 字符\n"; $cardHtml = ViewHelper::renderList(['limit' => 2], ['theme' => 'card']); echo "🎨 卡片列表HTML长度: " . strlen($cardHtml) . " 字符\n"; $timelineHtml = ViewHelper::renderTimeline(['limit' => 2]); echo "🎨 时间线HTML长度: " . strlen($timelineHtml) . " 字符\n"; if (!empty($viewRecords)) { $itemHtml = ViewHelper::renderItem($viewRecords[0]); echo "🎨 单项HTML长度: " . strlen($itemHtml) . " 字符\n"; } } catch (Exception $e) { echo "❌ 视图辅助异常: " . $e->getMessage() . "\n"; } echo "\n"; // 测试7: 配置测试 echo "测试7: 配置测试\n"; echo "---------------\n"; try { $config = RecorderService::getConfig(); echo "⚙️ 插件配置信息:\n"; echo " - 启用状态: " . ($config['enabled'] ? '已启用' : '已禁用') . "\n"; echo " - 自动记录: " . ($config['auto_record']['enabled'] ? '已启用' : '已禁用') . "\n"; echo " - 记录保留天数: " . $config['retention_days'] . " 天\n"; echo " - 默认显示主题: " . $config['view']['theme'] . "\n"; } catch (Exception $e) { echo "❌ 配置测试异常: " . $e->getMessage() . "\n"; } echo "\n"; // 测试8: 数据验证 echo "测试8: 数据验证\n"; echo "---------------\n"; // 测试必填字段验证 try { $result = RecorderService::record([ // 缺少必填字段 operation_type 'operation_desc' => '测试数据验证' ]); echo "❌ 数据验证失败 - 应该抛出异常但没有\n"; } catch (Exception $e) { echo "✅ 数据验证正常 - 正确检测到必填字段缺失\n"; } // 测试空操作描述 try { $result = RecorderService::record([ 'operation_type' => '验证测试', // 缺少必填字段 operation_desc ]); echo "❌ 数据验证失败 - 应该抛出异常但没有\n"; } catch (Exception $e) { echo "✅ 数据验证正常 - 正确检测到操作描述缺失\n"; } echo "\n"; echo "=== 测试完成 ===\n"; echo "✅ 所有测试已执行完毕\n"; echo "📝 请查看上述输出结果,确认各项功能是否正常\n"; echo "💡 如有异常,请检查数据库连接和表结构是否正确\n\n"; // 输出一些调试信息 echo "调试信息:\n"; echo "- 当前时间: " . date('Y-m-d H:i:s') . "\n"; echo "- PHP版本: " . PHP_VERSION . "\n"; echo "- 内存使用: " . round(memory_get_usage() / 1024 / 1024, 2) . " MB\n"; echo "\n"; echo "🎉 插件测试脚本执行完成!\n"; echo "📖 更多使用方法请参考 README.md 文件\n"; ?>