694 字
2 分钟
苍穹外卖项目结构设计
2026-04-26

1. 后端:Maven多模块划分#

后端工程是一个Maven父工程,下面聚合了三个核心子模块:

sky-take-out(父工程,统一管理依赖)
├── sky-common // 公共模块
├── sky-pojo // 实体模块
└── sky-server // 服务模块(核心业务)

公共组件,为其他模块提供通用能力。
常量类(constant)、工具类(utils)、全局异常处理(exception)、统一响应结果(result)

数据实体,定义项目中各种数据对象。
entity (对应数据库表), DTO (数据传输对象), VO (视图对象)。

核心业务,包含所有业务逻辑的实现。
Controller, Service, Mapper 接口、配置类、启动类等。

2. 核心:分层架构与职责#

层次包名核心职责关键注解/技术
控制层controller接收请求,响应数据。不处理业务逻辑,只做参数校验和数据封装。@RestController, @RequestMapping
业务层service核心业务逻辑。处理订单状态流转、计算价格、调用外部接口等。@Service, @Transactional
数据层mapper与数据库交互。封装对数据库的增删改查操作。@Mapper, MyBatis

具体的工作流程是这样的

  1. 前端发起 HTTP 请求,Nginx 将其转发至后端。
  2. Controller 层接收到请求,解析参数后,调用 Service 层的方法。
  3. Service 层处理具体业务(如判断库存、计算金额),期间会调用 Mapper 层读写数据库。
  4. 结果通过 Controller 封装成统一的 Result 对象,返回给前端。

3. 数据与交互对象#

为了在不同场景下传递数据更安全高效,sky-pojo 模块区分了三种对象:

对象类型用途使用场景
Entity (实体类)与数据库表一一对应Mapper 层的数据读写
DTO (数据传输对象)前端与 Controller 层之间传递数据新增菜品时,接收菜品信息和口味列表
VO (视图对象)Controller 层响应给前端的数据服务端处理后,返回需要展示的数据(如菜品名、分类名、价格)

4. 宏观架构分层#

从更宏观的部署角度看,项目采用了标准的分层架构:

  • 用户层:PC端管理后台(Vue.js)和微信小程序
  • 网关层:Nginx 处理静态资源负载均衡与请求转发
  • 应用层sky-server 业务模块
  • 数据层:MySQL(存持久化数据)与 Redis(存缓存、临时数据)

典型例子:订单超时自动取消功能 利用 sky-common 的常量,在 sky-server 的 Service 层通过 Spring Task 编写定时任务,去扫描并更新 Order 实体,整个过程清晰隔离了业务逻辑与数据访问。

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

苍穹外卖项目结构设计
https://blabka.me/posts/苍穹外卖的项目结构设计/
作者
Blabka
发布于
2026-04-26
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录