day01 苍穹外卖项目:项目概述与环境搭建
1. 项目概述
(1)项目背景
- 苍穹外卖 是一款 为餐饮企业(餐厅、饭店)定制的外卖系统,包括:
- 管理端(商家使用)
- 用户端(消费者使用)
- 目标:
- 提供 商家管理 和 用户点餐 功能。
- 提升开发经验,提高 业务分析、编码、接口设计能力。
(2)功能架构
模块 | 管理端(商家) | 用户端(顾客) |
---|---|---|
用户管理 | 员工管理 | 账号管理 |
订单管理 | 订单管理 | 历史订单、催单 |
商品管理 | 菜品、分类、套餐管理 | 商品浏览、购物车 |
支付功能 | - | 微信支付 |
地址管理 | - | 收货地址管理 |
数据分析 | 数据统计 | - |
✅ 采用前后端分离架构,商家管理后台基于 Web,用户端使用微信小程序。
2. 开发环境搭建
(1)软件开发流程
软件开发通常包括以下步骤:
- 需求分析(需求文档、产品原型)
- 系统设计(数据库设计、架构设计)
- 编码实现(前后端开发、单元测试)
- 测试阶段(编写测试用例、系统测试)
- 上线运维(部署上线、监控维护)
(2)开发环境
环境类型 | 作用 | 示例 |
---|---|---|
开发环境(Development) | 仅供开发人员使用 | 运行于本地 |
测试环境(Testing) | 提供给测试人员进行功能验证 | 内网测试服务器 |
生产环境(Production) | 线上环境,正式对外提供服务 | 云服务器(如阿里云) |
✅ 开发环境与生产环境分开,防止误操作影响正式业务。
(3)后端项目结构
苍穹外卖后端采用 Spring Boot + MyBatis + MySQL 进行开发,采用 Maven 分模块管理。
sky-project
├── sky-common # 公共模块(工具类)
├── sky-pojo # 数据传输对象(DTO、VO、Entity)
├── sky-server # 主服务模块(Controller、Service、Mapper)
└── pom.xml # Maven 配置文件
✅ 使用 sky-common
作为工具模块,提高代码复用性。
3. 前端环境搭建
(1)管理端 Web 项目
- 前端技术栈:Vue.js + ElementUI
- 运行方式:使用
nginx
进行前端服务代理
运行 nginx
cd nginx
./nginx.exe # 启动前端服务
访问 http://localhost
即可打开 管理端 Web 页面。
(2)用户端(微信小程序)
- 技术栈:微信小程序 + Node.js
- 运行方式:
- 下载并安装 微信开发者工具
- 使用 小程序代码 导入项目
- 配置 后端 API 地址
- 预览小程序功能
✅ 前端环境搭建完成后,进行 nginx
代理设置,连接后端服务。
4. 后端环境搭建
(1)后端技术栈
- Spring Boot:后端框架
- MyBatis:数据库访问层
- Redis:缓存数据,提高查询速度
- JWT:用户身份认证
- 阿里云 OSS:文件存储
- Swagger:API 文档管理
(2)后端项目构建
后端使用 Maven 进行模块化管理:
mvn clean install # 编译所有模块
mvn spring-boot:run # 运行后端服务
运行成功后,访问:
http://localhost:8080
✅ 后端使用 sky-server
作为服务端,处理 API 请求。
(3)数据库环境搭建
- 使用 MySQL 存储业务数据
- Redis 作为缓存,提高性能
- 建表语句
CREATE TABLE employee (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(255) NOT NULL
);
✅ 数据库表设计完成后,使用 MyBatis
进行数据操作。
5. 前后端联调
(1)接口测试
- 使用 Postman 或 Swagger 进行 API 调试
- 接口请求示例
POST /employee/login
{
"username": "admin",
"password": "123456"
}
响应示例
{
"code": 1,
"msg": "登录成功",
"data": { "token": "jwt-token-value" }
}
✅ API 调试完成后,前端调用后端接口,实现完整功能。
(2)Nginx 反向代理
- 问题:前端请求
http://localhost/api/employee/login
,但后端实际地址是http://localhost:8080/admin/employee/login
。 - 解决方案:使用
Nginx
进行 反向代理。
Nginx 配置
server {
listen 80;
server_name localhost;
location /api/ {
proxy_pass http://localhost:8080/admin/;
}
}
✅ Nginx 代理后,前端请求 /api/employee/login
会被转发到后端 /admin/employee/login
。
(3)负载均衡
如果后端有多个实例(集群部署),可以使用 Nginx 进行负载均衡:
upstream backend_servers {
server 192.168.1.100:8080;
server 192.168.1.101:8080;
}
server {
listen 80;
location /api/ {
proxy_pass http://backend_servers/admin/;
}
}
✅ 多个后端服务器可以同时处理请求,提高系统并发能力。
6. 安全优化
(1)用户密码加密
- 问题:数据库中存储的密码是 明文,不安全。
- 解决方案:使用 MD5 加密。
String encryptedPassword = DigestUtils.md5DigestAsHex(password.getBytes());
✅ 数据库存储加密密码,提高安全性。
7. API 文档管理
(1)使用 Swagger 生成 API 文档
Swagger 提供 可视化接口测试 功能,帮助前端开发调试 API。
依赖引入
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>
访问 API 文档
http://localhost:8080/doc.html
✅ Swagger 让接口文档更清晰,前端可直接调用 API 进行调试。
8. 总结
✅ 苍穹外卖项目采用前后端分离架构,支持 Web 端(Vue.js)+ 小程序(Node.js)+ 后端(Spring Boot)。
✅ 前后端通过 API 进行交互,使用 Swagger 生成接口文档,Nginx 反向代理。
✅ 后端采用 Spring Boot + MyBatis + MySQL + Redis + JWT
进行开发,提高性能和安全性。
🚀 掌握这些知识,即可开始 Web 开发实战,构建完整的外卖系统! 🎯