基于SpringBoot2+vue2的图书电子商务网
温馨提示:
本文最后更新于 2026年05月28日,已超过 13 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
1. 提示
浏览全文获取资源
2. 项目简介
图书电子商务网,是一个基于 B/S 架构的在线图书销售平台。系统主要面向两类用户:管理员和普通用户(注册会员),提供图书浏览、分类检索、购物车下单、订单管理、在线客服、图书资讯、收藏评论等功能。
后端采用 Spring Boot 框架,前端分为后台管理系统(Vue + Element UI)和用户前台(Layui + HTML),数据库使用 MySQL,通过 MyBatis Plus 进行数据访问。
根据提供的数据库结构和代码文件,系统已经实现了完整的图书商品交易闭环:用户可浏览图书信息、加入购物车、生成订单、支付(模拟余额支付)、确认收货、退货退款;管理员可管理用户、图书分类、图书信息、订单、轮播图、资讯、在线客服回复等。
3. 技术栈
| 层次 | 技术/框架 | 说明 |
|---|---|---|
| 后端框架 | Spring Boot 2.2.2.RELEASE | 提供 REST API、IOC、AOP 等核心能力 |
| ORM 框架 | MyBatis Plus 2.3 | 简化数据库操作,支持分页、条件构造器 |
| 安全框架 | Apache Shiro 1.3.2 | 用户认证与权限控制(代码中未大量使用,但已引入) |
| 数据库 | MySQL 5.7 | 业务数据存储 |
| 前端(后台) | Vue 2.x + Element UI | 管理端单页面应用 |
| 前端(前台) | Layui + HTML/CSS/JS + jQuery | 用户端静态页面,采用 iframe 架构 |
| 工具库 | Hutool 4.0.12, Fastjson 1.2.8, Commons-lang3, Commons-io, POI 等 | 辅助开发、Excel 导出、JSON 处理等 |
4. 详细介绍
4.1 功能模块划分
4.1.1 用户端(前台)
图书信息模块
- 图书列表展示(支持按图书名称、作者、出版社搜索,按图书分类筛选)
- 图书详情页(显示图书名称、分类、作者、出版社、价格、库存、单次限购数量、图文简介)
- 图书收藏与取消收藏
- 图书评论(需完成订单后方可评论)
购物车与订单模块
- 加入购物车(对库存和单次购买数量做限制)
- 购物车管理(修改数量、删除商品、批量下单)
- 确认下单(选择收货地址、生成订单)
- 订单管理(未支付、已支付、已发货、已完成、已退款、已取消状态流转)
- 模拟支付(从账户余额扣款)、退款、确认收货、退货
个人中心模块
- 用户注册 / 登录(支持用户角色选择)
- 个人信息修改(头像、密码、姓名、手机、性别)
- 余额充值
- 收货地址管理(增删改查,可设默认地址)
- 我的收藏列表
- 我的订单列表
图书资讯模块
- 资讯列表展示(标题、简介、图片、时间)
- 资讯详情
在线客服模块
- 用户向管理员提问
- 实时查看管理员回复(轮询)
4.1.2 管理员端(后台)
- 用户管理:对注册用户进行增删改查
- 图书分类管理:维护图书分类(如文学小说、人文社科等)
- 图书信息管理:对图书进行新增、修改、删除、上下架(通过库存控制),并查看图书评论
- 订单管理:按订单状态(未支付、已支付、已发货、已完成、已退款、已取消)查看订单,可执行“发货”操作(填写物流信息)
- 系统管理
- 图书资讯管理(发布/编辑/删除新闻)
- 在线客服管理(回复用户提问)
- 轮播图管理(配置首页轮播图片)
- 统计功能(代码中有部分接口):按时间统计订单金额、分组统计等(未在前端完全展示,但后端提供了
/value、/group等接口)
4.2 数据库设计核心表
| 表名 | 描述 | 主要字段 |
|---|---|---|
yonghu |
用户表 | yonghuming(用户名), mima(密码), money(余额), touxiang(头像) ... |
tushuxinxi |
图书信息表 | tushumingcheng, tushufenlei, price, alllimittimes(库存), onelimittimes(单限) |
tushufenlei |
图书分类表 | tushufenlei |
orders |
订单表 | orderid, userid, goodid, status, total, address, logistics ... |
cart |
购物车表 | userid, goodid, buynumber, price |
storeup |
收藏表 | userid, refid(商品id), tablename, type |
address |
收货地址表 | userid, address, name, phone, isdefault |
news |
图书资讯表 | title, picture, content |
chat |
在线客服表 | userid, adminid, ask, reply, isreply |
config |
轮播图/系统配置表 | name, value |
discusstushuxinxi |
图书评论表 | refid(图书id), userid, content, reply |
users |
管理员表 | username, password, role |
4.3 核心业务逻辑说明
- 下单流程:用户从购物车或商品详情页点击“立即购买” → 选择收货地址 → 确认订单 → 支付(扣减用户余额,减少商品库存,生成订单记录,状态为“已支付”)。若余额不足则提示充值。
- 订单状态流转:
- 用户支付后 → “已支付”
- 管理员发货 → “已发货”
- 用户确认收货 → “已完成”
- 用户申请退款/退货 → “已退款”
- 用户未支付取消 → “已取消”
- 评论限制:用户只有完成订单(状态为“已完成”)后才能对对应图书发表评论,避免恶意刷评。
- 推荐算法:在
TushuxinxiController中实现了协同过滤风格的简单推荐(autoSort2),根据用户历史购买记录的图书分类推荐同类图书。 - 权限控制:后端通过自定义
AuthorizationInterceptor拦截器验证 Token,前端通过menu.js和utils.js中的isAuth函数控制按钮显示。
5. 部分代码
5.1 实体类示例 – 图书信息实体
// 文件位置:com/entity/TushuxinxiEntity.java
@TableName("tushuxinxi")
public class TushuxinxiEntity<T> implements Serializable {
@TableId
private Long id;
private String tushumingcheng; // 图书名称
private String tushufenlei; // 图书分类
private String tupian; // 图片
private String zuozhe; // 作者
private String chubanshe; // 出版社
private String tushujianjie; // 图书简介
private Date clicktime; // 最近点击时间
private Integer clicknum; // 点击次数
private Float price; // 价格
private Integer onelimittimes; // 单次限购数量
private Integer alllimittimes; // 库存
// getter/setter 省略
}
5.2 控制器示例 – 订单控制器(部分)
// 文件位置:com/controller/OrdersController.java
@RequestMapping("/orders")
public class OrdersController {
@Autowired
private OrdersService ordersService;
// 分页列表(管理员可见全部,普通用户仅见自己的订单)
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, OrdersEntity orders,
HttpServletRequest request){
if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
orders.setUserid((Long)request.getSession().getAttribute("userId"));
}
EntityWrapper<OrdersEntity> ew = new EntityWrapper<>();
PageUtils page = ordersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, orders), params), params));
return R.ok().put("data", page);
}
// 按值统计(例如统计各图书销售额)
@RequestMapping("/value/{xColumnName}/{yColumnName}")
public R value(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName, HttpServletRequest request) {
Map<String, Object> params = new HashMap<>();
params.put("xColumn", xColumnName);
params.put("yColumn", yColumnName);
EntityWrapper<OrdersEntity> ew = new EntityWrapper<>();
ew.in("status", new String[]{"已支付","已发货","已完成"});
List<Map<String, Object>> result = ordersService.selectValue(params, ew);
return R.ok().put("data", result);
}
}
5.3 前端购物车核心方法
// 文件位置:pages/shop-cart/list.html
buyClick() {
if(this.selectDataList.length==0) {
layer.msg(`请选择商品`, { time: 2000, icon: 5 });
return
}
localStorage.setItem('orderGoods', JSON.stringify(this.selectDataList));
window.location.href = '../shop-order/confirm.html'
}
5.4 配置文件 – 数据库连接
# application.yml 片段
spring:
datasource:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/springbootpr919?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
username: root
password: 123456
6. 部分截图



























7. 项目总结
本项目是一个功能完备的 B2C 图书电子商务网站,涵盖商品展示、用户认证、购物车、订单支付、物流跟踪、售后处理、内容管理(资讯、客服)等电商核心环节。技术上采用了主流 Spring Boot + MyBatis Plus + MySQL 后端架构,前端分离为 Vue 管理端和 Layui 用户端,兼顾开发效率与用户体验。
通过分析提供的全部源码和数据库脚本,可以发现以下亮点:
- 业务逻辑完整:从用户注册登录,到浏览图书、加入购物车、下单支付、收货评价,再到管理员发货、退款处理,形成闭环。
- 安全控制合理:使用 Token 拦截器验证请求,前端按钮权限通过菜单配置动态控制,防止越权操作。
- 个性化推荐:基于用户历史购买分类的简单协同过滤算法,提高了商品曝光率。
- 响应式设计:用户前台采用 Layui 和 CSS 媒体查询,支持不同屏幕尺寸。
正文到此结束
- 本文标签: Java Spring Boot 毕业设计
- 本文链接: https://blog.xiaobias.com/article/25
- 版权声明: 本文由十五喵原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
