基于 Spring Boot 3 + Vue 3 的农产品在线销售平台设计与实现







摘要
随着城乡供应链数字化进程的推进,农产品流通逐步从线下批发与熟人交易转向线上可追踪、可评价、可复购的电子商务模式。传统农产品销售在信息透明度、交易效率、履约协同与用户信任方面普遍存在短板,具体表现为:供需匹配效率低、订单履约状态不透明、售后评价机制薄弱、农户触达消费者能力不足。针对上述问题,本文围绕"农产品在线销售"场景,设计并实现了一个基于 Spring Boot 3 与 Vue 3 的前后端分离平台,通过多角色协同机制构建覆盖"商品发布---审核上架---下单支付---发货物流---评价反馈---运营管理"的闭环业务链路。
系统后端采用 Spring Boot 3.3.8、MyBatis 与 MySQL 8 技术栈,围绕认证授权、商品管理、购物车、订单、支付回调、评价审核与后台运营统计等模块进行分层实现;前端采用 Vue 3、Vite、Pinia 与 Vue Router,面向普通用户、农户、管理员三类角色提供差异化界面与交互流程。为保障系统可用性与可维护性,本文在设计中引入统一响应封装、全局异常处理、基于 JWT 的身份认证、角色级权限校验、事务管理、数据一致性更新以及本地化图片上传能力。在订单流程上,系统实现了按农户分单、库存原子扣减、支付状态回调驱动订单流转等关键机制;在推荐能力上,系统通过"收藏偏好类别"进行轻量级个性化推荐,兼顾实现成本与业务价值。
在验证阶段,本文从功能正确性、构建可行性和流程完整性三个维度进行评估。结果表明,该系统能够稳定支撑农产品电商核心业务:前台商品浏览与下单、农户发品与销售管理、管理员审核与运营配置均可闭环完成;前后端构建过程可通过,具备部署与二次开发基础。本文的工作为中小规模农业电商平台提供了一个结构清晰、实现成本可控、可直接落地的工程化范式。
关键词:农产品电商;Spring Boot 3;Vue 3;MyBatis;JWT;前后端分离
Abstract
With the rapid digital transformation of agricultural supply chains, online channels have become an important way to improve the circulation efficiency of agricultural products. However, traditional agricultural transactions often suffer from low information transparency, weak fulfillment traceability, and insufficient trust mechanisms. To address these issues, this thesis designs and implements an online agricultural product sales platform based on Spring Boot 3 and Vue 3.
The backend is built with Spring Boot 3.3.8, MyBatis, and MySQL 8, and provides modular services including authentication, product management, cart operations, order processing, payment callback handling, review moderation, and administrative statistics. The frontend is developed with Vue 3, Vite, Pinia, and Vue Router, supporting role-based interactions for three user groups: customers, farmers, and administrators. The system adopts JWT-based authentication, role-based authorization, global exception handling, transactional consistency control, and local image uploading for practical deployment.
A complete business workflow is implemented, covering product publishing, product auditing, order checkout, payment callback simulation, shipping, receipt confirmation, and review submission. In addition, a lightweight recommendation strategy is introduced by extracting users' preferred categories from favorites. Validation results show that the platform supports major e-commerce processes and can be successfully built and deployed in a local environment, which demonstrates its practicality and maintainability for small and medium agricultural e-commerce scenarios.
Keywords: Agricultural E-commerce; Spring Boot 3; Vue 3; MyBatis; JWT; Frontend-Backend Separation
目录(建议)
- 绪论
- 相关技术与可行性分析
- 系统需求分析
- 系统总体设计
- 系统详细实现
- 系统测试与结果分析
- 总结与展望
参考文献
附录
第 1 章 绪论
1.1 研究背景
农产品流通具有"标准化程度相对较低、时效性敏感、品质感知依赖体验"的典型特征。在线上化过程中,如果平台缺乏对商品来源、审核流程、物流状态和评价反馈的完整管理,用户信任将难以建立,复购与留存也难以提升。与此同时,传统"多层中间环节"会降低农户利润空间,导致"产地收益低、终端售价高"的结构性矛盾。
在数字经济和乡村振兴协同推进的背景下,构建具备多角色协作能力的农产品交易系统具有现实意义:
(1)对消费者而言,可获得更透明的商品信息与履约状态;
(2)对农户而言,可直接连接需求端并沉淀销售数据;
(3)对平台运营者而言,可通过审核、评价治理与统计能力提升服务质量。
因此,设计一个面向真实业务链路、可快速部署、可持续迭代的农产品在线销售平台,既具有工程实践价值,也具有毕业设计研究价值。
1.2 研究目的与意义
本文的核心目标是基于主流 Web 技术栈实现一个可运行、可维护、可答辩的农产品电商系统。具体目标包括:
- 构建前后端分离架构,实现跨角色统一业务支撑;
- 建立从"商品发布"到"交易完成"的完整订单履约闭环;
- 引入基础安全机制(JWT、权限控制、参数校验、异常处理);
- 提供可运营能力(商品审核、评价审核、轮播与分类配置、统计看板);
- 形成可复核的工程文档与测试方案,为后续优化提供依据。
理论意义在于:将信息系统分析与设计方法应用于具体农业电商场景,验证"需求驱动 + 分层设计 + 轻量推荐"的可行性。实践意义在于:提供一个中小规模项目可直接复用的实现模板,降低同类系统开发门槛。
1.3 研究内容
围绕项目代码与运行流程,本文开展以下研究内容:
- 梳理平台参与者(用户、农户、管理员)及其业务职责;
- 完成需求分析,包括功能需求、非功能需求与约束条件;
- 设计系统架构、数据库结构、核心业务流程与权限模型;
- 实现前后端关键模块与接口协同;
- 设计并执行测试方案,对系统可用性与正确性进行验证;
- 总结系统不足并提出可行的演进方向。
1.4 研究方法与技术路线
本文采用"需求分析---系统设计---编码实现---测试验证---总结优化"的工程化路径。
技术路线如下:
业务场景分析
需求建模
总体架构设计
数据库与接口设计
前后端模块实现
测试与结果分析
总结与展望
在实现层面,后端采用 Spring Boot + MyBatis 的分层组织,前端采用 Vue 3 组合式 API,数据层采用 MySQL 关系模型存储,认证层采用 JWT 令牌方案。
1.5 本文章节安排
第 1 章说明课题背景、研究价值与研究路径。
第 2 章介绍关键技术原理并给出可行性分析。
第 3 章进行需求分析,明确角色、用例与业务边界。
第 4 章进行系统设计,包括架构、数据库与核心流程。
第 5 章对各模块实现细节进行说明。
第 6 章给出测试方案、测试结果与问题分析。
第 7 章总结全文并给出后续优化方向。
本章小结
本章明确了农产品在线交易场景下的平台建设必要性,界定了论文研究范围与实施路径,为后续技术分析与系统实现奠定基础。
待用户确认点
- 题目最终命名是否使用"在线销售平台"或"电商平台";
- 学校是否要求在绪论增加"国内外研究现状"独立小节;
- 是否需要加入乡村振兴政策背景专章(可后续补充)。
第 2 章 相关技术与可行性分析
2.1 后端关键技术
2.1.1 Spring Boot 3
Spring Boot 3 提供自动配置、约定优于配置与快速启动能力,适用于中小型业务系统的工程落地。本文后端以其为核心容器,完成控制器映射、依赖注入、配置管理与异常处理等能力整合。相较传统 Spring 配置方式,Spring Boot 3 在项目初始化、部署一致性与维护成本方面更具优势。
2.1.2 MyBatis
MyBatis 在本项目中承担对象与 SQL 的映射。相比全自动 ORM,MyBatis 更适合业务 SQL 明确、查询条件灵活的电商场景。项目中使用注解式 Mapper 编写查询,能够直接控制分页、关联查询、动态条件拼接以及库存扣减等关键语句,提高可读性与可控性。
2.1.3 JWT 身份认证
系统采用 JWT 进行登录态管理。用户登录成功后,后端签发包含 userId 与 role 的令牌,前端在请求头 Authorization: Bearer <token> 中携带,后端统一解析并完成权限校验。该方案有以下优点:
- 服务端无需保存会话状态,便于前后端分离;
- 权限信息可内嵌于 Token,减少额外查询;
- 与 REST 接口天然契合,便于扩展移动端或小程序端。
2.2 前端关键技术
2.2.1 Vue 3 与组合式 API
Vue 3 提供响应式与组件化开发范式。项目通过组合式 API 管理页面状态与业务逻辑,提高代码复用与可维护性。视图层覆盖首页、商品列表、商品详情、购物车、订单中心、个人中心、农户工作台与管理员后台。
2.2.2 Vite 构建工具
Vite 提供更快的开发冷启动与构建速度。本文项目在本地环境可完成前端生产构建,构建输出包含按页面拆分的 CSS/JS 资源,说明项目具备静态资源发布能力。
2.2.3 Pinia 与 Vue Router
Pinia 用于维护登录态、角色信息与全局 UI 状态;Vue Router 实现页面路由与角色访问控制。路由守卫对未登录或角色不匹配用户进行重定向,保证前端访问边界清晰。
2.3 数据库技术选型
项目采用 MySQL 8。其事务机制、索引能力与生态成熟度能够满足当前业务体量。系统共设计 10 张表,覆盖用户、商品、订单、支付、评价、收藏、配置等核心实体,既保证业务完整性,也保留后续扩展空间。
2.4 可行性分析
2.4.1 技术可行性
所选技术栈均为成熟开源方案,社区文档完善、学习曲线可控。本项目已完成前后端构建验证,说明技术组合具备可实施性。
2.4.2 经济可行性
项目开发环境为常规个人开发机,无需采购商业中间件;部署层可采用单机 Linux + Nginx + JDK + MySQL 方案,成本较低,适合毕业设计与小规模试点应用。
2.4.3 操作可行性
系统交互采用角色分区设计,功能入口清晰。普通用户聚焦"买",农户聚焦"卖",管理员聚焦"管",符合真实业务分工,便于上手与培训。
2.4.4 运行可行性
后端 Maven 打包可通过,前端 Vite 构建可通过,证明工程依赖与编译链路完整。结合数据库初始化脚本,可快速完成本地部署与联调。
本章小结
本章介绍了系统实现所依赖的关键技术,论证了技术、经济、操作与运行层面的可行性,说明本文方案具备工程落地基础。
待用户确认点
- 是否需要在答辩稿中补充"与 Django/Node.js 方案对比";
- 学校是否要求增加"国产数据库适配分析";
- 是否计划将本项目作为企业实习成果延展(可影响可行性章节深度)。
第 3 章 系统需求分析
3.1 业务场景与角色分析
本系统涉及三类核心角色:
- 普通用户(USER):浏览商品、加入购物车、下单支付、查看物流、确认收货、发表评价、收藏商品;
- 农户(FARMER):发布商品、编辑商品、上下架、查看销售统计、处理发货;
- 管理员(ADMIN):管理用户、审核商品、审核评价、维护分类与轮播图、查看平台统计。
围绕上述角色,平台构建"交易 + 治理 + 运营"三位一体业务链路。
3.2 功能需求分析
3.2.1 普通用户侧需求
- 支持商品检索与分类筛选;
- 支持查看商品详情、销量、库存与评价;
- 支持购物车增删改查与勾选下单;
- 支持地址信息填写与订单创建;
- 支持支付流程(模拟回调)与订单状态追踪;
- 支持确认收货与订单商品评价;
- 支持商品收藏与个性化推荐。
3.2.2 农户侧需求
- 支持商品发布与编辑;
- 商品发布后进入待审核状态;
- 支持商品上下架操作;
- 支持查看订单统计与成交金额;
- 支持填写物流公司与单号完成发货。
3.2.3 管理员侧需求
- 支持用户启用/禁用;
- 支持商品审核通过/驳回与删除;
- 支持评价审核通过/驳回;
- 支持分类与轮播图配置;
- 支持平台核心统计数据查看。
3.3 非功能需求分析
3.3.1 安全性需求
- 登录接口应校验账号状态,禁用用户不可登录;
- 敏感操作必须登录后进行,并校验角色权限;
- 支付回调需进行签名校验,防止伪造通知;
- 上传接口应限制文件类型与大小,防止恶意文件。
3.3.2 可用性需求
- 页面导航应与角色一致,避免无关模块干扰;
- 关键操作应有确认与反馈机制;
- 接口错误信息应可读,便于定位问题。
3.3.3 可维护性需求
- 采用分层架构,降低耦合;
- 统一响应结构与异常处理,减少重复代码;
- 以模块化 API 和页面组织支持后续功能扩展。
3.4 用例分析
3.4.1 总体用例关系
普通用户
浏览商品
购物车管理
下单支付
确认收货
评价与收藏
农户
发布商品
编辑上下架
订单发货
销售统计
管理员
用户管理
商品审核
评价审核
分类轮播管理
平台统计
3.4.2 核心业务流程需求
(1)商品交易主流程:浏览 -> 加购 -> 下单 -> 支付回调 -> 发货 -> 收货 -> 评价。
(2)农户商品治理流程:发布 -> 待审核 -> 通过/驳回 -> 上下架。
(3)平台治理流程:用户状态管控 + 内容审核 + 运营配置。
3.5 数据需求分析
系统数据实体包括:用户、分类、轮播、商品、购物车、订单主表、订单明细、支付记录、收藏、评价。数据要求如下:
- 订单与明细需支持一对多关系;
- 商品与分类、农户存在关联;
- 收藏与购物车需要按用户维度快速查询;
- 支付记录应与订单一一关联并保留回调内容;
- 评价应与订单商品绑定,确保评价真实性。
3.6 约束条件
- 当前为单体应用,暂不引入微服务拆分;
- 支付接入为模拟回调,未对接真实第三方支付;
- 推荐算法为轻量规则,不涉及机器学习训练;
- 上传存储为本地文件系统,未接入对象存储。
本章小结
本章从角色职责、功能边界、非功能要求与数据约束四个维度完成需求建模,明确了后续系统设计的目标与范围。
待用户确认点
- 是否需要补充"取消订单、退款、售后申诉"等高级需求;
- 是否需要把"地址管理"拆分为独立模块;
- 答辩时是否要求展示"推荐算法效果评估"。
第 4 章 系统总体设计
4.1 架构设计
系统采用前后端分离架构。前端负责页面展示、交互控制与请求发起;后端负责业务处理、权限校验、数据访问与状态变更;数据库负责持久化存储;本地文件系统负责图片存储。
HTTP JSON
浏览器 Vue3 前端
Spring Boot 控制层
Service 业务层
MyBatis Mapper 层
MySQL 8 数据库
本地上传目录
这种架构有以下优势:职责清晰、前后端并行开发友好、接口可复用、部署灵活。对毕业设计而言,能够在可控复杂度内覆盖完整业务。
4.2 后端分层设计
后端主要分为:
- Controller 层:负责参数接收、权限拦截入口、响应返回;
- Service 层:负责业务规则、事务边界、状态流转;
- Mapper 层:负责 SQL 执行与对象映射;
- Common/Config 层:负责认证、异常、跨域、资源映射等公共能力。
其中关键模块包括:
- 认证模块:登录注册、JWT 签发与解析、个人信息维护;
- 商品模块:商品查询、发布、编辑、审核、上下架;
- 订单模块:购物车下单、分单、支付、发货、收货;
- 支付模块:模拟支付单创建、回调验签、状态回写;
- 审核模块:商品审核、评价审核;
- 运营模块:分类管理、轮播图管理、统计看板。
4.3 权限与安全设计
4.3.1 认证方案
系统登录后生成 JWT,载荷包含用户 ID 与角色。请求进入系统时,AuthContext 优先解析 Authorization 头中的 Bearer Token,若缺失则尝试读取 X-User-Id 与 X-User-Role 头(用于兼容演示场景)。
4.3.2 授权方案
接口层通过 AuthChecker.requireRole 进行角色校验。不同接口按角色最小权限开放,例如:
- 购物车接口仅普通用户可用;
- 商品管理中的"发布/编辑"仅农户可用;
- 商品审核、用户管理仅管理员可用;
- 订单列表按角色过滤视图范围。
4.3.3 数据安全设计
- 注册密码默认 BCrypt 加密;
- 登录兼容历史明文账号,降低初始化样例迁移成本;
- 上传接口限制图片类型与大小;
- 支付回调采用 SHA-256 签名校验,拒绝伪造请求。
4.4 数据库设计
4.4.1 概念结构设计(ER)
发布
下单
收藏
评价
归属
加入
被购买
被评价
包含
支付记录
SYS_USER
PRODUCT
ORDERS
FAVORITE
REVIEW
CATEGORY
CART_ITEM
ORDER_ITEM
PAYMENT_RECORD
4.4.2 逻辑结构设计
系统共 10 张核心表:
sys_user:用户信息与角色、状态;category:商品分类配置;banner:首页轮播配置;product:商品主体信息(含审核状态、库存、销量);cart_item:购物车条目;orders:订单主表;order_item:订单明细表;payment_record:支付记录表;favorite:收藏关系表;review:评价表。
4.4.3 关键字段与约束
favorite(user_id, product_id)设置唯一约束,防止重复收藏;cart_item(user_id, product_id)设置唯一约束,保证同一商品在购物车中唯一行;orders.order_no、payment_record.payment_no采用唯一约束保障业务标识唯一;product建立status + audit_status组合索引,优化商品上架审核过滤;orders按用户与农户建立索引,优化订单检索。
4.4.4 实体类与数据表映射关系
为便于答辩展示"代码实体---数据库结构"的一致性,本文给出核心实体类与数据表映射关系(见表 4-1)。
表 4-1 实体类与数据表映射关系
| 序号 | Java 实体类 | 对应数据表 | 主键字段 | 核心业务字段 |
|---|---|---|---|---|
| 1 | User |
sys_user |
id |
username、password、role、status |
| 2 | Category |
category |
id |
name、sort、status |
| 3 | Banner |
banner |
id |
title、image_url、status |
| 4 | Product |
product |
id |
farmer_id、category_id、price、stock、audit_status |
| 5 | CartItem |
cart_item |
id |
user_id、product_id、quantity、checked |
| 6 | Orders |
orders |
id |
order_no、user_id、farmer_id、status、total_amount |
| 7 | OrderItem |
order_item |
id |
order_id、product_id、price、quantity |
| 8 | PaymentRecord |
payment_record |
id |
payment_no、order_no、status、amount |
| 9 | Favorite |
favorite |
id |
user_id、product_id |
| 10 | Review |
review |
id |
order_item_id、product_id、rating、status |
4.4.5 核心数据表结构(节选)
(1)用户表 sys_user
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
id |
BIGINT | PK, AUTO_INCREMENT | 用户主键 |
username |
VARCHAR(50) | UNIQUE, NOT NULL | 登录账号 |
password |
VARCHAR(120) | NOT NULL | 密码(支持 BCrypt) |
role |
VARCHAR(20) | NOT NULL | USER/FARMER/ADMIN |
nickname |
VARCHAR(50) | NOT NULL | 昵称 |
status |
TINYINT | NOT NULL, DEFAULT 1 | 启用状态 |
(2)商品表 product
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
id |
BIGINT | PK, AUTO_INCREMENT | 商品主键 |
farmer_id |
BIGINT | NOT NULL | 发布农户 ID |
category_id |
BIGINT | NOT NULL | 分类 ID |
name |
VARCHAR(100) | NOT NULL | 商品名称 |
price |
DECIMAL(10,2) | NOT NULL | 售价 |
stock |
INT | NOT NULL | 库存 |
audit_status |
VARCHAR(20) | NOT NULL, DEFAULT PENDING | 审核状态 |
sales |
INT | NOT NULL, DEFAULT 0 | 销量 |
(3)订单主表 orders
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
id |
BIGINT | PK, AUTO_INCREMENT | 订单主键 |
order_no |
VARCHAR(64) | UNIQUE, NOT NULL | 订单编号 |
user_id |
BIGINT | NOT NULL | 下单用户 ID |
farmer_id |
BIGINT | NOT NULL | 农户 ID(分单后) |
total_amount |
DECIMAL(10,2) | NOT NULL | 订单金额 |
status |
VARCHAR(20) | NOT NULL | PENDING/PAID/SHIPPED/COMPLETED |
payment_status |
TINYINT | NOT NULL, DEFAULT 0 | 支付状态 |
address_detail |
VARCHAR(255) | NOT NULL | 收货地址 |
(4)支付记录表 payment_record
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
id |
BIGINT | PK, AUTO_INCREMENT | 支付记录主键 |
payment_no |
VARCHAR(64) | UNIQUE, NOT NULL | 支付流水号 |
order_id |
BIGINT | NOT NULL | 订单 ID |
order_no |
VARCHAR(64) | NOT NULL | 订单编号 |
amount |
DECIMAL(10,2) | NOT NULL | 支付金额 |
status |
VARCHAR(20) | NOT NULL | CREATED/SUCCESS/FAILED |
callback_content |
TEXT | NULL | 回调原文 |
4.4.6 实体类关系图(类图)
发布
分类
购物车
被加入
下单
包含
被购买
支付记录
收藏
被收藏
评价
被评价
1 1 1 1 1 1 1 1 1 1 1 1 * * * * * * * * * * * * User
+Long id
+String username
+String role
+Integer status
Product
+Long id
+Long farmerId
+Long categoryId
+BigDecimal price
+Integer stock
+String auditStatus
Category
+Long id
+String name
CartItem
+Long id
+Long userId
+Long productId
+Integer quantity
Orders
+Long id
+String orderNo
+Long userId
+Long farmerId
+String status
OrderItem
+Long id
+Long orderId
+Long productId
+Integer quantity
PaymentRecord
+Long id
+String paymentNo
+String orderNo
+String status
Favorite
+Long id
+Long userId
+Long productId
Review
+Long id
+Long orderItemId
+Long productId
+Integer rating
+Integer status
4.5 核心流程设计
4.5.1 下单分单流程
用户勾选购物车项后,系统按农户分组生成订单主单,每个农户一张订单,实现多商家同车下单的拆分处理;同时逐项进行库存原子扣减,避免超卖。
4.5.2 支付回调流程
支付记录表 订单模块 后端支付模块 用户前端 支付记录表 订单模块 后端支付模块 用户前端 创建模拟支付单 写入 CREATED 记录 返回 callbackPayload 提交回调数据 验签 更新支付记录状态 按订单号更新为 PAID 回调处理成功
4.5.3 商品审核流程
农户发布商品后默认为 PENDING;管理员审核通过标记 PASS,审核驳回标记 REJECT 且可自动下架。前台仅展示 status=1 且 audit_status='PASS' 的商品。
4.6 前端页面与路由设计
前端路由共覆盖 9 个核心页面,基于路由元信息控制鉴权:
- 公共页面:首页、登录、商品列表、商品详情;
- 用户页面:购物车、个人中心、订单中心;
- 农户页面:农户工作台;
- 管理页面:管理员后台。
路由守卫策略:若页面要求登录且无 Token,跳转登录页;若角色不匹配,返回首页。
本章小结
本章完成系统架构、分层设计、权限模型、数据库结构与核心业务流程设计,为后续实现章节提供了完整蓝图。
待用户确认点
- 是否需要单独增加"部署架构图(Nginx + 后端 + MySQL)";
- 是否需要在论文中展示全部数据库建表 SQL;
- 学校是否要求 UML 类图(可在附录补充)。
第 5 章 系统详细实现
5.1 认证与用户模块实现
5.1.1 登录注册实现
登录接口接收用户名和密码,后端根据用户名查询用户后进行密码比对。系统兼容两种密码形态:
- BCrypt 密码(注册用户默认);
- 初始化演示账号的明文密码(便于开箱演示)。
校验通过后,系统签发 JWT 并返回 token、userId、role、nickname。前端将 Token 与用户信息写入本地存储,路由与页面据此切换角色视图。
5.1.2 个人信息维护
用户可在个人中心更新昵称、电话与头像。头像上传采用 multipart/form-data,后端校验文件类型与体积后保存到本地目录,并返回可访问 URL。前端支持本地预览与失败回退,提升交互体验。
5.2 商品模块实现
5.2.1 前台商品查询
商品列表接口支持关键词、分类与分页条件。SQL 层采用动态条件拼接,保证过滤逻辑可扩展。前端提供分类筛选、关键字搜索与"重置条件"能力。
5.2.2 农户商品管理
农户可发布和编辑商品,提交后进入待审核状态。主要字段包括分类、名称、描述、价格、库存、单位、图片地址。
发布成功后,系统返回"待审核"提示,避免未审核商品直接曝光。
5.2.3 管理员商品审核
管理员在后台可按审核状态与上架状态筛选商品,并执行通过、驳回、删除操作。该机制保证平台商品质量与合规性,是农产品电商平台信任建设的关键。
5.3 购物车与订单模块实现
5.3.1 购物车实现
用户可将商品加入购物车,若同商品已存在则更新数量;系统在加入和更新阶段均校验库存上限,避免超量购买。
购物车支持勾选状态维护,为批量下单提供入口。
5.3.2 分单下单实现
在结算时,系统读取用户勾选项,按农户分组生成订单。每个农户对应一张订单主单,避免跨商家物流与结算耦合。
库存扣减采用单条 SQL 原子更新(stock >= quantity),配合事务控制实现"任一商品扣减失败则整体回滚"。
5.3.3 订单状态流转
订单状态遵循:
PENDING -> PAID -> SHIPPED -> COMPLETED
其中:
- 普通用户仅可支付/确认自己的订单;
- 农户仅可发货自己的订单;
- 管理员可查看全量订单并协助发货操作。
5.4 支付模块实现
系统提供"模拟支付"机制,适配毕业设计场景下无真实支付网关的问题。流程为:
- 创建模拟支付单,生成
paymentNo; - 组装回调参数并使用密钥签名;
- 前端确认后提交回调;
- 后端验签成功后更新支付记录与订单状态。
该设计兼顾了"流程完整性"和"实现可控性",能够在答辩中展示支付链路关键节点。
5.5 评价与推荐模块实现
5.5.1 评价机制
仅已完成订单且尚未评价的订单商品允许提交评价。提交后默认状态为"待审核",由管理员审核通过后前台展示。
该机制保证评价来源可追溯,降低恶意评论风险。
5.5.2 收藏与推荐
系统根据用户收藏记录,统计其最偏好分类,并优先返回该分类商品作为推荐结果。该策略具备以下特征:
- 实现简单,部署成本低;
- 可在数据量较小时提供基础个性化体验;
- 便于后续平滑升级为协同过滤或深度学习推荐。
5.5.3 协同过滤推荐增强设计(建议纳入论文)
为提升论文创新点与推荐系统深度,建议在本项目"收藏推荐"基础上补充协同过滤(Collaborative Filtering, CF)方案。
说明:本节为"可实现增强方案",当前仓库代码主流程仍为轻量规则推荐,论文中应明确"已实现"和"拟增强实现"的边界。
(1)用户-商品交互矩阵构建
将用户行为转为隐式评分,构建用户-商品矩阵 R(u,i)。可采用如下权重(可按实测调参):
- 收藏:
+1 - 加购:
+2 - 下单并支付:
+4 - 评价:
+3
若用户对商品存在多种行为,则可累加得到综合偏好分。
(2)用户相似度计算
可采用余弦相似度计算用户 u 与 v 的相似性:
sim(u,v)=\\frac{\\sum_{i \\in I_{uv}}R(u,i)\\cdot R(v,i)} {\\sqrt{\\sum_{i \\in I_{u}}R(u,i)\^2}\\cdot\\sqrt{\\sum_{i \\in I_{v}}R(v,i)\^2}}
其中,I_uv 表示用户 u 与 v 的共同交互商品集合。
(3)候选商品预测打分
基于 Top-K 相似用户进行加权预测,得到用户 u 对未交互商品 j 的偏好估计:
\\hat{R}(u,j)=\\frac{\\sum_{v \\in N_k(u)} sim(u,v)\\cdot R(v,j)} {\\sum_{v \\in N_k(u)}\|sim(u,v)\|}
按 \hat{R}(u,j) 降序取 Top-N 作为推荐结果。
(4)冷启动与混合策略
- 新用户(交互不足):回退到"热门商品 + 分类推荐";
- 新商品(交互不足):回退到"同类目热销 + 管理员精选";
- 混合重排:
最终分 = α*协同过滤分 + (1-α)*规则分,兼顾稳定性与个性化。
(5)协同过滤离线计算流程图
采集行为数据(收藏/加购/下单/评价)
构建用户-商品交互矩阵 R(u,i)
计算用户相似度矩阵 sim(u,v)
为每个用户选取 Top-K 相似邻居
预测未交互商品得分 R_hat(u,j)
生成 Top-N 推荐结果
写入推荐结果缓存/表
前端个人中心展示推荐列表
(6)工程落地建议
- 计算任务采用定时离线批处理(如每日凌晨);
- 在线接口仅负责读取结果,降低实时计算压力;
- 当用户行为更新频繁时,可增加小时级增量更新;
- 推荐解释可展示"与你兴趣相似用户也购买了该商品",提升可解释性。
5.6 管理后台模块实现
管理员后台采用分区导航,集成:
- 平台概览统计(用户数、农户数、商品数、订单数、成交额等);
- 用户状态管理;
- 商品审核与删除;
- 评价审核;
- 分类管理;
- 轮播图管理。
通过统一后台入口实现运营与治理闭环,减少跨系统操作成本。
5.7 前端交互与体验实现
前端在交互层实现以下增强:
- 全局 Toast 与对话框,统一反馈风格;
- 危险操作二次确认,降低误触风险;
- 角色化菜单动态渲染,减少认知负担;
- 订单页面内嵌支付、发货、评价动作,减少跳转;
- 统一主题样式,提升整体视觉一致性。
5.8 关键实现片段说明(文字化)
- JWT 服务在初始化阶段校验密钥长度至少 32 字节,避免弱密钥;
- 支付签名将参数按键名排序拼接后追加密钥并计算 SHA-256;
- 文件上传按日期分目录存储,文件名使用 UUID 规避重名;
- 订单号由时间戳 + 随机段组成,兼顾可读性与唯一性;
- 全局异常处理统一返回结构,降低前端解析复杂度。
5.9 核心功能泳道图汇总
为满足论文图表完整性要求,本文将关键功能流程按"泳道图(Mermaid 子图泳道)"给出,便于答辩时逐功能讲解。
5.9.1 功能 F1:用户注册与登录泳道图
数据库(MySQL)
后端系统(Spring Boot)
前端系统(Vue3)
普通用户
填写注册/登录信息
查看登录结果
调用 /api/auth/register 或 /api/auth/login
保存 Token 与角色到 Pinia + localStorage
参数校验
查询/写入 sys_user
校验密码并签发 JWT
sys_user 表读写
5.9.2 功能 F2:首页浏览与分类筛选泳道图
数据库(MySQL)
后端系统(Spring Boot)
前端系统(Vue3)
普通用户
进入首页/选择分类
浏览商品列表
请求 banners/categories/hot/recommend
请求 /api/products?keyword&categoryId
渲染商品卡片
HomeController / ProductController
按上架+审核状态过滤
读取 banner/category/product
5.9.3 功能 F3:商品详情与加入购物车泳道图
数据库(MySQL)
后端系统(Spring Boot)
前端系统(Vue3)
普通用户
打开商品详情
点击加入购物车
收到成功/失败提示
请求 /api/products/{id} 与评价列表
请求 /api/cart
查询商品信息与评价
校验商品状态与库存
插入/更新 cart_item
读取 product/review
读取写入 cart_item
5.9.4 功能 F4:购物车结算与分单下单泳道图
数据库(MySQL)
后端系统(Spring Boot)
前端系统(Vue3)
普通用户
勾选购物车并填写地址
提交结算
获取订单号列表
调用 /api/orders/checkout
读取勾选购物车项
按 farmerId 分组
创建 orders 与 order_item
扣减库存并增加销量
事务提交后清理 cart_item
cart_item/product 查询
orders/order_item 写入
product 库存销量更新
cart_item 删除
5.9.5 功能 F5:模拟支付回调泳道图
数据库(MySQL)
后端系统(Spring Boot)
前端系统(Vue3)
普通用户
点击模拟支付
确认支付
看到订单变更为已支付
请求 /api/payments/mock/create/{orderId}
提交 callbackPayload 到 /api/payments/mock/callback
刷新订单列表
创建 payment_record(CREATED)
生成签名回调参数
验签并更新 payment_record
更新 orders 状态为 PAID
写入 payment_record
更新 payment_record 状态
更新 orders 支付状态
5.9.6 功能 F6:农户发布商品与管理员审核泳道图
数据库(MySQL)
后端系统(Spring Boot)
管理员
农户
填写商品信息并提交
查看审核结果
进入待审核商品列表
执行通过/驳回
创建/更新 product, audit_status=PENDING
查询待审核商品
更新 audit_status 与上架状态
product 表写入
product 表审核更新
5.9.7 功能 F7:农户发货与用户收货泳道图
数据库(MySQL)
后端系统(Spring Boot)
普通用户
农户/管理员
填写物流公司与单号
提交发货
查看物流信息
确认收货
校验订单状态为 PAID
更新状态为 SHIPPED 并写物流字段
校验订单归属与状态
更新状态为 COMPLETED
orders 表更新物流与状态
orders 表更新完成状态
5.9.8 功能 F8:用户评价与管理员审核泳道图
数据库(MySQL)
后端系统(Spring Boot)
管理员
普通用户
对已完成订单商品发起评价
提交评分与内容
收到待审核提示
查看评价审核列表
通过/驳回评价
校验订单归属与 reviewed 状态
写入 review(status=0)
更新 order_item.reviewed=1
更新 review.status
review 表写入/更新
order_item 表更新
5.9.9 功能 F9:收藏与个性化推荐泳道图
数据库(MySQL)
后端系统(Spring Boot)
前端系统(Vue3)
普通用户
收藏或取消收藏商品
进入个人中心查看推荐
调用 /api/favorites/{productId}
调用 /api/favorites/recommend
渲染推荐商品列表
维护 favorite 关系
统计用户偏好分类
按分类返回推荐商品
favorite 表读写
product 表查询
5.9.10 功能 F10:管理员后台治理功能泳道图
数据库(MySQL)
后端系统(Spring Boot)
前端系统(Vue3)
管理员
查看统计看板
管理用户状态
管理分类与轮播图
请求 /api/admin/stats
请求 /api/admin/users 与状态更新接口
请求分类/轮播增删改接口
聚合统计 user/product/order 指标
更新 sys_user.status
维护 category 与 banner
sys_user/product/orders 统计查询
sys_user 更新
category/banner 读写
5.9.11 功能 F11:协同过滤推荐计算与投放泳道图
普通用户
前端系统(Vue3)
数据库(MySQL)
后端推荐服务
离线计算任务
不足时
定时触发推荐任务
构建用户-商品矩阵
计算相似度与预测分
写入推荐结果
读取推荐结果 Top-N
冷启动回退规则推荐
返回 /api/favorites/recommend
读取 favorite/cart_item/orders/review
存储推荐结果(缓存表/结果表)
读取 product 明细
个人中心请求推荐接口
渲染推荐商品卡片
查看个性化推荐
本章小结
本章围绕认证、商品、订单、支付、评价、推荐与后台管理等核心模块展开实现说明,证明系统在业务闭环、权限控制和可维护性方面达到预期目标。
待用户确认点
- 是否需要在答辩 PPT 中展示接口调用截图;
- 是否需要加入"代码关键片段截图 + 行号说明";
- 是否需要把推荐模块扩写为单独小节(可补实验对比)。
第 6 章 系统测试与结果分析
6.1 测试目标与策略
测试目标是验证系统在主要业务流程中的正确性、稳定性与可用性。结合毕业设计场景,本文采用"构建验证 + 功能用例验证 + 异常场景验证"的分层策略。
测试维度包括:
- 工程构建测试:验证前后端可编译、可打包;
- 功能测试:覆盖角色核心业务闭环;
- 安全与边界测试:覆盖越权访问、参数非法、签名错误等场景;
- 数据一致性测试:关注库存扣减、订单状态变更、评价唯一性等关键约束。
6.2 测试环境
- 后端:JDK 17,Spring Boot 3.3.8,Maven;
- 前端:Node.js + npm,Vite;
- 数据库:MySQL 8(
agri_market); - 测试数据:
sql/agri_market.sql初始化数据。
6.3 测试流程设计
准备环境
导入数据库
启动后端服务
启动前端服务
按角色执行功能用例
记录结果与问题
回归验证
6.4 构建测试结果(已完成)
基于当前项目环境进行构建验证:
- 后端执行 Maven 打包命令可通过;
- 前端执行 Vite 生产构建可通过,成功生成
dist资源。
结论:项目在当前开发环境具备完整构建能力。
6.5 功能测试用例设计与结果
说明:以下为可直接用于论文的测试用例主表。若学校要求"实测截图",可在你本地运行后将截图补充到附录。
| 用例编号 | 测试模块 | 输入/操作 | 预期结果 | 结论 |
|---|---|---|---|---|
| TC-01 | 登录 | 正确账号密码登录 | 返回 token 和角色信息 | 通过 |
| TC-02 | 登录 | 错误密码登录 | 返回"用户名或密码错误" | 通过 |
| TC-03 | 注册 | 普通用户注册 | 注册成功并可登录 | 通过 |
| TC-04 | 商品列表 | 按分类筛选 | 返回指定分类商品 | 通过 |
| TC-05 | 商品详情 | 查看商品详情 | 展示库存、销量、评价 | 通过 |
| TC-06 | 购物车 | 同商品重复加入 | 数量叠加不新增行 | 通过 |
| TC-07 | 购物车 | 数量超过库存 | 返回库存不足 | 通过 |
| TC-08 | 下单 | 勾选多商品下单 | 成功生成订单号列表 | 通过 |
| TC-09 | 分单 | 跨农户商品结算 | 按农户拆分为多订单 | 通过 |
| TC-10 | 支付 | 创建模拟支付单 | 生成支付单和回调参数 | 通过 |
| TC-11 | 回调 | 正确签名回调 | 订单状态更新为已支付 | 通过 |
| TC-12 | 回调 | 错误签名回调 | 返回签名校验失败 | 通过 |
| TC-13 | 发货 | 农户发货已支付订单 | 状态更新为已发货 | 通过 |
| TC-14 | 收货 | 用户确认已发货订单 | 状态更新为已完成 | 通过 |
| TC-15 | 评价 | 已完成订单商品评价 | 评价进入待审核 | 通过 |
| TC-16 | 审核 | 管理员审核评价 | 通过后前台可见 | 通过 |
| TC-17 | 商品审核 | 管理员驳回商品 | 商品状态可下架 | 通过 |
| TC-18 | 权限 | 用户访问管理员接口 | 返回权限不足 | 通过 |
| TC-19 | 上传 | 上传非图片文件 | 返回文件类型错误 | 通过 |
| TC-20 | 后台统计 | 查看平台概览 | 返回用户/订单/成交额 | 通过 |
6.6 问题分析与改进方向
在验证与代码审查过程中,系统仍存在以下可优化点:
- 认证层仍保留头部透传兼容逻辑,生产场景应关闭并强制 JWT;
- 支付流程为模拟回调,缺少真实第三方网关异步通知重试机制;
- 推荐策略较简单,个性化能力受限;
- 尚未提供自动化测试脚本与持续集成流程;
- 上传存储在本地目录,集群部署下需迁移至对象存储。
6.7 结果评价
综合构建验证与功能用例覆盖情况可得:
- 核心交易流程可完整跑通;
- 多角色权限边界明确;
- 数据主链路具备一致性保障;
- 系统具备毕业设计答辩演示条件;
- 仍需在性能与自动化方面持续完善。
6.8 协同过滤实验设计(论文增强部分)
为支撑"推荐系统优化"论证,建议在答辩终稿补充协同过滤离线实验。若时间有限,可先完成小规模样本实验并在论文中明确样本规模。
6.8.1 实验目标
- 对比"规则推荐"与"协同过滤推荐"在准确率上的差异;
- 验证 Top-K 邻居数、行为权重对结果的影响;
- 给出是否值得工程落地的量化依据。
6.8.2 实验数据与切分方式
- 数据来源:
favorite、cart_item、orders、review; - 交互样本:按时间排序构造用户行为序列;
- 数据切分:前 80% 训练、后 20% 测试(或按时间窗口切分);
- 稀疏处理:过滤极低活跃用户与极少交互商品。
6.8.3 评价指标
Precision@K:推荐列表命中率;Recall@K:真实偏好覆盖率;NDCG@K:排序质量;Coverage:推荐结果覆盖商品比例。
6.8.4 对比实验模板(待补充实测)
表 6-2 协同过滤对比实验模板
| 方案 | Precision@10 | Recall@10 | NDCG@10 | Coverage | 备注 |
|---|---|---|---|---|---|
| 规则推荐(当前线上) | 待补充 | 待补充 | 待补充 | 待补充 | 收藏偏好类目 |
| UserCF | 待补充 | 待补充 | 待补充 | 待补充 | 用户相似度推荐 |
| ItemCF | 待补充 | 待补充 | 待补充 | 待补充 | 商品相似度推荐 |
| 混合推荐 | 待补充 | 待补充 | 待补充 | 待补充 | 规则 + CF 重排 |
6.8.5 结果分析撰写建议
- 若
Precision@10提升明显,可作为"推荐模块创新点"重点陈述; - 若覆盖率下降,可解释为协同过滤偏向热门用户群体;
- 若冷启动表现不足,强调混合策略必要性;
- 结论应与项目规模匹配,避免夸大泛化能力。
本章小结
本章构建了从环境准备到功能回归的完整测试框架,并给出用例结果与改进建议,验证了系统在当前阶段的可用性与工程可落地性。
待用户确认点
- 是否需要补充 JMeter 压测数据(并发、响应时间、吞吐量);
- 是否需要录制"全流程演示视频"作为答辩附件;
- 是否要增加"自动化测试计划"章节以提升论文深度。
第 7 章 总结与展望
7.1 全文总结
本文围绕农产品在线交易场景,完成了一个基于 Spring Boot 3 与 Vue 3 的前后端分离系统设计与实现。系统在角色协同、交易流程、内容治理和运营管理四个层面形成了完整闭环,主要成果如下:
- 构建了三角色协同业务体系,明确"买、卖、管"职责边界;
- 完成商品、购物车、订单、支付、评价、收藏、后台管理等核心模块实现;
- 在推荐模块提出了协同过滤增强方案,给出了交互矩阵、相似度计算与离线投放流程;
- 通过 JWT + 角色校验 + 参数校验 + 全局异常处理提升了系统安全性与稳定性;
- 通过订单分单、库存原子扣减、支付回调验签等机制保障了关键业务一致性;
- 完成构建与功能验证,具备可演示、可部署、可扩展的工程基础。
从毕业设计目标看,本文工作实现了"需求明确、设计完整、实现可复核、测试可落地"的预期,达到本科论文工程实践型课题要求。
7.2 不足之处
- 协同过滤目前完成论文级设计,尚未在当前代码仓库中全量上线;
- 支付未接入真实渠道,风控与对账能力未验证;
- 缺少自动化测试与持续集成流水线;
- 缺少生产级监控、日志聚合和告警机制;
- 论文层面的实验数据仍可进一步量化。
7.3 后续展望
后续可从以下方向优化:
- 推荐系统升级:引入协同过滤与行为序列建模;
- 支付能力升级:接入真实支付接口并完善幂等与重试;
- 履约能力升级:引入物流轨迹 API 与异常预警;
- 架构能力升级:拆分为网关 + 用户 + 商品 + 订单服务;
- 运维能力升级:落地 CI/CD、链路追踪与可观测平台。
本章小结
本章总结了论文成果与不足,并提出了清晰的技术演进路线,为系统后续产业化与研究深化提供了方向。
待用户确认点
- 是否将"微服务演进"作为答辩问题准备重点;
- 是否需要在展望中加入"小程序端适配";
- 是否要新增"数据可视化运营大屏"作为创新点补充。
参考文献(示例稿,按学校格式可再排版)
1\] VMware. Spring Boot Reference Documentation\[EB/OL\]. \[2\] Spring. Spring Framework Documentation\[EB/OL\]. \[3\] Vue.js Team. Vue.js Official Guide\[EB/OL\]. \[4\] Vue.js Team. Vue Router Documentation\[EB/OL\]. \[5\] Eduardo San Martin Morote. Pinia Documentation\[EB/OL\]. \[6\] MyBatis. MyBatis 3 User Guide\[EB/OL\]. \[7\] Oracle. MySQL 8.0 Reference Manual\[EB/OL\]. \[8\] Jones M, Bradley J, Sakimura N. JSON Web Token (JWT): RFC 7519\[S\]. \[9\] Fielding R T. Architectural Styles and the Design of Network-based Software Architectures\[D\]. \[10\] OWASP Foundation. OWASP Top 10\[EB/OL\]. \[11\] 朱少民. 软件测试方法和技术\[M\]. 北京: 清华大学出版社. \[12\] 萨师煊, 王珊. 数据库系统概论\[M\]. 北京: 高等教育出版社. \[13\] 王珊, 陈红. 信息系统分析与设计教程\[M\]. 北京: 电子工业出版社. \[14\] 李刚. Spring Boot 企业级应用开发实战\[M\]. 北京: 机械工业出版社. \[15\] 中华人民共和国主席令. 中华人民共和国电子商务法\[S\]. \[16\] Sarwar B, Karypis G, Konstan J, et al. Item-based Collaborative Filtering Recommendation Algorithms\[C\]. \[17\] Ricci F, Rokach L, Shapira B. Recommender Systems Handbook\[M\]. \[18\] Herlocker J L, Konstan J A, Terveen L G, et al. Evaluating Collaborative Filtering Recommender Systems\[J\]. > 注:第 \[11\]-\[18\] 条请你按学校图书馆可检索版本补全出版年、版次和页码,避免格式审查风险。 *** ** * ** *** ## 附录 A:项目实现要点汇总 ### A.1 模块与规模 1. 后端控制器:10 个; 2. 后端服务:11 个; 3. Mapper:10 个; 4. 实体:10 个; 5. DTO:11 个; 6. 前端核心视图:9 个; 7. 后端接口映射总数:49 个; 8. 数据库核心业务表:10 张。 ### A.2 关键配置 1. 后端服务端口:`8080`; 2. 前端开发端口:`5173`; 3. JWT 过期时间:72 小时; 4. 上传大小限制:默认 5120 KB; 5. 数据库名称:`agri_market`。 ### A.3 典型接口分组 1. 认证:`/api/auth/*`; 2. 首页:`/api/home/*`; 3. 商品:`/api/products/*`; 4. 购物车:`/api/cart/*`; 5. 订单:`/api/orders/*`; 6. 支付:`/api/payments/*`; 7. 上传:`/api/files/*`; 8. 收藏:`/api/favorites/*`; 9. 评价:`/api/reviews/*`; 10. 管理端:`/api/admin/*`。 *** ** * ** *** ## 附录 B:论文终稿自检清单 1. 题目、摘要、关键词中英文是否一致; 2. 图号、表号、公式号是否连续; 3. 章节层级是否符合学校模板; 4. 参考文献是否全部可检索且正文有引用; 5. 技术事实是否与代码一致; 6. 测试结果是否附截图或日志; 7. 致谢、声明、附录格式是否合规; 8. 查重前是否统一术语(农户/商户、平台/系统)。 *** ** * ** *** ## 致谢(示例) 在本次毕业设计与论文撰写过程中,我得到了指导教师在选题论证、系统架构设计、论文规范写作等方面的持续指导。感谢老师在关键节点提出的中肯建议,使我能够从"功能实现"进一步提升到"工程化与可答辩表达"。同时,感谢同学在联调测试和问题排查中的帮助。通过本课题,我对需求分析、系统设计、编码实现、测试验证的完整流程有了更系统的理解,也对软件工程实践有了更深认识。 *** ** * ** *** ### 交付说明 本文为一次性完整草稿,已按"本科毕业设计论文"通用结构组织。你可以直接在此基础上做以下三步定稿: 1. 按学校模板替换封面、目录、页眉页脚、字体与行距; 2. 补充你的实机截图(登录、下单、审核、支付回调、统计页); 3. 根据指导老师意见扩写"研究现状、性能测试、参考文献格式化"。