227 lines
6.8 KiB
Markdown
227 lines
6.8 KiB
Markdown
# 站内信功能完成情况检查
|
||
|
||
## ✅ 已完成部分
|
||
|
||
### 1. 数据库层
|
||
- ✅ **SQMessage** 表创建脚本
|
||
- ✅ **SQMessageRead** 表创建脚本
|
||
- ✅ 索引已创建
|
||
- 📄 文件位置:`数据库\SqlServer\创建站内信表.sql`
|
||
|
||
### 2. Model 实体层
|
||
- ✅ `CoreCms.Net.Model\Entities\SQ\SQMessage.cs`
|
||
- ✅ `CoreCms.Net.Model\Entities\SQ\SQMessageRead.cs`
|
||
|
||
### 3. Repository 仓储层
|
||
- ✅ `ISQMessageRepository` 接口
|
||
- ✅ `SQMessageRepository` 实现
|
||
- ✅ `ISQMessageReadRepository` 接口
|
||
- ✅ `SQMessageReadRepository` 实现
|
||
- ✅ `GetUserReadMessageIdsAsync` 方法已添加
|
||
|
||
### 4. Services 服务层
|
||
- ✅ `ISQMessageServices` 接口
|
||
- ✅ `SQMessageServices` 实现
|
||
- ✅ 前端API方法(GetUserMessageListAsync, GetUnreadCountAsync, MarkAllAsReadAsync)
|
||
- ✅ 后台管理方法(SendToUserAsync, SendToUsersAsync, SendBroadcastAsync, SendSystemNoticeAsync)
|
||
|
||
### 5. Controller 控制器层
|
||
- ✅ 前端API:`SQController` 新增3个接口
|
||
- `GET /api/SQ/GetMessageList`
|
||
- `GET /api/SQ/GetUnreadCount`
|
||
- `POST /api/SQ/MarkAllAsRead`
|
||
- ✅ 后台管理:`SQMessageController` 完整实现
|
||
- 消息列表、创建、编辑、删除
|
||
- 发送给指定用户、多个用户、全员广播
|
||
- 用户列表查询
|
||
|
||
### 6. 业务集成
|
||
- ✅ `SQReservationsServices` 已集成站内信通知
|
||
- ✅ 组局成功时自动发送站内信
|
||
- ✅ 组局失败时自动发送站内信
|
||
|
||
---
|
||
|
||
## ⚠️ 需要注意的事项
|
||
|
||
### 1. 接口路径差异
|
||
**需求文档说明**:`/api/user/GetMessageList`
|
||
**实际实现路径**:`/api/SQ/GetMessageList`
|
||
|
||
**建议**:
|
||
- 使用实际路径 `/api/SQ/GetMessageList` 即可,功能完全一致
|
||
- 前端对接时注意使用正确的路径
|
||
|
||
### 2. 依赖注入配置
|
||
**状态**:❓ 需要检查是否已自动注入
|
||
|
||
**需要确认**:
|
||
在项目启动配置文件中是否包含了以下服务注入:
|
||
```csharp
|
||
services.AddScoped<ISQMessageRepository, SQMessageRepository>();
|
||
services.AddScoped<ISQMessageReadRepository, SQMessageReadRepository>();
|
||
services.AddScoped<ISQMessageServices, SQMessageServices>();
|
||
```
|
||
|
||
**检查位置**:
|
||
- `Startup.cs` 或 `Program.cs`
|
||
- 通常在 `AutofacModuleRegister.cs` 中自动扫描注入
|
||
|
||
---
|
||
|
||
## 🔧 需要完成的工作
|
||
|
||
### 1. 数据库部署 ⭐ 必须
|
||
- [ ] **执行SQL脚本**:运行 `数据库\SqlServer\创建站内信表.sql`
|
||
- [ ] **验证表创建**:确认 `SQMessage` 和 `SQMessageRead` 表已创建
|
||
- [ ] **验证索引**:确认索引已正确创建
|
||
|
||
### 2. 依赖注入检查 ⭐ 必须
|
||
- [ ] 检查 `SQMessageServices` 是否已注入到容器
|
||
- [ ] 检查 `SQMessageReadRepository` 是否已注入
|
||
- [ ] 如果使用自动扫描,确认命名空间已包含
|
||
|
||
### 3. 后台页面开发 ✅ 已完成
|
||
**说明**:后台控制器和前端页面已全部完成
|
||
|
||
**已创建的页面**:
|
||
- ✅ 消息列表页:`wwwroot\views\sq\sqmessage\index.html`
|
||
- ✅ 消息详情页:`wwwroot\views\sq\sqmessage\details.html`
|
||
- ✅ 发送广播页:`wwwroot\views\sq\sqmessage\broadcast.html`
|
||
|
||
**功能说明**:
|
||
- 消息列表:支持筛选(ID、标题、目标类型、消息类型)、查看详情、删除、批量删除
|
||
- 发送全员广播:填写标题和内容,一键发送给所有用户
|
||
- 消息详情:查看消息的完整信息
|
||
|
||
### 4. 前端对接 ⭐ 必须
|
||
- [ ] 在前端 `common/server/interface/` 添加接口定义
|
||
- [ ] 修改接口路径为 `/api/SQ/GetMessageList`(不是 `/api/user/GetMessageList`)
|
||
- [ ] 实现消息列表页面
|
||
- [ ] 实现未读数量红点显示
|
||
- [ ] 实现进入列表自动标记已读
|
||
|
||
### 5. 测试验证 ⭐ 必须
|
||
- [ ] **功能测试**
|
||
- [ ] 发送指定用户消息
|
||
- [ ] 发送全员广播消息
|
||
- [ ] 查看消息列表
|
||
- [ ] 标记已读功能
|
||
- [ ] 未读数量统计
|
||
- [ ] 组局成功/失败自动通知
|
||
- [ ] **边界测试**
|
||
- [ ] 用户无消息时的显示
|
||
- [ ] 全员广播到大量用户
|
||
- [ ] 并发标记已读
|
||
- [ ] 分页加载
|
||
|
||
---
|
||
|
||
## 📋 快速部署步骤
|
||
|
||
### 第一步:数据库部署
|
||
```sql
|
||
-- 执行以下SQL脚本
|
||
-- 位置:数据库\SqlServer\创建站内信表.sql
|
||
-- 内容:创建 SQMessage 和 SQMessageRead 表
|
||
```
|
||
|
||
### 第二步:检查依赖注入
|
||
查看 `AutofacModuleRegister.cs` 或启动配置文件,确认服务已注入。
|
||
|
||
如果未自动注入,手动添加:
|
||
```csharp
|
||
builder.RegisterType<SQMessageRepository>().As<ISQMessageRepository>().InstancePerLifetimeScope();
|
||
builder.RegisterType<SQMessageReadRepository>().As<ISQMessageReadRepository>().InstancePerLifetimeScope();
|
||
builder.RegisterType<SQMessageServices>().As<ISQMessageServices>().InstancePerLifetimeScope();
|
||
```
|
||
|
||
### 第三步:重启应用
|
||
```bash
|
||
# 停止应用
|
||
# 重新编译
|
||
# 启动应用
|
||
```
|
||
|
||
### 第四步:测试接口
|
||
使用 Postman 测试以下接口:
|
||
|
||
**1. 发送全员广播**
|
||
```
|
||
POST /api/SQMessage/SendBroadcast
|
||
Authorization: Bearer {token}
|
||
|
||
{
|
||
"title": "系统测试通知",
|
||
"content": "这是一条测试消息",
|
||
"senderId": 1
|
||
}
|
||
```
|
||
|
||
**2. 获取消息列表**
|
||
```
|
||
GET /api/SQ/GetMessageList?pageIndex=1&pageSize=20&messageType=0
|
||
Authorization: Bearer {token}
|
||
```
|
||
|
||
**3. 获取未读数量**
|
||
```
|
||
GET /api/SQ/GetUnreadCount
|
||
Authorization: Bearer {token}
|
||
```
|
||
|
||
### 第五步:前端对接
|
||
修改前端接口路径,完成页面开发和测试。
|
||
|
||
---
|
||
|
||
## 🎯 核心功能验证清单
|
||
|
||
| 功能点 | 验证方法 | 状态 |
|
||
|-------|---------|------|
|
||
| 数据库表创建 | 查询表是否存在 | ⏳ 待执行 |
|
||
| 发送指定用户消息 | 调用 SendToUser 接口 | ⏳ 待测试 |
|
||
| 发送全员广播 | 调用 SendBroadcast 接口 | ⏳ 待测试 |
|
||
| 获取消息列表 | 调用 GetMessageList 接口 | ⏳ 待测试 |
|
||
| 获取未读数量 | 调用 GetUnreadCount 接口 | ⏳ 待测试 |
|
||
| 标记全部已读 | 调用 MarkAllAsRead 接口 | ⏳ 待测试 |
|
||
| 组局成功通知 | 完成组局后查看消息 | ⏳ 待测试 |
|
||
| 组局失败通知 | 组局失败后查看消息 | ⏳ 待测试 |
|
||
|
||
---
|
||
|
||
## 💡 关键提示
|
||
|
||
1. **数据库脚本必须先执行**:否则应用启动时会报表不存在的错误
|
||
2. **接口路径注意**:实际路径是 `/api/SQ/` 不是 `/api/user/`
|
||
3. **依赖注入**:如果使用自动扫描,应该已经注入;如果手动注入,需要添加配置
|
||
4. **后台页面非必须**:可以直接使用 API 测试工具管理消息
|
||
5. **前端对接是关键**:后端功能完整,前端对接后即可使用
|
||
|
||
---
|
||
|
||
## 📞 问题排查
|
||
|
||
如果遇到问题,按以下顺序检查:
|
||
|
||
1. ✅ 数据库表是否创建成功
|
||
2. ✅ 应用是否重新编译并启动
|
||
3. ✅ 依赖注入是否正确配置
|
||
4. ✅ 用户是否已登录(Token是否有效)
|
||
5. ✅ 接口路径是否正确
|
||
6. ✅ 参数格式是否正确
|
||
|
||
---
|
||
|
||
## 总结
|
||
|
||
**代码开发进度**:✅ 100% 完成
|
||
**部署验证进度**:⏳ 0% 完成
|
||
**前端对接进度**:⏳ 0% 完成
|
||
|
||
**下一步行动**:
|
||
1. 执行数据库脚本
|
||
2. 验证依赖注入
|
||
3. 测试接口功能
|
||
4. 前端对接开发
|