首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >本地化外卖平台设计方案:用户端、商户端、骑手端三端协同开发

本地化外卖平台设计方案:用户端、商户端、骑手端三端协同开发

原创
作者头像
省钱兄科技
发布于 2026-11-06 17:35:50
发布于 2026-11-06 17:35:50
1410
举报

本地化外卖平台设计方案:用户端、商户端、骑手端三端协同开发

县域、社区级的本地化外卖平台,核心难点在于用户端、商户端、骑手端三端业务协同。订单数据、履约状态、消息通知需要多端实时同步,任何一端数据不同步,都会造成漏单、配送异常等问题。搭建本地化外卖平台,不能只单独开发每个端,要重点打通三端之间的业务链路,实现下单‑接单‑派单‑配送完整闭环。

本文将从三端协同整体架构、各端核心功能、数据表、关键代码、订单流转、地图能力、支付处理、统计、技术选型、扩展方向讲解本地化外卖三端协同开发思路。

一、本地化外卖平台整体架构设计

采用前后端分离架构,用户端、商户端、骑手端共用同一套API服务层,通过消息队列+websocket实现多端消息实时推送,保证订单状态变更三端同步更新;平台管理后台负责全局配置与监控。

1. 用户端小程序

面向点餐消费者,主要能力:

  • 周边商家浏览、商品筛选搜索
  • 商品查看、规格选择、购物车管理
  • 收货地址维护、下单与在线支付
  • 订单查询,实时查看商家接单、骑手配送进度
  • 订单评价、售后退款申请
2. 商户端(小程序+PC后台)

面向本地餐饮商家,主要能力:

  • 店铺信息、营业时间、配送范围维护
  • 商品分类管理、商品上下架、库存管控
  • 新订单实时提醒、接单/拒单、确认出餐
  • 店铺营销配置,查看门店营收与订单流水
3. 骑手配送端(小程序)

面向配送人员,主要能力:

  • 上线/下线切换在线接单状态
  • 接收系统派单或者参与抢单
  • 更新取餐、送达履约状态
  • 骑手导航,收益明细、提现申请
4. 平台管理后台

平台统一管控:

  • 用户、商户、骑手账号审核管理
  • 全局订单监控,异常订单人工干预
  • 佣金比例配置、财务结算、数据统计

整体架构示意:

代码语言:javascript
复制
 用户小程序
      |
商户端 ---- API服务层 + 消息推送 ---- 管理后台
      |
骑手端
      |
MySQL + Redis + MQ消息队列

二、三端协同核心功能设计

1. 商家商品模块(商户端维护,用户端展示)

商户在商户端维护商品信息,用户端小程序读取展示,商品数据统一由后端管控。

商品数据表:

代码语言:javascript
复制
CREATE TABLE goods (
 id INT PRIMARY KEY AUTO_INCREMENT,
 shop_id INT COMMENT '所属商户ID',
 name VARCHAR(100) COMMENT '商品名称',
 image VARCHAR(255) COMMENT '商品图片',
 price DECIMAL(10,2) COMMENT '售价',
 stock INT COMMENT '库存',
 status TINYINT DEFAULT 1 COMMENT '1上架 0下架'
);

商品查询接口(Node.js)

代码语言:javascript
复制
router.get('/goods/list', async(req,res)=>{
    const goods = await Goods.findAll({
        where:{
            shop_id:req.query.shopId,
            status:1
        }
    })
    res.json({
        code:200,
        data:goods
    })
})

协同说明:商户端修改商品库存、上下架,直接修改数据库,用户端刷新即可获取最新商品数据。

三、购物车、订单生成与三端消息联动

用户端加入购物车提交订单,支付成功之后,后端发送消息通知商户端新订单提醒;商户接单后,订单流入调度模块推送给骑手端。

购物车金额计算函数:

代码语言:javascript
复制
function calculateCartAmount(cart){
    let total = 0;
    cart.forEach(item=>{
        total += item.price * item.number;
    })
    return total;
}

创建订单并且推送消息示例:

代码语言:javascript
复制
async function createOrder(userId,cart,shopId,deliveryFee){
    const goodsAmount = calculateCartAmount(cart);
    const payAmount = goodsAmount + deliveryFee;
    const order = await Order.create({
        user_id:userId,
        shop_id:shopId,
        goods_amount:goodsAmount,
        delivery_fee:deliveryFee,
        pay_amount:payAmount,
        status:'待支付'
    })
    //支付成功后推送消息给商户端,提醒有新订单
    await mqProducer.send("order-new-topic",JSON.stringify(order));
    return order;
}

三端协同订单完整状态流转:

代码语言:javascript
复制
【用户端】提交订单→待支付
 ↓用户完成支付
【用户端】状态:已支付 →【商户端】收到新订单提醒
 ↓商户端接单
【商户端】状态:已接单 →【调度服务】分配骑手 →【骑手端】收到订单推送
 ↓骑手端取餐
【骑手端】状态:配送中 →【用户端】同步看到配送中
 ↓骑手端确认送达
【骑手端】状态:已完成 →【用户端、商户端】同步更新订单完成

四、骑手端履约状态管理

骑手端修改订单履约状态,后端更新数据库,同时推送事件,把最新状态同步给用户端和商户端,实现三端数据协同。

订单状态常量:

代码语言:javascript
复制
const orderStatus={
    WAIT_PAY:1,     //待支付
    PAID:2,         //已支付
    SHOP_ACCEPT:3,  //商户已接单
    DELIVERING:4,   //配送中
    FINISH:5        //订单完成
}

骑手更新配送状态接口:

代码语言:javascript
复制
router.post('/rider/updateOrderStatus',async(req,res)=>{
    const {orderId,status,riderId}=req.body;
    const orderInfo = await Order.findByPk(orderId);
    //校验订单属于当前骑手
    if(orderInfo.rider_id !== riderId){
        return res.json({code:500,message:"无权操作该订单"})
    }
    await Order.update({status:status},{where:{id:orderId}});
    //推送状态变更事件,同步更新用户端、商户端页面
    await mqProducer.send("order-status-change",JSON.stringify({orderId,status}));
    res.json({message:"状态更新成功"})
})

协同关键点:不要依靠前端各自修改状态;所有状态变更必须经过后端,后端统一推送事件,三端接收事件刷新UI,避免多端状态不一致。

五、地图LBS位置协同能力

  • 用户端:上报收货地址经纬度,校验商家配送范围
  • 骑手端:定时上报实时位置存入Redis
  • 用户端:订阅骑手位置,展示骑手实时位置轨迹
  • 骑手端:获取商家到收货地址路线规划

地图路线接口示例:

代码语言:javascript
复制
function getDeliveryRoute(start,end){
    return axios.get(
        "[https://api.map.com/direction](https://api.map.com/direction)",
        {
            params:{
                origin:start,
                destination:end
            }
        }
    )
}

六、微信支付三端联动处理

用户端完成支付,后端回调更新订单状态,推送消息通知商户端有新待接单订单。

支付业务流程:

代码语言:javascript
复制
【用户端】提交订单
↓
生成业务订单记录
↓
用户端调起微信支付
↓
微信异步回调后端
↓
后端更新订单状态为已支付
↓
MQ推送事件,【商户端】收到新订单提醒

支付回调示例代码:

代码语言:javascript
复制
router.post('/pay/notify', async(req,res)=>{
    let orderNo=req.body.out_trade_no;
    const order = await Order.findOne({where:{order_no:orderNo}})
    await Order.update({
        status:"已支付"
    },{
        where:{
            id:order.id
        }
    });
    //推送新订单消息给到商户端
    await mqProducer.send("order-new-topic",JSON.stringify(order));
    res.send("success");
})

七、后台数据统计功能

平台统计订单、商户营收、骑手接单数据,评估三端业务运行情况。

统计每日订单数量SQL:

代码语言:javascript
复制
SELECT 
DATE(create_time) AS day, COUNT(*) AS order_count
FROM orders
GROUP BY day;

统计商户营收:

代码语言:javascript
复制
SELECT shop_id,sum(pay_amount) AS shop_income
FROM orders
WHERE status=5
GROUP BY shop_id;

统计骑手完成订单:

代码语言:javascript
复制
SELECT rider_id,COUNT(id) AS finish_num
FROM orders
WHERE status=5
GROUP BY rider_id;

通过统计数据,运营可以发现订单流转卡点,例如商户接单慢、骑手接单量不足等三端协同问题。

八、开发技术选型

小程序端
  • 微信小程序原生开发
  • UniApp
  • Taro
后端
  • Java Spring Boot
  • Node.js
  • PHP Laravel
数据库&缓存&消息组件
  • MySQL:存储订单、商户、骑手、商品业务数据
  • Redis:缓存商品、骑手地理位置
  • MQ(RocketMQ/RabbitMQ):订单事件,实现三端消息推送
  • WebSocket:前端实时接收订单状态变更
服务部署
  • Linux服务器
  • Nginx
  • Docker

SpringBoot项目目录参考

代码语言:javascript
复制
local‑takeout‑system

├── user          用户端业务模块
├── merchant      商户端业务模块
├── rider         骑手端业务模块
├── order         订单核心模块
├── dispatch      订单调度模块
├── message‑push  多端消息推送模块
├── payment       支付模块
└── admin         平台后台

九、后期扩展方向

基础三端协同能力完成后,可迭代更多业务能力。

用户端扩展
  • 优惠券、会员、收藏店铺
  • 预订单、到店自提
商户端扩展
  • 商户营销工具:满减、折扣活动
  • 订单小票打印、门店多账号子账号
骑手端扩展
  • 接单限制设置、小休暂停接单
  • 异常上报,遇到问题提交工单给平台
平台协同增强
  • 消息多渠道兜底:websocket+小程序订阅消息,防止消息丢失
  • 三端状态不一致的补偿校验定时任务
  • 多商家入驻、平台抽佣结算
数据运营
  • 用户消费统计
  • 商户接单超时统计
  • 骑手履约、超时统计

总结

本地化外卖平台,重点不在于分别实现用户、商户、骑手三个端,而在于三端业务协同。所有订单状态变更统一由后端处理,通过消息队列、WebSocket把事件同步分发到三端,避免前端各自维护状态造成数据错乱。

开发时要完整跑通从用户下单支付、商户接单、骑手配送直到订单完成的完整业务闭环。基于这套三端协同底座,还可以继续叠加会员营销、自提、多商家结算等功能,适配县城、社区等不同本地化外卖业务场景。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 本地化外卖平台设计方案:用户端、商户端、骑手端三端协同开发
    • 一、本地化外卖平台整体架构设计
    • 二、三端协同核心功能设计
      • 1. 商家商品模块(商户端维护,用户端展示)
    • 三、购物车、订单生成与三端消息联动
    • 四、骑手端履约状态管理
    • 五、地图LBS位置协同能力
    • 六、微信支付三端联动处理
    • 七、后台数据统计功能
    • 八、开发技术选型
    • 九、后期扩展方向
    • 总结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档