一个基于 Spring Boot + Vue 的全栈电商练手项目,覆盖图书浏览、分类检索、购物车、订单、地址、登录/注册、邮件验证码等核心电商模块。
后端
- Spring Boot 2.3.1.RELEASE
- MyBatis + Druid 连接池
- PageHelper 分页插件 1.3.0
- Lombok / Hutool 工具库
- JDK 1.8
前端
- Vue 3 + TypeScript
- Vite 5 构建工具
- Pinia 状态管理
- Vue Router / Bootstrap 5.3
数据库
- MySQL 8(库名
dangdang-msj,默认端口 3306)
- 图书浏览、分类筛选、按分类分页
- 关键字搜索(
/dangdang/book/search?name=...) - 用户注册(含邮箱验证码)+ 登录 / 登出
- 购物车(基于 Session)
- 订单提交(下单 → 批量插入订单明细 → 原子扣库存,自动回滚防超卖)
- 收货地址管理(增删改查 + 默认地址)
- 模拟支付(7 种支付方式骨架,未对接真实通道)
dangdang-test/
├── src/main/java/com/cpx/dangdang/ # 后端代码(controller / service / dao / entity / util)
├── src/main/resources/
│ ├── application.yml # Spring 配置(敏感信息已脱敏)
│ ├── com/cpx/dang/mapper/ # MyBatis XML
│ ├── static/ # 前端工程(Vue + Vite)+ 旧版 JSP 前端
│ └── images/book/ # 图书封面(cXX_X.jpg 等)
├── pom.xml
└── README.md
确保本地 MySQL 8 在 3306 端口运行,库名 dangdang-msj。
仓库已脱敏 application.yml 里的 QQ 邮箱/授权码/DB 密码,运行前需补充:
方式 A · 环境变量
export DB_PASSWORD=你的MySQL密码
export MAIL_USERNAME=你的QQ邮箱
export MAIL_PASSWORD=你的QQ邮箱授权码方式 B · src/main/resources/application-local.yml(已在 .gitignore,不进库)
spring:
datasource:
password: 你的MySQL密码
mail:
username: 你的QQ邮箱
password: 你的QQ邮箱授权码
from: 你的QQ邮箱mvn spring-boot:run -o \
-Dspring-boot.run.jvmArguments="-Dserver.port=8989"cd src/main/resources/static
npm install # 已带 node_modules 可跳过
npm run dev浏览器打开 http://localhost:5173 即可。
- 本项目仅作学习/练手用,不含任何真实商品/价格/库存数据(图书初始数据已自包含 202 本)
- 支付宝/QQ 邮箱为占位配置,未对接真实支付通道,QQ 邮箱需自行填入授权码
- 本地配置
application-local.yml已在.gitignore,不会被推送到 GitHub - 旧版 JSP 前端仍保留在
src/main/resources/static/front/,与新版 Vue 前端并存
本仓库采用 MIT 协议,仅供学习交流。