# 饿了么 **Repository Path**: zhuyuanf/ele.me ## Basic Information - **Project Name**: 饿了么 - **Description**: 软件工程综合实践 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-31 - **Last Updated**: 2026-09-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 美味直达 · 轻量级外卖服务平台 一个基于前后端分离架构的轻量级外卖平台,覆盖 **用户点餐、商家管理、骑手配送** 三角色完整业务闭环。 * * * ## 项目简介 本项目为软件工程综合实践课程项目,采用 **TDD 测试优先** 开发流程,遵循 RESTful 接口规范,通过接口契约驱动前后端并行开发。项目完整实现需求分析、接口设计、编码开发、测试回归、部署验收全流程。 ### 核心功能 * **用户端**:注册登录、浏览店铺与商品、购物车管理、下单、取消订单、订单评分、收藏店铺 * **商家端**:注册入驻、开店/闭店、分类管理、商品管理、店铺订单、经营看板(成交订单数、销售额、热销 Top3) * **骑手端**:注册入驻、接单中心、接单、送达、退回订单池 * * * ## 技术栈 | 层次 | 技术 | | --- | --- | | 前端 | Vue 3 + Vue Router + Pinia + Element Plus + Vite | | 后端 | Spring Boot + MyBatis-Plus | | 数据库 | MySQL 8.0 | | 测试 | JUnit5 + MockMvc、Postman 接口契约测试 | | 版本管理 | Git | * * * ## 核心设计 ### 前后端分离架构 前端 Vue3 单页应用,后端 SpringBoot 提供 RESTful API,基于统一接口契约并行开发,解耦彻底、易于迭代维护。 ### 接口规范 * 统一接口前缀:`/api/v1` * 遵循 RESTful 资源风格设计 * 统一全局响应体:`{code, msg, data}` * 业务动作接口统一规范命名 ### 鉴权方案 采用 **`X-User-Id` 请求头极简鉴权**,用于身份识别,轻量高效。 ### 核心状态机 * **店铺状态**:未开业 / 营业中 / 临时歇业 / 永久闭店 * **订单状态**:待接单 / 配送中 / 已完成 / 已取消 * **商品状态**:上架 / 下架 * * * ## 项目结构 ├── backend/ # 后端 SpringBoot │ ├── src/main/java/com/example/food/ │ │ ├── common/ # 统一返回、全局异常处理 │ │ ├── config/ # 项目配置类 │ │ ├── controller/ # 控制层接口 │ │ ├── dto/ # 数据传输对象 │ │ ├── entity/ # 数据库实体 │ │ ├── mapper/ # 数据持久层 │ │ └── service/ # 业务逻辑层 │ ├── src/main/resources/ # 配置文件 │ ├── src/test/java/ # JUnit5 + MockMvc 测试 │ └── pom.xml ├── frontend/ # 前端 Vue3 + Vite │ ├── src/ │ │ ├── api/ # 接口统一封装 │ │ ├── views/ # 页面组件 │ │ ├── stores/ # Pinia 状态管理 │ │ ├── router/ # 路由配置 │ │ └── utils/ # 工具类、请求拦截器 │ ├── package.json │ └── vite.config.js ├── docs/ # 全套项目文档与SQL脚本 │ ├── schema.sql # 数据库建表语句 │ ├── seed.sql # 初始化测试数据 │ ├── 软件需求规格说明书.md │ ├── 接口契约.md │ ├── 数据库设计.md │ ├── 测试用例设计说明.md │ ├── TDD测试报告.md │ ├── 测试日志.md │ ├── 需求迭代变更记录.md │ └── 部署文档.md └── README.md * * * ## 快速开始 完整部署流程参考:**[部署文档](./docs/部署文档.md)** (**注意**:数据库导入必须带 `--default-character-set=utf8mb4`,否则中文 Windows 上会因客户端默认 gbk 编码导致导入中断,数据库只进一半数据,详见部署文档第四节。) ### 极简启动命令 # 1. 初始化数据库(schema.sql 不含建库语句,需先手动建库) mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS elm_db DEFAULT CHARSET utf8mb4;" mysql -u root -p --default-character-set=utf8mb4 elm_db < docs/schema.sql mysql -u root -p --default-character-set=utf8mb4 elm_db < docs/seed.sql # 校验(应输出 2) mysql -u root -p --default-character-set=utf8mb4 elm_db -e "SELECT COUNT(*) FROM shops;" # 2. 启动后端(端口必须保持 8080,前端 vite 代理指向此端口) cd backend mvn spring-boot:run # 3. 启动前端(5173) cd frontend npm install npm run dev 访问地址:`http://localhost:5173` ### 测试账号 密码均为 `123456`,均随 `seed.sql` 预置: | 角色 | 用户名 | 密码 | 说明 | | --- | --- | --- | --- | | 普通用户 | `yonghu` | 123456 | 登录后直接进入用户端首页 | | 商家 1 | `zhuyuanf` | 123456 | 店铺:老帅烧烤;登录后进入角色选择页 | | 商家 2 | `dundunji` | 123456 | 店铺:墩墩黄焖鸡;登录后进入角色选择页 | | 骑手 | `zhangbo` | 123456 | 登录后进入角色选择页,选"我要跑单" | | 骑手(备用) | `tianliming` | 123456 | 同上 | * * * ## 开发工程实践 本项目严格遵循规范化软件工程流程: 1. **需求先行**:完整需求规格说明,明确角色、权限、业务规则 2. **契约驱动**:前后端基于统一接口契约并行开发 3. **TDD 测试优先**:先写单元测试,再实现业务代码 4. **持续回归**:接口自动化测试保证迭代稳定性 ## 版本迭代 * **V1.0**:初稿完成,主体业务需求(用户、商家、店铺、商品分类、商品、购物车、订单核心流程) * **V1.1**:补充接口约束;业务流程补充异常分支与状态流转说明,不新增业务功能 * **V1.2**:用户注册增加手机号不可重复注册约束 * **V1.3**:登录响应新增 `isMerchant`;购物车补充 403 权限校验 * **V1.4**:新增商家注册、角色选择、个人中心、商家订单页面,补充商家端功能说明 * **V1.5**:新增骑手角色与骑手注册、接单/送达/退回订单中心;店铺新增 `NOT_OPENED` 待开业状态; 订单状态扩展为 `PENDING` / `DELIVERING` / `COMPLETED` / `CANCELLED`;新增修改店铺信息接口 * **V1.6**:新增商家经营看板、店铺收藏、订单评分,以及店铺平均评分 / 评分数量 / 收藏数量 / 热销 Top3 展示 * **V1.7**:与接口契约 v1.5 对齐:第 7 章接口概要补充商家店铺订单列表/详情与商家退回订单接口; HTTP 状态码补充 403;登录响应补充 `shopId`;商品列表 `size` 上限统一为 1-50;不新增业务功能 迭代基于原有架构扩展,无破坏性修改,架构可扩展性良好。 * * * ## 文档索引 * [软件需求规格说明书](./docs/软件需求规格说明书.md) * [接口契约文档](./docs/接口契约.md) * [数据库设计文档](./docs/数据库设计.md) * [测试用例设计说明](./docs/测试用例设计说明.md) * [TDD 测试报告](./docs/TDD测试报告.md) * [测试日志](./docs/测试日志.md) * [需求迭代变更记录](./docs/需求迭代变更记录.md) * [项目部署文档](./docs/部署文档.md) * * * ## 许可 本项目为课程实践项目,仅供学习与交流使用。