原创

基于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 核心业务逻辑说明

  1. 下单流程:用户从购物车或商品详情页点击“立即购买” → 选择收货地址 → 确认订单 → 支付(扣减用户余额,减少商品库存,生成订单记录,状态为“已支付”)。若余额不足则提示充值。
  2. 订单状态流转
    • 用户支付后 → “已支付”
    • 管理员发货 → “已发货”
    • 用户确认收货 → “已完成”
    • 用户申请退款/退货 → “已退款”
    • 用户未支付取消 → “已取消”
  3. 评论限制:用户只有完成订单(状态为“已完成”)后才能对对应图书发表评论,避免恶意刷评。
  4. 推荐算法:在 TushuxinxiController 中实现了协同过滤风格的简单推荐(autoSort2),根据用户历史购买记录的图书分类推荐同类图书。
  5. 权限控制:后端通过自定义 AuthorizationInterceptor 拦截器验证 Token,前端通过 menu.jsutils.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. 部分截图

img1
img2
img3
img4
img5
img6
img7
img8
img9
img10
img11
img12
img13
img14
img15
img16
img17
img18
img19
img20
img21
img22
img23
img24
img25
img26
img27

7. 项目总结

本项目是一个功能完备的 B2C 图书电子商务网站,涵盖商品展示、用户认证、购物车、订单支付、物流跟踪、售后处理、内容管理(资讯、客服)等电商核心环节。技术上采用了主流 Spring Boot + MyBatis Plus + MySQL 后端架构,前端分离为 Vue 管理端和 Layui 用户端,兼顾开发效率与用户体验。

通过分析提供的全部源码和数据库脚本,可以发现以下亮点:

  • 业务逻辑完整:从用户注册登录,到浏览图书、加入购物车、下单支付、收货评价,再到管理员发货、退款处理,形成闭环。
  • 安全控制合理:使用 Token 拦截器验证请求,前端按钮权限通过菜单配置动态控制,防止越权操作。
  • 个性化推荐:基于用户历史购买分类的简单协同过滤算法,提高了商品曝光率。
  • 响应式设计:用户前台采用 Layui 和 CSS 媒体查询,支持不同屏幕尺寸。

自助获取:https://fifteen.xiaobias.com/source/201

正文到此结束
本文目录