mahjong_group/docs/1.0.0/历史需求/站内信功能完成情况检查.md
2026-01-01 14:39:23 +08:00

227 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 站内信功能完成情况检查
## ✅ 已完成部分
### 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. 前端对接开发