黑马Java第三阶段:苍穹外卖(笔记)

day01 苍穹外卖项目:项目概述与环境搭建


1. 项目概述

(1)项目背景

  • 苍穹外卖 是一款 为餐饮企业(餐厅、饭店)定制的外卖系统,包括:
    • 管理端(商家使用)
    • 用户端(消费者使用)
  • 目标
    • 提供 商家管理用户点餐 功能。
    • 提升开发经验,提高 业务分析、编码、接口设计能力

(2)功能架构

模块管理端(商家)用户端(顾客)
用户管理员工管理账号管理
订单管理订单管理历史订单、催单
商品管理菜品、分类、套餐管理商品浏览、购物车
支付功能-微信支付
地址管理-收货地址管理
数据分析数据统计-

采用前后端分离架构,商家管理后台基于 Web,用户端使用微信小程序。


2. 开发环境搭建

(1)软件开发流程

软件开发通常包括以下步骤:

  1. 需求分析(需求文档、产品原型)
  2. 系统设计(数据库设计、架构设计)
  3. 编码实现(前后端开发、单元测试)
  4. 测试阶段(编写测试用例、系统测试)
  5. 上线运维(部署上线、监控维护)

(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
  • 运行方式
    1. 下载并安装 微信开发者工具
    2. 使用 小程序代码 导入项目
    3. 配置 后端 API 地址
    4. 预览小程序功能

前端环境搭建完成后,进行 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 开发实战,构建完整的外卖系统! 🎯

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值