苍穹外卖

2026-08-15 02:19:08
行业:外卖跑腿
载体:网站、小程序
技术:Lombok、MyBatis、Spring Boot、Redis

业务和功能介绍

背景:
外卖是餐饮行业最高频的消费场景之一,典型形态是"商家管理端 + 用户点餐小程序"双端协同。本课程实战项目以美团外卖类平台为业务蓝本,从 0 到 1 搭建一套完整的外卖点餐系统。
目标:
业务目标:打通“用户点餐 → 微信支付 → 商家接单 → 派送完成”的完整交易闭环,并为商家提供经营数据统计能力;
技术目标:用企业主流技术栈(Spring Boot + MyBatis + Redis + MySQL)完整实现一个单体后端,覆盖鉴权、缓存、支付、实时消息、定时任务、报表导出等典型后端场景。
软件功能、核心功能模块介绍
系统分两端,后端共 18 个 Controller、70 个 REST 接口:
|端 | 模块 | 功能点 |
|管理端(Web 后台) | 员工管理 | 登录、增删改查、启用/禁用
|分类管理 | 菜品/套餐分类的增删改查、启停 |
|菜品管理 | 菜品 + 多口味维护、图片上传、上下架 |
|套餐管理 | 套餐 + 包含菜品维护、上下架 |
|订单管理 | 接单、拒单、取消、派送、完成 |
|数据统计 | 营业额统计、用户统计、订单统计、销量 Top10、运营数据 Excel 导出 |
|工作台 | 今日营业额/有效订单/完成率/客单价/新增用户、订单/菜品/套餐总览 |
|店铺设置 | 营业/打烊状态切换 |
|用户端(微信小程序) | 用户模块 | 微信授权登录(新用户自动注册) |
|点餐模块 | 分类/菜品/套餐浏览、购物车 |
|地址管理 | 收货地址增删改查、默认地址 |
业务流程、功能路径描述:
1、核心链路:用户点餐下单支付(功能路径最完整的一条)
小程序授权登录(code → openid → 自动注册 → 签发JWT)
→ 浏览菜品/套餐(按分类+口味,列表走Redis缓存)
→ 加入购物车
→ 提交订单(校验地址、购物车非空、店铺营业状态,多表写入走事务)
→ 调微信支付下单(API V3,返回拉起支付参数)
→ 用户完成支付
→ 微信服务器回调 /notify/paySuccess(验签解密)
→ 订单状态:待付款 → 待接单,WebSocket推送商家端"来单提醒"
→ 商家接单 → 派送 → 完成
(旁路:待付款超15分钟,定时任务每分钟扫描自动取消)
2、商家经营链路:
登录工作台查看今日核心指标(营业额/有效订单/完成率/客单价/新增用户)
→ 数据统计页查看任意起止日期的营业额/用户/订单趋势、销量Top10
→ 一键导出最近30天运营数据Excel报表
3、菜品上架链路:
上传图片(OSS,UUID重命名) → 维护分类/口味/价格/售卖状态
→ 上下架后清理Redis中对应分类的菜品缓存,避免C端读到旧数据

项目实现

我独立完成了"苍穹外卖"后端全部模块。这是一个模拟真实外卖业务的点餐系统,分管理端和用户端两端。管理端给商家用,包括员工管理、菜品/套餐管理、订单管理,以及工作台和数据统计——支持营业额、用户、订单、销量 Top10 四类统计图表和 Excel 报表导出;用户端是微信小程序,包括微信登录、菜品浏览、购物车、下单微信支付、历史订单。后端用 Spring Boot 4.0.5 + MyBatis + MySQL + Redis 搭建,三个 Maven 模块分层开发,共 18 个 Controller、70 个接口、约 6000 行代码。核心交易链路是:微信支付回调成功后,通过 WebSocket 给商家端推送来单提醒;超时未支付订单由定时任务自动取消;菜品列表用 Redis 缓存。我印象比较深的坑有三个:统计接口的逐日查询性能问题、支付回调的本地调试问题、以及 Redis 缓存一致性问题,下面可以展开讲。
1、统计接口的查询性能(N+1 问题)
坑:营业额/用户/订单统计需要按天返回曲线数据,逐日循环查询意味着查 30 天要发 60 次 SQL,天数越多接口越慢。
方案:抽象出 `sumByMap`/`countByMap` 动态 SQL(Map 参数 + `` 动态条件),一套 SQL 同时服务工作台和统计模块;销量 Top10 用 `order_detail JOIN orders + GROUP BY + LIMIT` 一条 SQL 完成。改进方向:用 `DATE(order_time) GROUP BY` 一次查出每日数据,查询次数可从 O(天数) 降到 1 次。

2、微信支付回调本地无法调试
坑:微信支付成功后微信服务器要回调我们的接口,但本地 localhost 微信访问不到,开发阶段无法闭环调试。
方案:用 cpolar 内网穿透把本地服务映射成公网 https 回调地址,配置到 `notifyUrl`;回调接口用微信支付 SDK 完成验签解密,更新订单状态后通过 WebSocket 实时推送给商家端。

3、Redis 缓存一致性问题
坑:C 端菜品列表按分类缓存到 Redis,管理端新增/删除/修改菜品后,C 端仍读到旧数据。
方案:管理端菜品变更后,按 `dish_*` 的 key 模式删除对应缓存,下次查询重建;店铺营业状态读写都走 Redis,保证管理端切换后 C 端立即生效。


示例图片视频


gg
30天前活跃
方向: 后端-Java、人工智能-AI应用开发、
交付率:100.00%
相似推荐
恒康营销之星
工作描述:apicloud开发,实现h5页面打包生成混合app,使用echart 构建各类报表、调用apicloud模块实现二维码扫描二维码查询库存、授权平台实现app权限的管控 运用技术: 1、基于DIV+CSS实现页面布局和highchart 显示图表的展示 2、基于apicloud原生模块和jquery实现数据的绑定和交互 3、apicloud封装的模块、apicloudStudio实现无线同步、浏览器上调试页面、在手机上同步app功能、 4、基于git 代码管理, 5、采用云编译打包生成apk文件和ios 的ipa,熟悉ios 上线打包和生成ios 证书等。
跨境电商多端
跨境电商商城与货舱仓储管理小程序,面向跨境买家与仓库管理人员。包含商城首页、商品、购物车、拼团、实名认证、钱包支付、推广海报;货舱模块完成仓储业务管理,支持系统消息推送;配套后台实现发票开具、首页配置、分销售后管理,构建完整跨境电商交易闭环。
京尔思 B2B 全链路系统
包含客户小程序、工厂协同平台、权限管理后台三套子系统。覆盖产品定制、配方解析、合同签署、多工厂报价生产、企业认证、开票完整业务。后台实现角色菜单权限管控、订单物流、支付凭证管理,统一表单校验、异常拦截,服务上下游客户与工厂协同办公。
某汽车品牌官方商城与新零售运营中台
1、立项背景和目标 面对汽车行业新零售模式的兴起,某汽车品牌亟需一套能够同时支撑“整车直销”与“车品零售”的综合性业务底座。本项目作为广本新零售与直销业务的核心中台,旨在打通线上营销获客与线下门店交付的业务壁垒,构建一套高可用、支持高并发的大型电商与客资运营中台,最终实现精准营销引流与财务清算的全面数字化。 2、软件功能、核心功能模块的介绍系统由面向 C 端的移动端应用矩阵与面向 B 端的多租户管理后台组成。核心模块涵盖: 混合订单管理中心:兼容并支撑整车直销(订金/尾款/门店交付)与车品零售(物流发货)两套完全异构的业务流。 统一支付网关:无缝对接并封装微信、支付宝、民生及中金支付等多种支付渠道。 多租户渠道管控系统:支持上游供应商、特约店(4S)与二网店的库存调度与复杂财务清算。 企微直营客资闭环:深度接入企业微信 API,将线上线索无缝连接至线下销售终端。 3、业务流程、功能路径描述 核心业务路径如下:C 端用户在小程序或 APP 访问由“千人千面”动态组件渲染的营销页面,参与爆款车抢购或车品秒杀;下单后,系统根据商品类型触发底层的混合订单状态机,通过统一网关完成支付收口;随后,“企微直营”模块将线上购车线索精准路由分发给对应的线下销售顾问,形成私域跟进流转的业务闭环;交易彻底完成后,B 端系统自动进行跨租户的库存调度与财务清算。
quick_server
1、背景和目标:对企业所有服务请求进行轻量级安全和速度优化,减轻服务器的并发压力。 2、quick_server系统,不依赖外部引用,即插即用,主要用来进行极速快捷安全的http请求。大大减轻服务器的并发压力。轻松实现高并发场景下极速快捷安全的http请求。
帮助文档   Copyright @ 2021-2024 程聚宝 | 浙ICP备2021014372号
人工客服