一、功能概述
冻品行业的小程序订单跟踪功能需要满足以下核心需求:
- 实时显示订单状态(待付款、待发货、运输中、已签收等)
- 冷链物流温度监控数据展示
- 预计送达时间计算
- 异常情况预警(温度异常、运输延误等)
- 物流轨迹可视化
二、基于万象源码的部署方案
1. 源码基础架构
万象源码通常提供:
- 微信小程序前端框架
- 后端API服务(Node.js/PHP等)
- 数据库设计(MySQL/MongoDB)
- 基础用户认证系统
2. 订单跟踪功能实现步骤
2.1 数据库设计扩展
```sql
-- 订单状态表
CREATE TABLE order_status (
id INT AUTO_INCREMENT PRIMARY KEY,
order_id VARCHAR(32) NOT NULL,
status VARCHAR(20) NOT NULL COMMENT 待付款/已付款/已发货/运输中/已完成/已取消,
status_time DATETIME NOT NULL,
temperature DECIMAL(5,2) COMMENT 当前温度(℃),
location VARCHAR(100) COMMENT 当前位置,
operator VARCHAR(50) COMMENT 操作人,
remark TEXT COMMENT 备注
);
-- 物流轨迹表
CREATE TABLE logistics_track (
id INT AUTO_INCREMENT PRIMARY KEY,
order_id VARCHAR(32) NOT NULL,
event_time DATETIME NOT NULL,
event_type VARCHAR(50) NOT NULL COMMENT 发货/中转/到达/签收,
location VARCHAR(100) NOT NULL,
temperature DECIMAL(5,2) COMMENT 温度记录,
operator VARCHAR(50)
);
```
2.2 后端API开发
```javascript
// 获取订单完整跟踪信息
router.get(/order/track/:orderId, async (req, res) => {
try {
const orderId = req.params.orderId;
// 获取订单基本信息
const order = await Order.findOne({ order_id: orderId });
// 获取状态变更历史
const statusHistory = await OrderStatus.find({ order_id: orderId })
.sort({ status_time: asc });
// 获取物流轨迹
const trackHistory = await LogisticsTrack.find({ order_id: orderId })
.sort({ event_time: asc });
res.json({
success: true,
data: {
order,
statusHistory,
trackHistory
}
});
} catch (error) {
res.status(500).json({ success: false, message: error.message });
}
});
```
2.3 前端实现(微信小程序)
```javascript
// pages/order/track.js
Page({
data: {
orderId: ,
orderInfo: null,
statusList: [],
trackList: [],
markers: [] // 地图标记点
},
onLoad(options) {
this.setData({ orderId: options.orderId });
this.loadOrderData();
},
async loadOrderData() {
wx.showLoading({ title: 加载中... });
try {
const res = await wx.request({
url: https://your-api-domain/order/track/ + this.data.orderId,
method: GET
});
this.setData({
orderInfo: res.data.data.order,
statusList: res.data.data.statusHistory,
trackList: res.data.data.trackHistory
});
// 处理地图标记点
this.processTrackPoints();
} catch (error) {
console.error(error);
wx.showToast({ title: 加载失败, icon: none });
} finally {
wx.hideLoading();
}
},
processTrackPoints() {
const markers = this.data.trackList.map((item, index) => ({
id: index,
latitude: item.latitude, // 需要从位置信息解析
longitude: item.longitude,
title: item.event_type,
iconPath: /images/location.png,
width: 30,
height: 30
}));
this.setData({ markers });
}
});
```
2.4 WXML模板示例
```xml
订单号: {{orderInfo.order_id}}
创建时间: {{orderInfo.create_time}}
当前状态: {{orderInfo.status}}
{{item.status_time}}
{{item.status}}
温度: {{item.temperature}}℃
{{item.event_time}}
{{item.event_type}}
{{item.location}}
温度: {{item.temperature}}℃
```
三、关键功能实现细节
1. 实时温度监控集成
- 通过IoT设备API获取实时温度数据
- 设置温度阈值报警(如高于-18℃或低于-25℃)
- 定时推送温度异常通知
2. 预计送达时间计算
```javascript
function calculateETA(order) {
// 基础运输时间(根据距离)
const baseTime = order.distance / 50; // 假设平均速度50km/h
// 考虑中转次数
const transferPenalty = order.transferCount * 2; // 每次中转增加2小时
// 考虑当前时间(避开高峰时段)
const now = new Date();
const hour = now.getHours();
let rushHourPenalty = 0;
if ((hour >= 7 && hour <= 9) || (hour >= 17 && hour <= 19)) {
rushHourPenalty = 1; // 高峰时段增加1小时
}
// 计算总时间(小时)
const totalHours = baseTime + transferPenalty + rushHourPenalty;
// 添加到当前时间
const eta = new Date(now.getTime() + totalHours * 3600000);
return eta;
}
```
3. 异常情况处理
- 温度异常:自动触发报警并通知相关人员
- 运输延误:根据GPS数据判断是否偏离路线或长时间静止
- 签收异常:多次派送失败后自动升级处理
四、部署与优化建议
1. 服务器部署:
- 使用云服务器(阿里云/腾讯云)部署后端服务
- 配置CDN加速静态资源
- 启用HTTPS确保数据安全
2. 性能优化:
- 对订单跟踪数据建立索引
- 实现数据分页加载
- 使用WebSocket实现实时更新(可选)
3. 测试要点:
- 模拟各种订单状态流转
- 测试温度异常场景
- 验证不同网络环境下的加载速度
- 检查地图轨迹显示的准确性
五、扩展功能建议
1. 电子签收:集成电子签名功能
2. 温度曲线图:展示运输过程中的温度变化
3. 多端同步:实现小程序、APP、PC端数据同步
4. 智能预警:基于历史数据预测潜在问题
通过以上方案,基于万象源码可以完美实现冻品小程序的订单跟踪功能,满足冷链物流的特殊需求,提升客户体验和运营效率。