Ver Fonte

feat(GameSystemConfigController): 为游戏系统配置添加高级筛选功能

- 在 GameSystemConfigController 中添加了多个筛选条件,包括分组、配置键、配置名称、启用状态、只读状态和配置类型
- 增加了重置筛选和应用筛选按钮
- 设置了每页显示数量和分页选项
- 优化了配置列表的展示效果,提高了管理员的操作便利性
AI Assistant há 6 meses atrás
pai
commit
33b0289c4b

+ 109 - 0
AiWork/2025年06月/23日0145-增加日志收集器启用禁用配置功能.md

@@ -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. ✅ 配置修改实时生效
+
+## 技术细节
+
+- 使用游戏配置系统的缓存机制,性能良好
+- 遵循项目的命名规范和架构设计
+- 添加了完整的中文注释
+- 保持了代码的一致性和可维护性
+
+## 影响范围
+
+- 新增配置项,不影响现有数据
+- 增强了日志收集系统的可控性
+- 为运维提供了更灵活的管理工具
+- 所有收集器默认启用,保持向后兼容

+ 2 - 1
AiWork/now.md

@@ -1,11 +1,12 @@
 # 当前工作状态
 
-**最后更新**: 2025年06月23日 01:32
+**最后更新**: 2025年06月23日 01:45
 
 ## 正在进行的任务
 - 无
 
 ## 最近完成的任务
+- ✅ 增加日志收集器启用/禁用配置功能(2025-06-23 01:45)
 - ✅ 重构用户日志收集器架构,消除重复MaxId获取逻辑(2025-06-23 01:32)
 - ✅ 修复用户日志收集器fund_logs进度显示问题(2025-06-23 01:21)
 - ✅ 修复用户日志收集器重复收集问题(2025-06-23 01:09)

+ 47 - 0
app/Module/Game/AdminControllers/GameSystemConfigController.php

@@ -67,12 +67,59 @@ class GameSystemConfigController extends AdminController
             $grid->column('sort_order', '排序')->sortable();
             $grid->column('updated_at', '更新时间')->sortable();
 
+            // 添加筛选器
+            $grid->filter(function (Grid\Filter $filter) {
+                // 分组筛选
+                $filter->equal('group', '分组')
+                    ->select(GameConfigGroup::getOptions())
+                    ->placeholder('选择分组');
+
+                // 配置键模糊查询
+                $filter->like('key', '配置键')
+                    ->placeholder('输入配置键关键词');
+
+                // 配置名称模糊查询
+                $filter->like('name', '配置名称')
+                    ->placeholder('输入配置名称关键词');
+
+                // 启用状态筛选
+                $filter->equal('is_enabled', '启用状态')
+                    ->select([
+                        1 => '启用',
+                        0 => '禁用'
+                    ])
+                    ->placeholder('选择启用状态');
+
+                // 只读状态筛选
+                $filter->equal('is_readonly', '只读状态')
+                    ->select([
+                        1 => '只读',
+                        0 => '可编辑'
+                    ])
+                    ->placeholder('选择只读状态');
+
+                // 配置类型筛选
+                $filter->equal('type', '配置类型')
+                    ->select(GameConfigType::getOptions())
+                    ->placeholder('选择配置类型');
+
+                // 重置按钮文本
+                $filter->resetButton('重置筛选');
+                $filter->submitButton('应用筛选');
+            });
+
             // 设置默认排序
             $grid->model()->orderBy('group')->orderBy('sort_order');
 
             // 禁用创建和删除
             $grid->disableCreateButton();
             $grid->disableBatchDelete();
+
+            // 设置每页显示数量
+            $grid->perPage(20);
+
+            // 设置分页选项
+            $grid->perPages([10, 20, 50, 100]);
         });
     }