Skip to content

CGW516/dianCan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

dianCan

点餐 开发一个覆盖 Web、小程序、多平台外卖订单、App 的“全渠道点菜系统”,技术选型要同时满足:

  1. 多端代码可复用(降低人月成本)
  2. 性能与体验可接受(尤其 C 端小程序/APP)
  3. 团队招人/维护成本可控
  4. 能无缝接入外卖开放平台(美团、京东、饿了么、抖音)
  5. 后期可横向扩展(门店数、并发、营销玩法、BI)

把主流方案放在一张表先对比:

维度 Node.js (Nest/Egg) + TS Java (Spring Cloud) Go (Kratos/Go-Zero) .NET 8 (ASP.NET Core) Python (FastAPI)
人力池 最大 中等 少(国内) 中大
外卖 SDK 官方只给 Java,Node 需自签 官方完整 需自签 需自签 需自签
开发效率 中高 最高
并发/延迟 中高 最高
微服务生态 完善 最完善 完善 完善 一般
多云 K8s 支持 最好 最好 一般
代码共享(前后端) TS 可共享类型

结论一句话:
“业务团队 < 20 人、想最快上线、后期逐步演进” → Node.js + TypeScript 全栈;
“业务团队 > 20 人、并发/稳定/外卖官方 SDK 优先” → Java + Spring Cloud 为主,Node 做 BFF 辅助。

下面给出两套可直接落地的“技术栈清单”,按场景自取。


一、轻量级方案:Node.js + TypeScript 全栈(“小步快跑”)

  1. 后端(所有管理端 + 开放接口)

    • 主框架:NestJS(自带 IoC、GraphQL、微服务、Socket、队列封装)
    • 数据库:PostgreSQL 主库 + Redis 缓存/队列 + MongoDB(可选,存日志/菜品草稿)
    • 外卖对接:
      – 美团/饿了么/京东/抖音 官方只有 Java SDK,用 Node 自己写“签名 + 解密”工具(各平台 1 天能撸完),封装成 @takeaway/maituan-sdk 这类私有库。
    • 订单归集:建一张 out_order 表,字段统一(平台、平台单号、门店、状态、json 扩展),写完sdk 后直接写表并发 MQ。
    • 实时推单:Socket.io 或 NestJS 自带的 ws,给 Web 管理端、App 管理端做“来单提醒”。
    • 任务调度:BullMQ(Redis) 做“自动接单/取消/打印小票”。
    • 部署:Docker + GitLab CI + 腾讯云 TKE(或阿里云 ACK),自动滚动发布。
  2. Web 管理端(老板/店长后台)

    • React + Ant Design Pro + TypeScript(与后端共用类型定义,src/shared 目录 link 进去)。
    • 权限:NestJS 端用 passport + jwt,前端 route 权限颗粒度到“按钮”。
    • 打印:调用浏览器原生 ESC/POS,或使用“云打印”代理(易联云、飞鹅)—— 他们提供 JS/TS 包。
  3. Web 顾客点单(H5 / 扫码)

    • 同一套 React 项目,多配一个 mobile 入口,用 vant-react 组件库;PWA 离线缓存。
    • 支付:微信 H5、支付宝 H5;微信里自动走 JSAPI。
  4. 微信小程序

    • Taro 3 + React + TypeScript(与上面 H5 业务逻辑 90% 复用)。
    • 支付:微信官方 JSAPI。
    • 订阅消息:下单/出餐/完成 3 个模板,后台 NestJS 直接发。
  5. App(顾客端 + 骑手端)

    • React-Native 0.72 + Expo Modules + TypeScript;
    • 业务代码继续复用 Taro 的 ducks 目录(Redux Toolkit);
    • 推送:Expo Push / 极光;
    • 支付:微信/支付宝原生 SDK,用 expo-custom-native-module 桥接。
  6. 代码复用率

    • 类型定义:前后端共用 ⇒ 0 歧义。
    • 工具函数:价格格式化、门店距离、购物车计算,全放 shared。
    • 同构:Taro 写一套页面 → 微信小程 + H5 + React-Native 三端;只有导航条/支付/地图需写平台差分。
  7. 成本 & 时间

    • 3 个后端 + 3 个前端(含小程序+RN)可 3 个月出 MVP(单门店)。
    • 外卖对接 1 人 2 周可完成 4 平台。
    • 后续横向加门店,只需加数据库分片 + 容器副本。

二、企业级方案:Java + Spring Cloud + Node BFF(“稳 + 高并发”)

  1. 后端核心

    • Spring Boot 3 / Spring Cloud Alibaba
    • Nacos 注册配置、Sentinel 流控、Seata 分布式事务
    • MyBatis-Plus + ShardingSphere 分库分表(按门店/订单)
    • 消息:RocketMQ(阿里云的 ONS)
    • 链路:SkyWalking
    • 外卖对接:直接用官方 Java SDK,加统一适配层 takeaway-adapter,输出标准 OrderDTO。
  2. BFF(Backend-for-Frontend)

    • 用 Node.js + NestJS 仅做“聚合/裁剪/兜底缓存”,供 H5/小程序/App 调用;
    • 好处:前端仍然 TS 全栈,无需等后端排期;
    • 高并发场景下,BFF 可水平扩,Java 专心做事务。
  3. Web 管理端

    • React + Ant Design Pro;
    • 调用 BFF,BFF 再调 Java 微服务。
  4. 小程序 / App / 外卖逻辑

    • 与方案一相同,Taro + React-Native 复用;
    • 只是接口域名换成 BFF。
  5. 部署

    • Java 服务容器化(JDK 17 + Alpine)K8s;
    • BFF 同样容器;
    • 网关:Spring Cloud Gateway 或 Higress;
    • 灰度:Argo Rollouts。

三、如何二选一?

  1. 团队现状

    • 如果核心骨干只会 JS/TS,且 6 个月内要上线,选方案一;
    • 如果已有 Java 老兵、并发要求 > 1w qps、需要完整 Seata 事务,选方案二。
  2. 外卖对接紧迫度

    • 美团/饿了么审核很严,官方 Java SDK 能省 1~2 周,Java 方案占优;
    • 但 Node 自签也不复杂,只是 HMAC/MD5+AES,开源社区有现成例子。
  3. 后续玩法

    • 营销、会员、BI、数据大屏,都会不断改需求;TS 全栈改得快;
    • 若需要多租户、分账、财务对账,Spring Cloud 的分布式事务更稳。

四、小结(给老板一句话版)

“先验证市场” → Node.js + TS 一把梭,3 个月上线,外卖平台全接;
“要抗 10w+ 订单、财务合规、多人协作” → Java 微服务做主,Node 只当 BFF,让前端继续 TS 飞起。

About

点餐

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors