本文档旨在详细说明CRMEB系统中消息通知模块的设计架构、核心功能、代码实现及开发规范,为系统开发人员提供完整的开发参考。
本文档适用于CRMEB系统开发人员、维护人员及二次开发人员,用于指导消息通知模块的开发、扩展和维护工作。
| 术语 | 解释 |
|---|---|
| 系统消息 | 存储在数据库中的站内信,通过系统内部推送 |
| 模板消息 | 包括公众号模板消息和小程序订阅消息 |
| 短信通知 | 通过第三方短信服务商发送给用户手机的消息 |
| 企业微信消息 | 发送给管理员和客服的企业微信消息 |
| 事件驱动 | 通过触发事件来处理各种通知场景 |
| 通知渠道 | 消息发送的方式,如站内信、短信、模板消息等 |
| 通知场景 | 触发通知的业务场景,如订单支付、发货等 |
系统采用事件驱动的架构设计,通过监听器统一处理各种通知事件:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 业务事件触发 │────▶│ 事件监听器 │────▶│ 通知服务处理 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 系统消息发送 │◀────│ 多渠道通知 │────▶│ 短信通知发送 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────────────┐
│ 模板消息发送 │
├─────────────────────────┤
│ - 公众号模板消息 │
│ - 小程序订阅消息 │
└─────────────────────────┘
│
▼
┌─────────────────────────┐
│ 企业微信消息发送 │
└─────────────────────────┘
消息通知服务:
NoticeService.php - 通知服务基类,用于设置和管理通知事件SystemNotificationServices.php - 系统通知配置管理类,包含各种通知场景的定义MessageSystemServices.php - 站内信服务类,处理用户站内消息的发送、查询和管理SmsService.php - 短信服务类,支持多种短信服务商TemplateMessageServices.php - 模板消息管理类,管理公众号模板消息和小程序订阅消息通知事件监听器:
NoticeListener.php - 核心事件监听器,处理各种通知事件,映射了30+种通知场景到对应的处理方法CustomNoticeListener.php - 自定义通知监听器,用于处理特殊通知场景消息相关模型:
MessageSystem.php - 系统消息模型SmsRecord.php - 短信发送记录模型SystemNotification.php - 系统通知配置模型TemplateMessage.php - 模板消息模型消息通知控制器:
SystemNotification.php - 系统通知配置控制器MessageSystem.php - 系统消息控制器Sms.php - 短信管理控制器TemplateMessage.php - 模板消息控制器消息通知路由:
| 字段名 | 数据类型 | 描述 |
|---|---|---|
| id | int(10) unsigned | 消息ID |
| uid | int(10) | 接收用户ID |
| title | varchar(100) | 消息标题 |
| content | text | 消息内容 |
| type | varchar(20) | 消息类型 |
| status | tinyint(1) | 阅读状态(0-未读,1-已读) |
| add_time | int(10) | 添加时间 |
| read_time | int(10) | 阅读时间 |
| 字段名 | 数据类型 | 描述 |
|---|---|---|
| id | int(10) unsigned | 记录ID |
| phone | varchar(20) | 接收手机号 |
| template_id | varchar(50) | 短信模板ID |
| template_param | text | 模板参数(JSON格式) |
| content | text | 短信内容 |
| status | tinyint(1) | 发送状态(0-失败,1-成功) |
| error_msg | varchar(255) | 错误信息 |
| add_time | int(10) | 发送时间 |
| 字段名 | 数据类型 | 描述 |
|---|---|---|
| id | int(10) unsigned | 配置ID |
| mark | varchar(50) | 通知标识 |
| title | varchar(100) | 通知标题 |
| scene | varchar(50) | 通知场景 |
| type | varchar(20) | 通知类型(system-系统消息,sms-短信,wechat-微信模板消息) |
| template | text | 通知模板 |
| is_open | tinyint(1) | 是否开启(0-关闭,1-开启) |
| sort | int(10) | 排序 |
| add_time | int(10) | 添加时间 |
| 字段名 | 数据类型 | 描述 |
|---|---|---|
| id | int(10) unsigned | 模板ID |
| type | varchar(20) | 模板类型(wechat-公众号,routine-小程序) |
| name | varchar(50) | 模板名称 |
| template_id | varchar(100) | 微信模板ID |
| short_key | varchar(50) | 模板短键 |
| content | text | 模板内容 |
| example | text | 模板示例 |
| status | tinyint(1) | 状态(0-禁用,1-启用) |
| add_time | int(10) | 添加时间 |
/adminapi/v1/message/system/list/adminapi/v1/message/system/send/adminapi/v1/message/sms/template/list/adminapi/v1/message/sms/send/adminapi/v1/message/template/list/adminapi/v1/message/template/send/adminapi/v1/message/notification/list/adminapi/v1/message/notification/config/api/v1/user/message/list/api/v1/user/message/read/{id}命名规范:
NoticeServicesendSystemMessagemessageContentNOTICE_SCENE_ORDER_PAY代码结构:
事件驱动:
问题:通知发送失败,如短信发送失败、模板消息发送失败 解决方案:
问题:通知发送延迟,如订单支付后很久才收到通知 解决方案:
问题:同一通知重复发送给用户 解决方案:
问题:通知模板过多,管理混乱 解决方案:
| 版本 | 更新日期 | 更新内容 | 更新人 |
|---|---|---|---|
| 1.0 | 2026-01-19 | 初始版本,包含系统消息管理、短信通知管理、模板消息管理、企业微信消息管理、通知场景配置等核心功能 | AI Assistant |
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ NoticeService │────▶│ NoticeListener │────▶│ 各种通知服务 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ SystemMessage │◀────│ MessageSystem │ │ SmsService │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────────────┐
│ TemplateMessageServices │
├─────────────────────────┤
│ - 公众号模板消息 │
│ - 小程序订阅消息 │
└─────────────────────────┘
通知流程:
1. 业务系统触发事件(如订单支付成功)
2. 事件监听器捕获事件
3. 根据事件类型查找对应的通知配置
4. 遍历配置的通知渠道
5. 调用对应服务发送通知
a. 发送系统消息
b. 发送短信通知
c. 发送模板消息
d. 发送企业微信消息
6. 记录通知发送日志
7. 返回发送结果
| 场景名称 | 描述 |
|---|---|
| order_pay | 订单支付成功 |
| order_delivery | 订单发货 |
| order_received | 订单收货 |
| order_refund | 订单退款 |
| order_price_edit | 订单改价 |
| recharge_success | 充值成功 |
| extract_success | 提现成功 |
| extract_fail | 提现失败 |
| brokerage_arrive | 佣金到账 |
| bargain_success | 砍价成功 |
| pink_success | 拼团成功 |
| pink_fail | 拼团失败 |
| user_register | 用户注册 |
| user_login | 用户登录 |
| spread_bind | 推广关系绑定 |
| 渠道名称 | 描述 |
|---|---|
| system | 系统消息(站内信) |
| sms | 短信通知 |
| 公众号模板消息 | |
| routine | 小程序订阅消息 |
| enterprise_wechat | 企业微信消息 |
提示:该文档由AI生成,仅供参考。