主题
商城项目需求与架构
整本教程贯穿一个主线项目:"小而全"的商城系统。它覆盖了企业项目最典型的业务:用户、商品、购物车、订单。麻雀虽小,五脏俱全。
1. 需求背景
我们要做一个在线商城,模拟真实电商的核心闭环:
注册登录 → 浏览商品 → 加购 → 下单 → 支付(模拟)→ 查看订单2. 功能模块
前台(用户端)
- 用户模块:注册、登录(JWT)、个人信息
- 商品模块:商品列表(分页/关键词搜索/分类筛选)、商品详情
- 购物车模块:加入购物车、修改数量、删除、清空
- 订单模块:提交订单、订单列表、订单详情、取消订单
后台(管理端,可选进阶)
- 商品管理:上架 / 下架 / 库存维护
- 订单管理:发货 / 订单状态流转
- 分类管理
新手先把前台五件事完整跑通,后台管理作为进阶练习。
3. 角色与权限
| 角色 | 能力 |
|---|---|
| 游客 | 浏览商品、查看详情 |
| 注册用户 | + 加购、下单、查看自己的订单 |
| 管理员 | + 管理商品与订单 |
4. 核心数据实体
用户 User ──┬──< 购物车 CartItem(属于用户,指向商品)
└──< 订单 Order ──< 订单明细 OrderItem ──> 商品 Product
商品 Product ──> 分类 CategoryUser用户Category商品分类Product商品(含库存 stock、价格 price、主图 image)CartItem购物车条目Order订单主表(订单号、总金额、状态、收货信息)OrderItem订单明细(快照商品信息,防止商品改名/下架影响历史订单)
5. 技术架构
mermaid
flowchart TB
subgraph Front[前端 - 双实现]
V[Vue 3 端<br/>Element Plus]
R[React 端<br/>Ant Design]
end
subgraph Back[后端]
API[Spring Boot 3 REST API]
AUTH[JWT 认证]
M[MyBatis-Plus]
end
subgraph Data[数据层]
DB[(MySQL 8)]
end
subgraph Ops[部署层]
D[Docker]
N[Nginx]
end
V --> API
R --> API
API --> M --> DB
N --> V
N --> R6. API 设计概览(RESTful)
| 方法 | 路径 | 说明 | 鉴权 |
|---|---|---|---|
| POST | /api/auth/register | 注册 | 公开 |
| POST | /api/auth/login | 登录,返回 token | 公开 |
| GET | /api/product/list | 商品分页查询 | 公开 |
| GET | /api/product/ | 商品详情 | 公开 |
| GET | /api/cart | 我的购物车 | 登录 |
| POST | /api/cart | 加入购物车 | 登录 |
| POST | /api/order | 提交订单 | 登录 |
| GET | /api/order/list | 我的订单 | 登录 |
这是需求文档的"骨架"
真实企业里,需求会先写成 PRD(产品需求文档),再拆出接口文档。本教程把每一步都展开讲,跟着做即可。