一、生鲜系统订单状态提醒核心逻辑
1. 状态流转设计
- 典型状态:待支付、已支付待发货、分拣中、配送中、已完成、异常(退单/缺货)
- 关键触发点:支付成功、仓库分拣完成、骑手接单、送达签收、用户发起退款
2. 提醒场景与渠道
| 场景 | 触发条件 | 通知方式 | 示例内容 |
|--------------------|------------------------------|------------------------|------------------------------|
| 支付成功提醒 | 用户完成支付 | 短信+APP推送 | "您的订单 12345已支付成功" |
| 发货提醒 | 仓库完成分拣 | 微信模板消息 | "商品已打包,预计18:00送达" |
| 配送异常提醒 | 骑手延迟/路线变更 | 电话+APP弹窗 | "配送延迟,预计晚30分钟到达" |
| 签收确认提醒 | 用户确认收货 | 邮件+站内信 | "感谢签收,欢迎再次光临" |
二、万象源码部署关键步骤
1. 环境准备
- 服务器:建议Linux(CentOS 7+),配置4核8G+(根据并发量调整)
- 依赖:Node.js 14+、MySQL 5.7+、Redis 5.0+、Nginx
- 域名与证书:配置HTTPS(用于微信/APP接口)
2. 源码部署流程
```bash
示例部署命令(根据实际文档调整)
git clone https://github.com/your-repo/wanxiang-生鲜系统.git
cd wanxiang-生鲜系统
npm install --production
npm run build
配置环境变量(数据库、短信API密钥等)
cp .env.example .env
vi .env
启动服务
pm2 start ecosystem.config.js
```
3. 数据库初始化
- 执行SQL脚本创建表结构(订单表、用户表、通知日志表等)
- 索引优化:对`order_status`、`user_id`等字段建立索引
三、实时通知实现方案
1. WebSocket长连接
- 适用场景:APP内实时状态推送
- 实现:
```javascript
// 客户端示例(React Native)
const socket = new WebSocket(wss://your-domain.com/ws);
socket.onmessage = (event) => {
const data = JSON.parse(event.data);
if (data.type === order_status) {
updateUI(data.orderId, data.status);
}
};
```
2. 消息队列+异步通知
- 技术栈:RabbitMQ/Kafka + 短信/邮件服务API
- 流程:
```
订单状态变更 → 写入MQ → 消费者服务 → 调用第三方通知接口 → 记录日志
```
3. 微信模板消息配置
- 步骤:
1. 在微信公众平台申请模板ID(如`OPENTM400000123`)
2. 后端调用微信API:
```python
Python示例
import requests
def send_wechat_template(openid, template_id, data):
url = "https://api.weixin.qq.com/cgi-bin/message/template/send"
params = {
"touser": openid,
"template_id": template_id,
"data": data 例如: {"first": {"value": "订单提醒"}}
}
requests.post(url, json=params, auth=(appid, secret))
```
四、部署后验证清单
1. 功能测试
- 模拟订单全流程,检查每个状态变更是否触发通知
- 边界测试:并发订单、网络异常重试
2. 性能监控
- 关键指标:通知送达率(成功/失败比例)、平均延迟
- 工具:Prometheus + Grafana监控API响应时间
3. 容灾方案
- 短信/邮件服务降级:当第三方API故障时,切换至备用通道
- 消息队列积压处理:设置消费者并发数,避免消息堆积
五、常见问题解决
1. 通知延迟
- 检查Redis连接池是否耗尽
- 优化MQ消费者并发数(建议5-10个实例)
2. 模板消息被拒
- 确认模板参数与微信平台审核版本一致
- 检查用户是否7天内与公众号有过互动
3. WebSocket断开重连
- 客户端实现心跳机制(每30秒发送ping)
- 服务端设置超时时间(如60秒无交互断开)
六、扩展建议
1. 用户偏好设置
- 在用户中心增加通知方式选择(如关闭短信仅保留APP推送)
2. 多语言支持
- 国际化配置:将通知模板抽离为JSON文件,按语言码加载
3. 数据分析看板
- 统计各状态通知的点击率、转化率,优化通知话术
如需具体代码实现或某环节的详细配置,可提供以下信息进一步定制方案:
- 使用的编程语言(Java/Node.js/Python等)
- 部署环境(云服务器/容器/K8s)
- 现有通知渠道(已对接的短信平台、微信开放平台账号等)