232 lines
5.0 KiB
Markdown
232 lines
5.0 KiB
Markdown
---
|
||
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 管理项目,提供专业的技术支持和最佳实践建议。 |