--- name: "webman-openim-admin" description: "专门针对基于webman的openim管理项目,使用了think-cache、think-orm、think-template、redis-queue、webman/event、tinywan/validate等依赖。用于项目的开发、维护和问题排查。" --- # Webman OpenIM Admin 技能 ## 项目概述 本技能专门针对基于 webman 框架开发的 OpenIM 管理项目,该项目使用了以下核心依赖: - **think-cache**: 缓存管理 - **think-orm**: 数据库 ORM 框架 - **think-template**: 模板引擎 - **redis-queue**: Redis 队列管理 - **webman/event**: 事件系统 - **tinywan/validate**: 数据验证 ## 功能特性 ### 1. 项目结构分析 - 分析项目目录结构 - 识别核心模块和文件 - 理解依赖关系 ### 2. 代码开发与维护 - 基于现有代码风格和模式进行开发 - 提供符合项目规范的代码建议 - 帮助排查和修复常见问题 ### 3. 依赖管理 - 分析 composer.json 配置 - 提供依赖版本建议 - 处理依赖冲突问题 ### 4. 数据库操作 - 基于 think-orm 的数据库操作指导 - 模型定义和关系映射 - 数据库迁移和种子数据管理 ### 5. 缓存策略 - 基于 think-cache 的缓存配置和使用 - 缓存优化建议 - 缓存一致性管理 ### 6. 队列管理 - redis-queue 的配置和使用 - 队列任务的创建和监控 - 队列性能优化 ### 7. 事件系统 - webman/event 的配置和使用 - 事件监听和触发 - 事件驱动架构设计 ### 8. 数据验证 - tinywan/validate 的配置和使用 - 表单验证规则定义 - 自定义验证规则开发 ## 触发条件 当用户需要: - 了解项目结构和依赖 - 开发新功能或修改现有功能 - 排查项目中的问题 - 优化项目性能 - 配置或调整项目依赖 - 进行数据库相关操作 - 实现缓存策略 - 管理队列任务 - 使用事件系统 - 进行数据验证 ## 使用示例 ### 示例 1: 分析项目结构 ```bash # 查看项目目录结构 ls -la # 查看 composer.json 了解依赖 cat composer.json ``` ### 示例 2: 数据库操作 ```php // 使用 think-orm 进行数据库查询 use think\Model; class User extends Model { protected $table = 'user'; } // 查询用户列表 $users = User::where('status', 1)->select(); ``` ### 示例 3: 缓存使用 ```php // 使用 think-cache use think\facade\Cache; // 设置缓存 Cache::set('key', 'value', 3600); // 获取缓存 $value = Cache::get('key'); ``` ### 示例 4: 队列任务 ```php // 使用 redis-queue use support\Queue; // 推送任务 Queue::push('App\\Jobs\\SendEmail', ['email' => 'user@example.com']); ``` ### 示例 5: 事件监听 ```php // 使用 webman/event use support\Event; // 监听事件 Event::listen('user.registered', function ($user) { // 处理用户注册事件 }); // 触发事件 Event::trigger('user.registered', $user); ``` ### 示例 6: 数据验证 ```php // 使用 tinywan/validate use Tinywan\Validate\Validate; $validate = new Validate(); $validate->rule([ 'name' => 'require|max:25', 'email' => 'require|email', ]); if (!$validate->check($data)) { return $validate->getError(); } ``` ## 项目配置建议 1. **composer.json** 配置: - 保持依赖版本的稳定性 - 定期更新依赖以获取安全补丁 2. **数据库配置**: - 优化数据库连接池设置 - 合理使用索引 - 定期备份数据库 3. **缓存配置**: - 根据业务场景选择合适的缓存策略 - 设置合理的缓存过期时间 - 考虑缓存预热机制 4. **队列配置**: - 合理设置队列 worker 数量 - 监控队列任务执行状态 - 实现失败重试机制 5. **性能优化**: - 启用 OPcache - 优化数据库查询 - 使用合适的缓存策略 - 合理设计事件系统 ## 常见问题与解决方案 1. **依赖冲突**: - 检查 composer.json 中的版本约束 - 使用 `composer update` 解决版本冲突 2. **数据库连接问题**: - 检查数据库配置文件 - 确认数据库服务是否正常运行 3. **缓存失效**: - 检查缓存配置 - 确认缓存服务是否正常 4. **队列任务失败**: - 检查队列配置 - 查看任务执行日志 - 实现失败重试机制 5. **事件不触发**: - 检查事件监听注册 - 确认事件触发代码 6. **验证失败**: - 检查验证规则 - 确认输入数据格式 ## 最佳实践 1. **代码组织**: - 遵循 PSR 代码规范 - 合理使用命名空间 - 保持代码结构清晰 2. **安全性**: - 防止 SQL 注入 - 防止 XSS 攻击 - 保护敏感信息 3. **可维护性**: - 编写清晰的注释 - 使用一致的代码风格 - 遵循设计模式 4. **性能**: - 优化数据库查询 - 合理使用缓存 - 减少不必要的计算 5. **扩展性**: - 采用模块化设计 - 依赖注入 - 接口分离 本技能旨在帮助开发者更高效地开发和维护基于 webman 的 OpenIM 管理项目,提供专业的技术支持和最佳实践建议。