|
|
@@ -0,0 +1,109 @@
|
|
|
+# 增加日志收集器启用/禁用配置功能
|
|
|
+
|
|
|
+## 任务概述
|
|
|
+为日志收集系统增加配置项,用于控制每个收集器的启动和关闭状态,提供更灵活的日志收集管理功能。
|
|
|
+
|
|
|
+## 完成时间
|
|
|
+2025-06-23 01:45
|
|
|
+
|
|
|
+## 实现内容
|
|
|
+
|
|
|
+### 1. 数据库配置项
|
|
|
+在 `kku_game_configs` 表中添加了5个日志收集器的开关配置项:
|
|
|
+
|
|
|
+- `user_log.collector.fund.enabled` - 资金日志收集器开关
|
|
|
+- `user_log.collector.item.enabled` - 物品日志收集器开关
|
|
|
+- `user_log.collector.farm_harvest.enabled` - 农场收获日志收集器开关
|
|
|
+- `user_log.collector.farm_upgrade.enabled` - 农场升级日志收集器开关
|
|
|
+- `user_log.collector.point.enabled` - 积分日志收集器开关
|
|
|
+
|
|
|
+所有配置项默认为启用状态(值为1),类型为布尔值。
|
|
|
+
|
|
|
+### 2. 服务层增强
|
|
|
+在 `GameConfigService` 中添加了收集器状态管理方法:
|
|
|
+
|
|
|
+- `isCollectorEnabled(string $collectorName): bool` - 检查指定收集器是否启用
|
|
|
+- `getCollectorStates(): array` - 获取所有收集器的启用状态
|
|
|
+- `setCollectorStates(array $states): bool` - 批量设置收集器启用状态
|
|
|
+
|
|
|
+在 `GameConfigLogic` 中添加了:
|
|
|
+- `setBool(string $key, bool $value): bool` - 设置布尔值配置
|
|
|
+
|
|
|
+### 3. 收集器管理器改进
|
|
|
+修改 `UserLogCollectorManager` 类:
|
|
|
+
|
|
|
+- 在 `collectAll()` 方法中增加收集器启用状态检查
|
|
|
+- 在 `collectByName()` 方法中增加收集器启用状态检查
|
|
|
+- 在 `getCollectorsInfo()` 方法中增加启用状态信息
|
|
|
+- 禁用的收集器会被跳过执行,状态标记为 'disabled'
|
|
|
+
|
|
|
+### 4. 命令行界面优化
|
|
|
+修改 `CollectUserLogsCommand` 类:
|
|
|
+
|
|
|
+- 在收集器信息显示中增加启用/禁用状态标识
|
|
|
+- 在执行结果显示中区分成功、失败、禁用三种状态
|
|
|
+- 为禁用的收集器提供友好的提示信息
|
|
|
+
|
|
|
+### 5. 后台管理界面
|
|
|
+通过现有的 `GameSystemConfigController` 可以:
|
|
|
+
|
|
|
+- 查看所有日志收集器的配置项
|
|
|
+- 编辑收集器的启用/禁用状态
|
|
|
+- 实时生效,支持动态控制
|
|
|
+
|
|
|
+## 功能特点
|
|
|
+
|
|
|
+1. **灵活控制**:可以单独控制每个收集器的启用/禁用状态
|
|
|
+2. **实时生效**:配置修改后立即生效,无需重启服务
|
|
|
+3. **友好界面**:命令行和后台管理界面都有清晰的状态显示
|
|
|
+4. **向后兼容**:默认所有收集器都是启用状态,不影响现有功能
|
|
|
+5. **批量操作**:支持批量设置多个收集器的状态
|
|
|
+
|
|
|
+## 使用方法
|
|
|
+
|
|
|
+### 命令行查看状态
|
|
|
+```bash
|
|
|
+php artisan game:collect-user-logs --info
|
|
|
+```
|
|
|
+
|
|
|
+### 后台管理
|
|
|
+访问:http://kku_laravel.local.gd/admin/game-system-configs
|
|
|
+搜索 "user_log.collector" 可以找到所有收集器配置项
|
|
|
+
|
|
|
+### 代码中使用
|
|
|
+```php
|
|
|
+// 检查单个收集器状态
|
|
|
+$enabled = GameConfigService::isCollectorEnabled('fund');
|
|
|
+
|
|
|
+// 获取所有收集器状态
|
|
|
+$states = GameConfigService::getCollectorStates();
|
|
|
+
|
|
|
+// 批量设置收集器状态
|
|
|
+GameConfigService::setCollectorStates([
|
|
|
+ 'fund' => true,
|
|
|
+ 'item' => false,
|
|
|
+ 'point' => true
|
|
|
+]);
|
|
|
+```
|
|
|
+
|
|
|
+## 测试验证
|
|
|
+
|
|
|
+1. ✅ 配置项正确添加到数据库
|
|
|
+2. ✅ 后台管理界面正常显示和编辑
|
|
|
+3. ✅ 命令行正确显示收集器状态
|
|
|
+4. ✅ 禁用的收集器被正确跳过
|
|
|
+5. ✅ 配置修改实时生效
|
|
|
+
|
|
|
+## 技术细节
|
|
|
+
|
|
|
+- 使用游戏配置系统的缓存机制,性能良好
|
|
|
+- 遵循项目的命名规范和架构设计
|
|
|
+- 添加了完整的中文注释
|
|
|
+- 保持了代码的一致性和可维护性
|
|
|
+
|
|
|
+## 影响范围
|
|
|
+
|
|
|
+- 新增配置项,不影响现有数据
|
|
|
+- 增强了日志收集系统的可控性
|
|
|
+- 为运维提供了更灵活的管理工具
|
|
|
+- 所有收集器默认启用,保持向后兼容
|