SpringBoot 墙绘交易平台毕设:128个文件154个接口含论文,带运行截图
这是一套基于 Spring Boot 的墙绘产品展示与交易平台,自带源码+论文+数据库脚本,功能覆盖商品发布、分类浏览、购物车、订单、评价、收藏、客服聊天等完整电商链路。本文带你看清它里面有什么、怎么跑起来,并附真实运行截图。
目录
一、你是不是也这样 二、这套是什么 三、对你具体有什么用 四、怎么跑起来 五、里面有什么
一、你是不是也这样
你在做毕业设计,方向选了电子商务或者交易平台。打开 GitHub 搜一圈发现几类问题:要么太简单撑不起论文目录,要么太复杂跑不动,要么下载下来连数据库脚本都没有、连说明文档都找不到。
这套 Spring Boot 墙绘产品展示交易平台的好处是正好卡在中间。它有完整的商品浏览到购物车到订单到评价的业务流程,每个模块都有独立的增删改查接口,能写满论文功能模块章节。又没有复杂到答辩讲不明白------没有微服务、没有消息队列、不需要启动六个中间件。一个 MySQL 一个 Java 进程就能跑。
而且这套项目带了三样东西:db.sql 数据库脚本(14 张表自带 64 行种子数据)、说明文档.txt 写了前后台地址和默认账号、论文文档可以参考结构。下载下来就知道往哪敲、怎么跑、论文怎么写。
后台管理界面运行截图,左侧菜单列出全部功能模块
二、这套是什么
项目名:基于 SpringBoot 的墙绘产品展示交易平台的设计与实现
技术形态:Spring Boot 单体应用,前后端不分离------前台 HTML 页面 + 后台 Vue 页面均打包在工程内
业务领域:墙绘产品展示与交易。本质是通用 B2C 电商平台,把"墙绘"换成"水果""服装"逻辑一样
交付清单
| 交付物 | 内容 | 对毕设的意义 |
|---|---|---|
| 源码工程 | qianghuichapin 目录,128 个 Java 文件 | 可直接运行、改业务做二次开发 |
| db.sql | 14 张表建表脚本 + 64 行种子数据 | 导完库直接点着看 |
| 论文.doc | 约 137 万字节 | 可参考论文结构和模块划分 |
| 说明文档.txt | 后台地址、前台地址、默认账号 | 跑之前先看 |
规模数字(均可复现)
| 指标 | 数值 | 统计方式 |
|---|---|---|
| Java 文件数 | 128 | find src -name "*.java" \ |
| REST 接口数 | 159 | @*Mapping 注解 173 次 − 14 个类级前缀 |
| 数据表数 | 14 | CREATE TABLE 次数(db.sql) |
| 种子数据 | 13 条 INSERT / 64 行 | db.sql 含初始数据 |
| 后台 Vue 页面 | 28 个业务模块 | find admin/src/views -name "*.vue" \ |
| 前台 HTML 页面 | 36 个 | find front/pages -name "*.html" \ |
| Controller | 15 个 | ls controller/*.java \ |
本文环境版本
| 组件 | 版本 | 来源 |
|---|---|---|
| JDK | 1.8 | pom.xml |
| Spring Boot | 2.2.2.RELEASE | pom.xml parent |
| ORM | MyBatis-Plus 2.3 | pom.xml |
| 数据库 | MySQL 5.7 | application.yml |
| 后台前端 | Vue + Element UI | admin/dist/ |
| 前台前端 | HTML + Layui + Element UI | front/front/ |
系统架构
系统架构图:浏览器→Spring Boot 8080→Token拦截器→15个Controller→Service→MyBatis-Plus→MySQL
整个系统是一个 Spring Boot 单体应用。后端一个 jar 包管所有接口,后台前端是编译好的 Vue 静态文件放在 resources 里,前台前端是 HTML 页面也放在 resources 里。数据库只有 MySQL,没有 Redis、没有消息队列。
三、对你具体有什么用
1. 一个完整交易链路,论文功能模块章节能写满
核心交易流程:商品浏览 → 商品详情 → 加入购物车 → 购物车结算 → 创建订单 → 支付 → 评价。每个环节都有对应 Controller 和数据库表。
核心交易流程图:从商品浏览到评价的完整6步链路
15 个 Controller 各管一块业务,对应一张数据库表:
| Controller | 功能 | 对应表 |
|---|---|---|
| ShangpinxinxiController | 商品信息 | shangpinxinxi |
| ShangpinfenleiController | 商品分类 | shangpinfenlei |
| CartController | 购物车 | cart |
| OrdersController | 订单管理 | orders |
| ShangpinpingjiaController | 商品评价 | shangpinpingjia |
| DiscussshangpinxinxiController | 商品评论 | discussshangpinxinxi |
| StoreupController | 收藏 | storeup |
| AddressController | 收货地址 | address |
| ChatController | 客服聊天 | chat |
| NewsController | 公告资讯 | news |
| ConfigController | 系统配置 | config |
| UserController | 管理员 | users |
| YonghuController | 前台用户 | yonghu |
| FileController | 文件上传 | --- |
| CommonController | 通用接口 | --- |
功能模块图:15个Controller按业务域分为6大模块
代码的目录结构就是论文目录结构,每个模块写功能描述和对应表写一段就够写满功能模块章节。
2. 三套用户体系一个 Token 搞定
管理员和前台用户分两张表:users 和 yonghu。登录后都拿到同一个 token 表里,靠 tablename 字段区分角色。答辩被问到"怎么区分管理员和普通用户权限",token 表的 tablename 和 role 字段就是答案。
// AuthorizationInterceptor.java --- Token 鉴权
String token = request.getHeader(LOGIN_TOKEN_KEY);
TokenEntity tokenEntity = tokenService.getTokenEntity(token);
if(tokenEntity != null) {
request.getSession().setAttribute("role", tokenEntity.getRole());
request.getSession().setAttribute("tableName", tokenEntity.getTablename());
return true;
}
项目引了 Shiro 1.3.2 但代码零调用------鉴权是自己写的拦截器。论文里讲"项目自行实现了轻量级鉴权"。
3. 前台改页面不用装 Node
前台 36 个 HTML 文件配合 Layui,放在 front/front/pages/ 目录下。改页面直接改 HTML,刷新浏览器就生效。不需要 npm install、不需要 webpack 构建。
前台展示界面运行截图
4. 筛选框留空不会查出全部数据
查询用 MPUtil.likeOrEq + between + sort 三层套娃。填了值按条件查,留空自动跳过不报错。
// 三层套娃:条件→区间→排序,空值自动忽略
PageUtils page = service.queryPage(params,
MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, entity), params), params));
5. 通用审核接口,加功能改参数就行
CommonController 的 /sh/{tableName} 接口通过 URL 传表名,对任意表审核字段做修改。想给评价加审核功能,前端加按钮调接口传表名就行。
6. 数据库设计可直接抄进论文
14 张表都有 COMMENT 注释。db.sql 自带 64 行种子数据,导完库直接点着看不用造数据。
ER图:14张表分5组,标注字段中文含义和关联关系
7. 四套实体帮你隔离接口返回
每个业务表有 Entity/View/Model/VO 四套类。改数据库字段前端拿的是 View 里的字段不会跟着炸。
四、怎么跑起来
第 1 步:建库导脚本
mysql -u root -p
CREATE DATABASE qianghuichapin DEFAULT CHARSET utf8mb4;
USE qianghuichapin;
source db.sql;
db.sql 自带 64 行种子数据,包含管理员 admin/admin 和测试用户 111/111。
第 2 步:改数据源配置
# application.yml
spring.datasource.password: 你的MySQL密码 # 示例值,改成你自己的
# serverTimezone=UTC 建议改成 Asia/Shanghai
第 3 步:启动访问
cd qianghuichapin
mvn spring-boot:run
| 端 | 地址 | 账号 |
|---|---|---|
| 后台 | http://localhost:8080/qianghuichapin/admin/dist/index.html#/login | admin / admin |
| 前台 | http://localhost:8080/qianghuichapin/front/pages/login/login.html | 111 / 111 |
后台管理登录界面运行截图
后台商品信息列表运行截图,表格显示4行数据
前台商品列表运行截图
前台商品详情运行截图
五、里面有什么
技术栈清单
| 层 | 技术 | 干什么用 |
|---|---|---|
| Spring Boot 2.2.2 | 后端框架 | 跑业务接口 |
| MyBatis-Plus 2.3 | 数据层 | 省掉大部分 SQL |
| MySQL 5.7 | 数据库 | 存所有业务数据 |
| Vue + Element UI | 后台前端 | 管理员管理界面 |
| HTML + Layui | 前台前端 | 用户浏览购物界面 |
| Token 拦截器 | 鉴权 | 所有接口登录态校验 |
答辩建议(3 条)
- db.sql 自带种子数据:14 张表 + 64 行初始数据,包含管理员和测试用户。导完库直接能登录演示,不用手动插数据。
- 上传图片在 classpath 里 :文件上传落在 resources/static/upload 目录下。用
mvn clean重新打包会丢。答辩可以作为改进方向。
- 密码是明文存储:登录直接比对字符串。项目有 MD5Util 但没调用。改造思路:接上 MD5Util 或 BCrypt。
核心业务链路走读
我给你沿着代码链路理一下商品浏览到创建交易的核心流程。
前台用户打开网页后看到的商品列表走的接口是 /shangpinxinxi/list。这个接口加了 @IgnoreAuth 注解不需要登录就能访问。前端传过来的参数被拆成三部分:分页参数、商品实体参数(用户填的筛选条件)、排序参数。后端走三层套娃构造查询条件后调 Service 的 queryPage 方法拿到分页结果。
商品详情接口 /shangpinxinxi/detail/{id} 做两件事:查出商品信息返回前端展示、自增点击次数 clicknum 并更新最近点击时间 clicktime。这个浏览量统计可以写进论文讲"商品热度指标"。
加入购物车走 POST /cart/add 接口,传用户 ID、商品 ID、商品名称、购入数量(字段名 buynumber)、单价、会员价。购物车表有个 tablename 字段存商品来源表名------这个设计让购物车能跨不同商品类型表复用不用改结构。
结算链路是用户在购物车页选了商品后点结算,前端组装订单数据调 POST /orders/add。订单数据包括订单编号、用户 ID、各商品名称图片数量价格、总价格、收货地址、支付类型。注意这一步的计算发生在前端------总价格是前端算好后整体传给后端的,后端没有重算。答辩如果被问到"如果前端传来的总价和数据库价格不一致怎么办",答案是目前没做后端校验、改进方向是加后端价格重算。
订单状态流转:orders 表的 status 字段默认空字符串,支付后通过 POST /orders/update 更新为"已支付"或"已完成"。画一个从待支付→已支付→已发货→已完成的状态流转图放论文里就行。
商品评价走 POST /shangpinpingjia/add,传订单编号、商品名称、评分、评价内容、评价图片、评价日期。评价表有 sfsh 审核字段和 shhf 审核回复字段------管理员用通用审核接口 /sh/{tableName} 传表名 shangpinpingjia 就能批量改审核状态,审核通过前台才展示。
还有商品评论和评价的区别值得讲。评论 discussshangpinxinxi 表是用户在商品下方发的直接讨论帖不需要绑定订单,任何登录用户都能发。评价 shangpinpingjia 表需要绑定订单编号只有买过的人才能评价。这个区分老师可能会问到。
MyBatis-Plus 全局配置(论文可引用)
application.yml 里有一段 MyBatis-Plus 配置值得在论文里讲。主键策略 id-type 值为 1 表示用户输入 ID------主键不是自增而是代码手动设置的。字段策略 field-strategy 值为 2 表示非空判断------UPDATE 时只有非空字段才加入 SET 子句可以做部分更新。驼峰下划线转换 db-column-underline 开启------Java 驼峰命名自动转数据库下划线列名。逻辑删除 logic-delete-value 为负一------删除不是物理删而是标记字段改值,查询自动过滤。
配置表 config 只有两个字段 name 和 value。百度地图 AK、百度 AI 的 API Key 都存在这里管理员后台编辑不用改代码不用重启。论文里写"系统采用数据库存储运行时配置,支持热更新"。
配置在 application.yml 里的上传限制 max-file-size 是 10MB 超过上传失败。改完要重启才生效。
运行验证:截图实测
这套项目已经在 K8s 上实际部署跑通,下面配的截图全部来自真实运行环境。后台管理界面用 admin/admin 登录后能看到左侧菜单列出全部 15 个功能模块,商品信息列表页显示 4 条数据(含名称、分类、品牌、价格),订单列表有 1 条已完成订单。前台用 111/111 登录后首页正常展示,商品列表页有商品卡片带名称和价格,商品详情页有详情文字和价格信息。
实测过程中灌了 5 条商品测试数据(分 3 个分类:油画/壁画/涂鸦)、2 条公告资讯。管理员 admin/admin 和前台用户 111/111 均验证可登录。前台商品列表 API 返回真实数据、后台登录接口返回 token------公网链路完全打通。
截图清单:01 后台登录页、02 后台首页(模块菜单全展示)、03 后台商品信息列表(4 行数据)、04 后台订单列表、05 前台首页、06 前台商品列表、07 前台商品详情。共 7 张运行截图 + 4 张生成图表(ER 图/架构图/模块图/交易流程图)。
关键文件清单
| 文件 | 作用 |
|---|---|
| SpringbootSchemaApplication.java | 启动类 |
| AuthorizationInterceptor.java | Token 鉴权拦截器 |
| MPUtil.java | 查询条件构造工具 |
| R.java | 统一返回格式 |
| PageUtils.java | 分页工具 |
| CommonController.java | 通用接口(审核/联动/提醒) |
| OrdersController.java | 订单全流程 |
| ShangpinxinxiController.java | 商品信息全流程 |
二次开发空间
对接真实支付网关 / 加权限精细化管理 / 图片存储改对象存储 / 加全文搜索。
本文基于 qianghuichapin 源码逐文件分析,代码片段均为原文摘录,统计数字与截图均来自真实运行环境。