目录
- 二手物品交易平台
- 二手交易平台系统毕业论文
- [第一章 绪论](#第一章 绪论)
-
- [1.1 研究背景](#1.1 研究背景)
-
- [1.1.1 二手交易场景现状](#1.1.1 二手交易场景现状)
- [1.1.2 传统交易方式痛点](#1.1.2 传统交易方式痛点)
- [1.1.3 信息系统支撑价值](#1.1.3 信息系统支撑价值)
- [1.2 研究意义](#1.2 研究意义)
-
- [1.2.1 业务层面的意义](#1.2.1 业务层面的意义)
- [1.2.2 管理层面的意义](#1.2.2 管理层面的意义)
- [1.2.3 技术层面的意义](#1.2.3 技术层面的意义)
- [1.3 国内外研究现状](#1.3 国内外研究现状)
-
- [1.3.1 平台功能演进特点](#1.3.1 平台功能演进特点)
- [1.3.2 工程实现的常见技术路线](#1.3.2 工程实现的常见技术路线)
- [1.4 研究内容与研究目标](#1.4 研究内容与研究目标)
-
- [1.4.1 研究内容](#1.4.1 研究内容)
- [1.4.2 研究目标](#1.4.2 研究目标)
- [1.5 研究难点与创新点](#1.5 研究难点与创新点)
-
- [1.5.1 研究难点](#1.5.1 研究难点)
- [1.5.2 创新点](#1.5.2 创新点)
- [1.6 本文组织结构](#1.6 本文组织结构)
- [第二章 相关技术与理论基础](#第二章 相关技术与理论基础)
-
- [2.1 开发语言与核心框架介绍](#2.1 开发语言与核心框架介绍)
-
- [2.1.1 Spring Boot分层结构](#2.1.1 Spring Boot分层结构)
- [2.1.2 MyBatis Plus选型说明](#2.1.2 MyBatis Plus选型说明)
- [2.2 前端技术介绍](#2.2 前端技术介绍)
-
- [2.2.1 Web门户端实现特点](#2.2.1 Web门户端实现特点)
- [2.2.2 Web管理端实现特点](#2.2.2 Web管理端实现特点)
- [2.2.3 前端状态管理与接口交互](#2.2.3 前端状态管理与接口交互)
- [2.3 数据库技术介绍](#2.3 数据库技术介绍)
-
- [2.3.1 索引与约束设计](#2.3.1 索引与约束设计)
- [2.4 其他支撑技术](#2.4 其他支撑技术)
-
- [2.4.1 多端统一认证机制](#2.4.1 多端统一认证机制)
- [2.4.2 微信小程序端技术实现](#2.4.2 微信小程序端技术实现)
- [2.5 面向对象设计思想](#2.5 面向对象设计思想)
-
- [2.5.1 实体与展示字段设计](#2.5.1 实体与展示字段设计)
- [2.6 数据库设计理论](#2.6 数据库设计理论)
- [2.7 本章小结](#2.7 本章小结)
- [第三章 需求与可行性分析](#第三章 需求与可行性分析)
-
- [3.1 功能需求分析](#3.1 功能需求分析)
-
- [3.1.1 管理端功能需求](#3.1.1 管理端功能需求)
- [3.1.2 门户端功能需求](#3.1.2 门户端功能需求)
- [3.1.3 微信小程序端功能需求](#3.1.3 微信小程序端功能需求)
- [3.2 非功能需求分析](#3.2 非功能需求分析)
-
- [3.2.1 安全性需求](#3.2.1 安全性需求)
- [3.2.2 性能与可扩展性需求](#3.2.2 性能与可扩展性需求)
- [3.3 技术可行性分析](#3.3 技术可行性分析)
-
- [3.3.1 技术选型可行性](#3.3.1 技术选型可行性)
- [3.3.2 技术风险与控制](#3.3.2 技术风险与控制)
- [3.4 本章小结](#3.4 本章小结)
- [第四章 系统总体设计](#第四章 系统总体设计)
-
- [4.1 系统架构设计](#4.1 系统架构设计)
-
- [4.1.1 总体架构](#4.1.1 总体架构)
- [4.1.2 三端协同](#4.1.2 三端协同)
- [4.1.3 分层设计](#4.1.3 分层设计)
- [4.2 功能模块设计](#4.2 功能模块设计)
-
- [4.2.1 门户端模块](#4.2.1 门户端模块)
- [4.2.2 管理端模块](#4.2.2 管理端模块)
- [4.2.3 小程序端模块](#4.2.3 小程序端模块)
- [4.3 数据库设计](#4.3 数据库设计)
-
- [4.3.1 概念结构设计](#4.3.1 概念结构设计)
- [4.3.2 逻辑结构设计](#4.3.2 逻辑结构设计)
- [4.4 关键业务流程总体设计](#4.4 关键业务流程总体设计)
-
- [4.4.1 登录鉴权流程](#4.4.1 登录鉴权流程)
- [4.4.2 交易流程](#4.4.2 交易流程)
- [4.4.3 商品发布与上架流程](#4.4.3 商品发布与上架流程)
- [4.4.4 留言沟通流程](#4.4.4 留言沟通流程)
- [4.4.5 举报治理流程](#4.4.5 举报治理流程)
- [4.5 本章小结](#4.5 本章小结)
- [第五章 系统详细设计与实现](#第五章 系统详细设计与实现)
-
- [5.1 系统主页设计与实现](#5.1 系统主页设计与实现)
-
- [5.1.1 Web门户端主页](#5.1.1 Web门户端主页)
- [5.1.2 Web管理端主页](#5.1.2 Web管理端主页)
- [5.1.3 微信小程序首页](#5.1.3 微信小程序首页)
- [5.2 核心功能模块设计与实现](#5.2 核心功能模块设计与实现)
-
- [5.2.1 身份认证与访问控制](#5.2.1 身份认证与访问控制)
- [5.2.2 商品发布与状态管理](#5.2.2 商品发布与状态管理)
- [5.2.3 商品浏览检索与收藏](#5.2.3 商品浏览检索与收藏)
- [5.2.4 订单创建与状态流转](#5.2.4 订单创建与状态流转)
- [5.2.5 留言回复与评价](#5.2.5 留言回复与评价)
- [5.2.6 举报与管理员处理](#5.2.6 举报与管理员处理)
- [5.2.7 管理员后台统计与治理](#5.2.7 管理员后台统计与治理)
- [5.3 关键业务流程说明](#5.3 关键业务流程说明)
- [第六章 总结与展望](#第六章 总结与展望)
-
- [6.1 系统成果总结](#6.1 系统成果总结)
- [6.2 不足与改进方向](#6.2 不足与改进方向)
-
- [6.2.1 安全机制改进](#6.2.1 安全机制改进)
- [6.2.2 审核与治理策略改进](#6.2.2 审核与治理策略改进)
- [6.2.3 文件资源管理改进](#6.2.3 文件资源管理改进)
- [6.2.4 数据一致性与异常场景处理](#6.2.4 数据一致性与异常场景处理)
- [6.3 未来扩展展望](#6.3 未来扩展展望)
-
- [6.3.1 运营分析能力扩展](#6.3.1 运营分析能力扩展)
- [6.3.2 多端体验一致性优化](#6.3.2 多端体验一致性优化)
- [6.3.3 业务规则扩展](#6.3.3 业务规则扩展)
- [6.2.4 数据一致性与异常场景处理](#6.2.4 数据一致性与异常场景处理)
- [6.3 未来扩展展望](#6.3 未来扩展展望)
-
- [6.3.1 运营分析能力扩展](#6.3.1 运营分析能力扩展)
- [6.3.2 多端体验一致性优化](#6.3.2 多端体验一致性优化)
- [6.3.3 业务规则扩展](#6.3.3 业务规则扩展)
二手物品交易平台
系统演示视频 :点击查看B站视频
二手交易平台系统毕业论文
摘要
随着移动互联网与电子商务应用的持续深化,校园与社区等场景中的二手商品交易需求呈现高频化与碎片化特征。传统线下交易方式普遍存在信息不对称、沟通成本高、交易过程缺乏规范记录、纠纷难以追溯等问题。面向上述痛点,设计并实现了一套基于B/S架构的二手交易平台系统。系统后端采用Spring Boot 2.7 构建RESTful风格接口,结合MyBatis Plus完成数据访问与业务持久化;前端采用Vue 3 与Element Plus实现页面交互与组件化开发,并通过Pinia与Vue Router完成状态管理与路由控制;数据库使用MySQL 8 实现业务数据的结构化存储。系统采用JWT作为身份认证机制,并对用户密码进行MD5 加密存储,以实现接口访问控制与基础安全防护。
平台面向普通用户、管理员、游客三类角色提供差异化功能,并提供三个访问端以适配不同使用场景:Web门户端用于普通用户日常浏览、发布与交易操作;Web管理端用于平台治理与运营管理;微信小程序端用于移动场景下的快速浏览与交易。普通用户支持账号注册登录、个人信息维护、商品发布与状态管理、商品浏览检索与筛选、商品收藏、订单创建与状态流转、留言与回复、卖家评价、商品举报等功能;管理员端提供用户状态管理、商品审核与强制下架、分类管理、订单管理、举报处理与统计展示等能力;游客可浏览商品列表并查看商品详情。系统以商品状态、订单状态、留言状态、举报状态等关键状态字段组织业务流程,实现交易流程闭环与治理闭环,为二手交易场景提供一套具备可用性与可扩展性的工程实现方案。
关键词:二手交易平台;Spring Boot;Vue 3;MySQL;JWT;MyBatis Plus
第一章 绪论
1.1 研究背景
1.1.1 二手交易场景现状
二手交易具有降低资源浪费、促进循环利用、满足差异化消费等现实价值。在校园与社区等典型场景中,交易物品种类分散、交易频次高、价格敏感度强,且交易过程往往由个人主导完成。由于用户群体具有"同圈层、弱陌生人"的特点,交易行为既具有一定的便利性,也伴随明显的不确定性。
从供需结构看,二手交易的供给侧来源广泛,包括闲置电子产品、书籍、生活用品等,需求侧则具有强烈的即时性与个体化偏好,导致信息分散、决策依赖描述与图片。与此同时,移动互联网的普及使得用户更倾向于随时随地完成信息浏览与沟通,系统需要同时支持PC端与移动端的访问形态。
线下交易模式普遍依赖即时沟通与线下见面,导致信息传播半径有限、交易撮合效率低、沟通时间成本高。当交易规模扩大或用户不在同一社交圈时,线下模式更难满足高频与碎片化的需求,亟需通过信息系统提升信息触达与交易组织能力。
1.1.2 传统交易方式痛点
二手商品具有非标准化程度高、质量差异大、描述依赖主观表达等特点,交易决策对信息充分性与沟通效率有较强依赖。若仅通过社交工具或线下沟通完成交易,信息组织往往缺乏结构化表达,导致买家难以快速比较不同商品,卖家也难以持续维护商品状态。
同时,陌生人交易存在弱信任问题,容易出现虚假描述、爽约、纠纷难以界定等情况。由于二手商品通常缺少统一质量标准,交易纠纷往往集中在"描述与实际不一致""交易过程缺少证据""沟通记录分散难以核对"等方面。
缺少统一的平台记录会进一步削弱交易过程的可追溯性,增加交易纠纷的处理成本。例如在没有订单状态记录的情况下,交易进行到何种阶段、是否达成一致、是否已交付等信息难以准确还原;在没有治理机制的情况下,违规信息缺少处理入口,容易影响整体平台体验。
1.1.3 信息系统支撑价值
通过信息系统将二手交易过程线上化,可以形成统一的信息发布渠道与检索入口,降低买卖双方的搜索成本。商品以结构化字段进行描述,配合图片展示与分类导航,使得买家能够更快完成筛选与决策,卖家也能够更清晰地维护商品信息与状态。
通过订单与消息记录沉淀交易过程,可以将交易行为从"口头约定"转化为"可记录、可追溯"的流程化数据。订单状态的引入能够明确交易阶段,消息与留言记录能够辅助还原沟通事实,降低纠纷处理成本。
通过举报与后台处理机制形成平台治理能力,可以对违规信息进行集中处置并记录处理结果,避免违规内容长期存在导致用户体验下降。在多终端使用成为常态的背景下,Web门户端、Web管理端与微信小程序端协同可满足不同场景下的访问需求,实现"用户交易便捷、管理员治理有效"的系统目标。
1.2 研究意义
1.2.1 业务层面的意义
系统以二手交易业务为核心,构建统一的账号体系与订单状态流转机制,形成发布、浏览、下单、确认、完成或取消的闭环流程。通过将关键业务动作映射为状态字段的变化,可以将交易过程从"非结构化沟通"提升为"可约束的流程",从而减少不确定性。
通过商品状态与订单状态的联动控制,使交易过程具备清晰的阶段划分与可控边界。例如商品上架与下架决定商品是否对外展示,订单完成后同步更新商品为已售,避免重复交易。状态联动不仅提升用户体验,也为后续统计与治理提供可分析的数据基础。
此外,收藏、留言与评价等辅助模块能够提升交易效率与信任水平。收藏降低回访成本,留言提升咨询效率,评价形成信用反馈,综合降低无效沟通与无效交易的发生概率。
1.2.2 管理层面的意义
平台治理需要具备用户管理、商品审核与强制下架、举报处理等能力。通过管理端将治理流程线上化,可以实现对违规内容的集中处理与记录沉淀,避免治理行为仅依赖人工沟通而缺少可追溯证据。
管理端的存在使平台能够形成治理闭环:用户端产生发布与交易数据,治理端对异常账号、异常商品与举报记录进行处置,并将处理结果回写系统,从而提升平台整体秩序。与此同时,统计面板能够为运营决策提供依据,例如观察交易活跃度变化、分类分布变化,为后续规则调整提供数据支撑。
1.2.3 技术层面的意义
系统采用前后端分离架构并提供统一REST接口,Web门户端、Web管理端与微信小程序端共享同一套业务接口,降低多端维护成本。统一接口的设计能够使业务规则集中于后端实现,前端侧仅关注交互体验与页面组织,从而提升整体可维护性。
采用JWT完成认证与访问控制,保证接口层具备一致的安全基线。通过拦截器统一鉴权,将userId与role注入请求上下文,可在业务层实现细粒度权限校验。数据库层通过唯一约束与索引优化高频查询,结合逻辑删除策略提升数据可追溯性,为系统扩展与维护提供基础。
1.3 国内外研究现状
1.3.1 平台功能演进特点
二手交易平台的核心能力通常围绕信息展示、撮合交易、交易记录与内容治理展开。早期平台通常聚焦"信息发布与浏览",随着用户量与交易量的增长,平台会逐步引入订单流程、信用评价与治理机制,以解决交易纠纷与违规内容带来的负面影响。
随着平台规模扩大,内容审核与举报处理逐渐成为影响平台秩序与用户体验的关键因素。治理能力不仅包含违规内容的处置,还包括对异常账号的限制与对异常订单的处理。订单状态控制与异常处理策略也成为保障交易流程规范的重要手段,能够将交易过程约束在合理的状态路径内,降低规则不透明造成的纠纷。
1.3.2 工程实现的常见技术路线
工程实现层面常见做法包括基于Token的认证机制、基于角色的权限控制、基于状态字段或状态机的流程约束、前后端分离与组件化UI、通过分页与索引提升列表检索效率等。二手交易业务具有状态变化频繁、权限边界明确、列表查询高频的特点,因此上述工程实践能够较好匹配业务需求。
在终端形态上,Web端适合承载信息密集型页面与后台管理,小程序端适合承载移动端高频操作入口。多端共享后端接口能够降低重复开发成本,但也对接口规范、鉴权方式与错误处理一致性提出要求。
对于中小规模系统,采用成熟Web框架与关系型数据库构建可维护的业务系统仍是主流方案。通过在服务层集中实现业务校验与事务控制,可在保证开发效率的同时提升系统可靠性与可维护性。
1.4 研究内容与研究目标
1.4.1 研究内容
研究内容围绕二手交易平台核心流程展开,包含用户认证与信息维护、商品发布与展示、商品收藏、订单创建与状态管理、留言交互、评价体系、举报治理以及管理员后台管理与统计展示,并在终端形态上覆盖Web门户端、Web管理端与微信小程序端。
在业务层面,重点研究如何用状态字段组织交易过程,如何通过权限校验约束不同角色的操作边界,如何在交易完成时保证订单与商品状态的一致性。
在工程层面,重点研究如何在前后端分离架构下实现统一接口规范,如何在多端协同的情况下复用鉴权机制与接口调用方式,如何通过分页与索引保证高频列表查询的响应速度。
1.4.2 研究目标
研究目标包括:实现三类角色边界清晰;实现订单状态顺序约束与权限约束,并在订单完成时同步更新商品状态;实现JWT认证与拦截器鉴权;实现清晰的分层结构以提升可维护性;实现三端共享同一套后端接口并保证交互一致性。
在质量目标方面,系统应满足日常使用场景下的稳定性与可用性要求,保证核心流程在常见异常情况下能够给出明确提示并保持数据一致性。例如未登录访问受保护接口需要返回统一错误,订单状态不合法的操作需要阻断并提示,避免产生不可恢复的脏数据。
1.5 研究难点与创新点
1.5.1 研究难点
研究难点主要体现在交易流程状态一致性控制、多角色访问控制、列表检索与信息填充展示、多端一致的登录态管理与接口调用规范、治理闭环构建等方面。
其中,状态一致性控制是系统可靠性的关键:订单状态与商品状态存在联动,且不同角色在不同状态下拥有不同操作权限,若缺少统一校验容易出现越权与状态错乱。多端一致的登录态管理也是难点之一,Web与小程序在存储方式与请求机制上存在差异,需要在不增加后端复杂度的前提下保证鉴权一致。
1.5.2 创新点
创新点体现在以多维状态字段组织业务过程,形成交易过程与治理过程的双闭环;在管理端提供统计与趋势接口用于展示平台运行指标;在终端形态上形成Web门户端、Web管理端与微信小程序端协同的访问体系,使同一业务能力在不同场景下具备一致的使用入口。
在工程实践层面,系统通过统一鉴权方式与统一返回结构支撑三端复用,减少多端重复实现导致的规则差异。同时在关键业务流程中强调"权限与状态联合校验",使业务规则能够以可维护的方式固化到服务层实现。
1.6 本文组织结构
全文共六章。第一章介绍研究背景与目标;第二章阐述相关技术与理论基础;第三章完成需求与可行性分析;第四章给出系统总体设计与数据库设计;第五章给出系统关键模块的详细设计与实现;第六章总结与展望。
第二章 相关技术与理论基础
2.1 开发语言与核心框架介绍
后端采用Java 8,基于Spring Boot 2.7.18 构建Web服务。Spring Boot具备快速集成与自动配置能力,适用于中小型信息系统的快速开发与迭代。
数据访问层采用MyBatis Plus 3.5.3.1。该框架在保留SQL可控性的同时提供通用CRUD与分页能力,减少重复代码,提高开发效率,并与分层架构相匹配。
二手交易平台属于典型的信息管理与交易流程类系统,既需要处理大量列表查询与表单提交,也需要处理订单状态流转与权限边界等业务规则。基于Java生态构建后端能够利用成熟的工程体系与稳定的依赖管理,Spring Boot的自动配置与生态集成则可以显著降低项目搭建成本。
2.1.1 Spring Boot分层结构
系统后端采用Controller、Service、Mapper分层组织。Controller层统一接收请求并返回统一结构的结果对象;Service层负责业务规则校验、状态流转控制与事务处理;Mapper层基于MyBatis Plus完成数据读写。该结构在业务扩展时能够保持职责边界清晰,便于维护与测试。
在Controller层,系统通过统一的参数接收与统一的响应结构,将前端三端的请求规范化,避免出现不同接口返回格式不一致导致的前端适配成本增加。在Service层,系统聚焦实现"可读的业务规则",例如订单创建需要校验商品状态与买家身份,订单完成需要联动更新商品状态。Mapper层则尽量保持与数据库结构一致,使数据访问逻辑清晰可控。
2.1.2 MyBatis Plus选型说明
系统数据访问采用MyBatis Plus而非传统MyBatis的主要原因在于:系统存在大量标准的分页查询与CRUD场景,MyBatis Plus的通用能力可减少重复代码;同时保留自定义Mapper方法以满足个性化统计需求,例如用户发布商品数量统计与分类分布统计。
此外,MyBatis Plus提供的分页插件与条件构造能力能够较好支撑商品列表、订单列表、收藏列表等高频分页查询。对于二手交易平台这类以列表浏览为主要交互形式的系统,分页与条件查询的实现质量直接影响用户体验。通过框架提供的通用能力,可以将开发精力更多投入到业务规则与状态控制等核心逻辑。
2.2 前端技术介绍
前端采用Vue 3 作为核心框架,使用Vue Router进行路由组织,使用Pinia进行状态管理。UI组件库选用Element Plus,用于表格、表单、分页与对话框等常见交互的标准化实现。HTTP请求通过axios完成。
系统前端同时包含门户端与管理端两类页面形态。门户端侧重用户浏览与交易路径,页面多为商品列表、详情与表单发布;管理端侧重数据表格与筛选治理,页面多为统计卡片、数据表格、筛选表单与操作弹窗。Vue 3 的组合式能力与组件化思想适合构建可复用的页面组件,Element Plus则提供了后台页面常用的表格、分页与表单控件,降低了界面开发成本。
2.2.1 Web门户端实现特点
Web门户端承担普通用户的浏览、发布与交易操作。路由层通过meta字段标记需要登录的页面,路由守卫在进入页面前读取本地token并进行拦截,实现门户端页面层面的访问控制。门户端页面组件主要包含首页、商品详情、发布、我的发布、收藏、订单、消息、举报与个人中心等。
门户端的页面组织以"交易链路"为主线:列表与筛选提供信息获取能力,详情页承载收藏、留言与下单入口,订单页承载状态跟踪与确认收货入口,个人中心承载资料维护与密码修改入口。路由守卫用于阻止未登录用户进入需要登录的页面,同时在界面层对用户进行明确提示,减少因权限导致的操作失败。
2.2.2 Web管理端实现特点
Web管理端以单独路由前缀组织,采用独立布局组件承载后台菜单与内容区域。管理端路由同时要求登录与管理员角色,路由守卫在检测token的基础上进一步校验user的role字段,确保普通用户无法访问后台页面。
管理端的页面交互以表格与筛选为主,强调操作效率与信息密度。通过菜单将用户管理、商品管理、订单管理、举报处理等治理能力聚合到后台入口,管理员能够集中完成审核、下架、禁用等高权限操作。由于管理端操作具有较高风险,页面通常配合确认弹窗与状态标签展示,降低误操作概率。
2.2.3 前端状态管理与接口交互
系统通过本地存储保存token与用户信息,页面组件通过axios调用后端接口完成数据交互。列表类页面普遍采用分页参数page与size控制数据量,结合筛选条件实现组合查询。
状态管理的核心是保持登录态与用户信息在页面刷新后的可用性。门户端与管理端均需要在刷新后恢复token与用户信息,从而避免反复登录;同时在退出登录时清理缓存,防止账号切换造成的数据混乱。接口交互方面,axios统一封装请求头与错误处理,使得不同页面对未授权、无权限等情况能够一致处理。
2.3 数据库技术介绍
数据库采用MySQL 8,业务数据包含用户、分类、商品、收藏、订单、评价、留言、举报等实体,适合以关系模型表达并通过索引提升检索性能。表设计采用逻辑删除字段以支持数据可恢复与审计需求。
关系型数据库适合表达二手交易平台中"用户---商品---订单"的强关联关系,并能够通过事务机制支撑关键状态更新的原子性要求。对于订单完成与商品状态更新这类联动操作,关系型数据库在一致性保障方面具有天然优势。
2.3.1 索引与约束设计
用户表对username设置唯一约束以保证账号唯一性。收藏表对user_id与product_id设置联合唯一约束以避免重复收藏。订单表对order_no设置唯一约束以支持订单编号检索。商品表对user_id、category_id与status等字段设置索引以提升常用列表与筛选查询性能。
索引与约束的设置旨在从数据库层面保障数据质量并提升查询效率。用户名唯一约束防止重复注册造成账号混淆;收藏联合唯一约束防止同一用户对同一商品重复收藏;订单编号唯一约束便于按编号快速检索订单。对于商品列表这种高频查询场景,通过对发布者、分类与状态字段建立索引,可以显著降低筛选查询的扫描成本。
2.4 其他支撑技术
系统采用JWT进行身份认证。服务端在登录或注册成功后签发Token,前端在请求头中携带Authorization字段,后端拦截器校验Token并将userId与role写入请求属性供业务层使用。
系统提供文件上传接口用于商品图片与头像上传,并通过静态资源映射提供图片访问能力。
JWT认证机制适用于前后端分离与多端协同场景。令牌中携带用户身份信息,服务端通过签名校验保证令牌不被篡改,从而实现无状态的认证方式。相比传统Session,JWT更便于在Web与小程序等不同终端复用相同的鉴权逻辑,减少后端维护成本。
文件上传属于二手交易平台的基础能力,图片是商品描述的关键信息来源。系统通过统一上传接口接收图片文件并返回可访问路径,前端将该路径与商品信息一起保存,实现商品图片的展示与复用。
2.4.1 多端统一认证机制
Web门户端与Web管理端通过浏览器本地存储保存token,小程序端在全局数据中维护token并写入本地缓存。三端请求后端接口时均采用Authorization头携带Bearer token的方式,使后端认证逻辑保持统一,避免多套鉴权实现导致的维护成本增加。
统一认证机制的关键在于"后端只认一种方式"。无论请求来自浏览器还是小程序,后端都通过同一拦截器解析Authorization头并完成校验,业务层基于userId与role执行权限判断。该方案不仅降低开发成本,也减少了多端规则不一致带来的维护风险。
2.4.2 微信小程序端技术实现
小程序端采用微信小程序原生开发方式,app启动时从本地缓存读取token与userInfo并写入globalData。小程序端通过统一baseUrl指向后端api前缀,封装api模块完成商品、订单、消息与收藏等业务请求。
小程序端原生开发模式能够充分利用微信提供的页面生命周期、网络请求与本地缓存能力。在实现上,小程序端通过统一的接口封装减少页面重复代码,并在请求前统一补齐认证头信息,从而与Web端形成一致的调用规范。对于移动场景常见的网络波动,小程序端页面通常采用加载提示与失败重试提示,提升交互可用性。
2.5 面向对象设计思想
系统后端采用Controller、Service、Mapper三层结构,Controller负责接收请求与返回统一响应,Service负责业务规则与事务控制,Mapper负责与数据库交互。分层结构可以将复杂业务拆分为清晰的职责单元,使接口层、业务层与数据层各自聚焦,从而降低耦合并提升可维护性。
在面向对象思想的指导下,系统将业务对象抽象为实体类与业务服务。实体类用于承载表结构映射与业务状态字段,例如用户、商品、订单等对象均具有明确的属性集合;服务层以方法的形式封装业务规则与状态流转,使"规则"集中在一处,便于后续修改与扩展。
此外,二手交易平台存在大量"列表展示"与"详情展示"场景,仅依赖数据库表字段往往不足以直接满足页面展示需求。因此系统在实体或返回对象中引入部分非持久化字段,用于承载跨表填充后的展示信息,从而减少前端进行二次拼装的复杂度。
2.5.1 实体与展示字段设计
商品实体在保持表字段映射的基础上,增加分类名称、卖家昵称、卖家头像与是否收藏等非持久化字段,用于列表与详情页面的直接展示。该设计能够将"展示所需信息"尽可能在后端一次性组织完成,前端只需渲染即可,减少多端重复联表与重复请求。
例如在商品列表与详情中,分类名称与卖家信息属于跨表字段,若由前端分别请求用户信息与分类信息会引入额外网络开销,并增加页面逻辑复杂度。通过后端填充这些字段,门户端与小程序端可以在同一数据结构下完成渲染,实现多端一致的展示效果。
订单实体增加商品标题、商品首图、买家昵称、卖家昵称与是否已评价等非持久化字段,用于订单列表展示与评价入口控制。订单列表属于高频访问页面,用户希望在列表中直接看到与订单相关的关键信息。通过将商品与用户的摘要信息与订单数据合并返回,可减少列表页的额外请求,提高页面加载速度。
@@
2.6 数据库设计理论
数据库设计遵循需求分析、概念结构设计、逻辑结构设计的流程。需求分析阶段需要明确系统的核心业务对象、数据流与约束关系;概念结构设计将业务对象抽象为实体并用关系表达约束;逻辑结构设计将实体映射为关系表并设置主键、外键、唯一约束与索引,以满足数据一致性与查询性能要求。
在本项目中,需求分析阶段重点识别了用户、商品、订单、收藏、留言、评价与举报等核心实体,并明确它们之间的关联关系与访问边界。概念结构设计通过"一对多""一对一"等关系表达交易与治理过程,例如用户与商品的一对多关系表达"发布者拥有多件商品",订单与评价的一对一关系表达"每个订单最多对应一次评价"。
逻辑结构设计阶段将实体映射为表结构,并通过状态字段体现业务状态。商品状态、订单状态、留言状态与举报状态等字段使业务流程能够以可持久化、可查询的方式表达,从而支撑列表筛选、统计分析与异常治理。
系统表结构中通过逻辑删除字段实现软删除策略。软删除能够在不破坏数据引用关系的前提下实现"删除效果",同时保留必要的数据追溯能力,便于后续审计与统计。在交易类系统中,逻辑删除相比物理删除更适合长期演进与运营管理。
2.7 本章小结
本章介绍了系统实现涉及的后端、前端与数据库技术方案,明确Spring Boot与MyBatis Plus在分层结构与数据访问方面的作用,阐述Vue 3、Element Plus、Pinia与Vue Router在门户端与管理端中的组织方式,并补充微信小程序端的原生开发方式与统一认证机制。
在数据层面,本章说明了MySQL的表结构设计、索引与约束策略,并结合业务特点解释了状态字段与逻辑删除策略在交易与治理流程中的作用。在工程实现层面,本章补充了基于分层结构的面向对象设计思想,以及实体类中"持久化字段与展示字段"并存的设计方式,支撑三端页面在列表与详情场景下的高效展示。
通过多端共用后端接口与统一鉴权逻辑,系统在终端形态扩展时能够保持业务规则一致与维护成本可控,为后续总体设计与详细实现章节的展开奠定基础。
第三章 需求与可行性分析
3.1 功能需求分析
3.1.1 管理端功能需求
管理端面向管理员角色,提供平台治理与运营管理能力,包含统计面板、用户管理、商品管理、分类管理、订单管理与举报处理等模块。管理端的目标并非直接参与交易撮合,而是通过规则约束与异常处置保证平台秩序,使门户端与小程序端的交易过程在可控范围内运行。
统计面板用于展示用户数量、商品数量、订单数量与成交总金额等指标,并提供订单趋势与分类分布数据用于图表展示。该模块强调"聚合查询"与"可视化呈现"的配合:后端将多表数据汇总为统计指标,前端以卡片与折线图、饼图等方式展示,降低管理员对明细数据逐条浏览的成本。
用户管理支持普通用户列表查询与启用禁用操作。启用禁用属于高权限操作,业务上需要体现对账号状态的约束:账号被禁用后应无法登录并发起发布、下单等核心操作,从而减少恶意用户对平台秩序的影响。
商品管理支持商品列表查询、按条件筛选、商品审核与强制下架。审核用于对内容合规进行前置把关,强制下架用于对已发布但违规的商品进行事后处置。两类操作都要求平台侧能够追溯到商品发布者与商品状态,避免出现"下架后仍可交易"的异常情况。
分类管理支持分类新增、更新与删除,用于维护门户端与小程序端的筛选导航数据。分类排序影响前端展示的可用性,分类状态控制用于在不删除历史数据的情况下隐藏不再使用的分类。
订单管理支持订单列表查询与按状态筛选,并支持异常订单删除。订单管理的重点在于"状态可追溯"与"异常可处理",例如当订单处于已取消或已完成状态时,删除操作不应影响核心交易链路,但需要保留必要信息以便后续审计与统计。
举报处理支持举报列表查询、状态筛选以及处理结果记录。举报处理属于平台治理闭环的重要环节:用户侧提交举报,平台侧进行处理或驳回并记录结果,使平台对违规内容具备响应能力。
3.1.2 门户端功能需求
门户端面向普通用户与游客,是系统在PC场景下的主要使用入口。门户端强调信息获取效率与交易链路清晰:用户需要快速定位商品、了解商品详情、与卖家沟通,并在确认意向后完成下单与状态跟踪。
普通用户在登录后可使用账号注册登录、个人信息维护、商品发布与状态管理、商品浏览检索与筛选、商品收藏、订单创建与状态流转、留言与回复、评价与举报等功能。围绕核心交易流程,门户端应形成一条完整路径:浏览与筛选商品、进入商品详情、收藏或留言咨询、创建订单、卖家确认、买家确认收货、交易完成后评价,从而将"信息浏览"自然过渡到"交易闭环"。
在商品发布与管理方面,门户端需要支持发布者对商品进行编辑与状态管理。商品状态的存在可以降低误操作风险:例如发布者可先保存为草稿,信息完善后再上架;交易完成后商品进入已售状态,避免再次被购买;主动下架则用于暂时停止展示与交易。
在商品浏览与检索方面,门户端需要提供组合筛选能力,包括分类筛选、关键词搜索与价格区间筛选。组合筛选可减少用户在大量商品中筛选的时间成本,同时分页展示能够控制一次请求的数据量并提升页面响应速度。
在交易过程中,门户端需要对订单状态变化进行明确提示,并在不同状态下开放不同操作入口。例如待确认状态下允许卖家确认或买卖双方取消,交易中状态下允许买家确认收货,已完成状态下允许买家评价。该设计能够将业务规则直观呈现给用户,减少因规则不透明产生的纠纷。
游客无需登录即可浏览商品列表与商品详情,但无法进行发布、收藏、下单、留言、评价与举报等操作。该边界有助于提升系统的访问转化率与内容曝光,但也要求在接口层面进行鉴权保护,避免仅依赖前端页面隐藏按钮。
3.1.3 微信小程序端功能需求
微信小程序端面向移动场景,功能与门户端保持一致,强调"轻量交互"与"随时可用"。与浏览器端相比,小程序端在页面切换、输入体验与拍照上传等方面更贴近移动端习惯,适合在碎片化时间完成浏览、沟通与下单。
小程序端包含首页、商品列表与详情、发布、订单列表与详情、消息列表、收藏、个人中心、我的商品、登录与注册等页面,并通过tabBar组织首页、商品、订单与我的四个入口。tabBar的设置能够将用户最常用的路径前置,减少多级页面跳转,提高移动端的操作效率。
在"发布"场景下,小程序端通常需要更高频的图片上传能力。系统通过统一的文件上传接口与静态资源访问路径,使得门户端与小程序端对图片资源的处理方式保持一致,从而减少后端维护两套上传逻辑的复杂度。
小程序端通过统一baseUrl调用后端接口,并在本地缓存保存登录态。该设计使得小程序端在重新打开或切换页面时能够快速恢复用户状态,减少反复登录的摩擦成本,同时与Web端采用相同的鉴权方式,保证后端安全策略一致。
3.2 非功能需求分析
3.2.1 安全性需求
系统采用JWT作为接口访问凭证,拦截器统一校验令牌有效性。对于门户端与小程序端而言,令牌机制能够避免传统Session在多端场景下的共享与跨域问题;对于管理端而言,令牌能够在接口层形成明确的访问边界,防止后台接口被未授权调用。
系统通过角色字段区分普通用户与管理员,管理端接口在服务端校验角色。除角色校验外,系统还需要在业务层做细粒度的权限判断,避免出现"有登录态但越权操作"的情况,例如普通用户尝试调用管理员接口,或用户尝试修改不属于自己的商品与订单。
关键业务操作需要校验数据归属关系,例如商品编辑与状态修改仅允许发布者操作,订单确认仅允许卖家操作,确认收货仅允许买家操作。通过将userId与role写入请求上下文并在服务层进行校验,可以将权限控制集中到核心业务逻辑处,避免仅依赖前端传参导致的安全风险。
用户密码采用MD5 加密存储,密码修改需校验原密码。尽管MD5 的安全性不如更强的哈希方案,但相比明文存储仍显著降低泄露风险。后续优化可在不改变业务接口的前提下,引入更强的密码存储策略并增强密码强度校验。
3.2.2 性能与可扩展性需求
系统对商品、订单、收藏、留言与举报等列表采用分页查询,并支持组合筛选条件以降低响应时间。分页参数的引入可以将请求响应的时间复杂度稳定在可控范围内,避免随着数据量增长出现明显的卡顿或超时。
组合筛选条件的设计需要兼顾性能与可用性:例如商品列表的关键词与分类筛选、价格区间筛选属于高频需求,应通过索引、条件拼接与合理排序保证响应速度;管理端的多条件查询则更偏向治理场景,需要在保证准确性的前提下提供可追溯的筛选能力。
数据库通过索引与唯一约束提升查询效率并保障数据一致性。唯一约束能够从数据库层面防止重复数据写入,例如收藏的重复记录;索引则能提升常用筛选条件的查询效率。对于涉及状态流转的表,合理的状态字段设计能够使查询与统计更直接,减少复杂联表。
系统后端以REST接口对外提供能力,门户端、管理端与小程序端共用接口与统一返回结构,便于新增终端形态或扩展页面。三端共用接口也意味着必须保持参数与返回字段的兼容性,因此统一的响应结构与错误码对于降低多端维护成本具有重要意义。
3.3 技术可行性分析
3.3.1 技术选型可行性
系统采用Spring Boot、Vue 3、Element Plus、MyBatis Plus与MySQL 8 等成熟技术栈,具备稳定生态与工程实践经验。JWT认证机制满足前后端分离场景下的接口访问控制需求。微信小程序端采用原生开发并通过统一baseUrl调用后端接口,能够与现有后端服务稳定协同。
3.3.2 技术风险与控制
针对状态一致性风险,系统在服务层集中校验状态流转,并在关键更新中使用事务保证原子性。订单与商品的联动更新属于高风险点:例如订单完成后需要将商品更新为已售,若仅更新其中一方可能导致"订单已完成但商品仍可购买"的异常。
针对列表性能风险,采用分页与索引降低数据库压力,并通过合理的筛选条件避免全表扫描。在数据规模扩大时,可进一步对热点查询进行缓存或对统计类接口做预聚合。
针对接口安全风险,通过拦截器统一鉴权与关键业务规则校验降低越权风险。同时需要避免在接口返回中泄露敏感信息,例如密码等字段不应作为响应内容返回。
3.4 本章小结
本章从三端形态出发对系统功能需求与非功能需求进行梳理,并对技术选型与风险控制进行论证,为系统总体设计与详细实现提供依据。
第四章 系统总体设计
4.1 系统架构设计
4.1.1 总体架构
系统采用前后端分离架构,后端提供统一REST接口。前端由Web门户端与Web管理端组成,微信小程序端采用原生开发并通过同一接口访问后端服务。数据库用于业务数据持久化存储,后端通过拦截器实现统一认证控制,并通过统一响应结构返回结果。
在该架构下,后端作为业务规则与数据一致性的"权威入口",负责处理登录鉴权、业务校验、状态流转与数据持久化。前端三端分别面向不同使用场景,实现差异化的交互体验,但在业务含义与接口语义上保持一致。
为降低多端联调成本,系统接口采用统一的URL风格、请求参数与返回结构。通过统一的错误码与提示信息,前端能够对未登录、无权限、参数错误、业务状态不合法等情况进行一致处理,从而提升用户体验。
【此处插入系统架构截图】
4.1.2 三端协同
Web门户端主要服务普通用户的浏览与交易操作,Web管理端主要服务平台治理与运营,微信小程序端主要服务移动场景下的快速浏览与交易。三端共用一套后端接口并复用统一认证机制,使业务规则在不同终端保持一致。
三端协同的关键在于"同一业务规则,多种交互呈现"。例如商品发布在Web端更多体现为表单输入与图片上传,在小程序端更多体现为移动端选择图片与快速发布;但后端对商品状态、审核状态与发布者身份的校验逻辑应保持一致,从而避免规则分裂。
管理端与用户端的协同体现为治理闭环:用户端产生发布、交易与举报等行为数据,管理端对违规内容与异常订单进行处置,并通过统计面板对平台运行状态进行监控,形成可运营的系统。
4.1.3 分层设计
后端采用Controller、Service、Mapper分层结构,Controller负责请求接收与统一响应,Service负责业务规则与状态流转控制,Mapper负责数据库读写。分层结构能够将"接口形态"与"业务规则"解耦:Controller保持参数接收与响应一致,Service负责复杂规则校验与事务控制,Mapper聚焦数据访问。
前端三端分别负责界面展示与交互,并通过接口调用后端服务完成业务处理。门户端与管理端通过路由组织页面并维护登录态,小程序端通过全局数据与本地缓存保持登录态。三端均以令牌为认证凭证,保证调用方式统一。
4.2 功能模块设计
4.2.1 门户端模块
门户端模块包括首页与商品浏览检索、商品详情、发布与我的商品、收藏、订单、消息、举报与个人中心等页面,路由层通过登录态控制需要认证的页面。
门户端页面设计以"交易链路"为主线:从列表进入详情,在详情页完成收藏、留言与下单等动作;在订单模块跟踪状态并完成确认收货与评价;在个人中心集中维护头像、昵称与密码等信息。该模块划分能够将高频操作放在少量入口内,提升用户使用效率。
4.2.2 管理端模块
管理端模块包括统计面板、用户管理、商品管理、分类管理、订单管理与举报处理等页面,页面与接口均要求管理员权限。
管理端页面以后台布局承载菜单与内容区域,适合承载表格查询、筛选、批量操作与详情查看等典型后台交互。通过将治理能力集中在管理端,可以减少普通用户侧的复杂度,并提高平台治理操作的可控性与可追溯性。
4.2.3 小程序端模块
小程序端模块包括首页、商品、发布、订单、消息、收藏与我的等页面与入口,采用tabBar组织核心入口并通过本地缓存保持登录态。
小程序端在移动网络环境下对响应速度更敏感,因此页面请求通常以"列表优先、详情按需"的方式组织:先展示商品列表与基础信息,进入详情后再展示留言、收藏状态等扩展信息,以降低首屏等待时间。
【此处插入功能模块结构截图】
4.3 数据库设计
4.3.1 概念结构设计
系统核心实体包括用户、分类、商品、收藏、订单、评价、留言与举报。用户与商品为一对多关系,商品与分类为多对一关系,用户与收藏为一对多关系,订单关联买家、卖家与商品,评价与订单为一对一关系,留言与商品为多对一关系,举报与商品为多对一关系。
概念结构设计的目标是将业务过程中的关键对象抽象为实体,并用关系表达它们之间的约束。例如订单同时关联买家、卖家与商品,用于表达一次交易行为;评价与订单一对一关系用于表达"交易完成后的反馈";举报与商品的关联用于表达"对内容的治理"。通过明确这些实体与关系,可以为后续的表结构设计与接口设计提供清晰依据。
【此处插入数据库概念结构截图】
4.3.2 逻辑结构设计
以下表结构来自database目录中的初始化脚本。
逻辑结构设计的重点在于将概念实体落地为可执行的表结构,并在字段层面体现业务约束。本系统的核心表围绕用户、商品与订单三类对象展开,辅以收藏、留言、评价与举报等辅助表形成完整的交易与治理闭环。
在字段设计上,尽量采用清晰的状态字段表达业务阶段,避免将业务语义隐含在时间字段或复杂关联中。同时通过唯一约束与索引提升高频查询性能,使得商品列表、订单列表与管理端筛选在数据量增长后仍能保持可接受的响应时间。
用户表用于存储平台用户与管理员账号信息。
用户表以username唯一约束保证账号唯一性,以role区分普通用户与管理员,以status体现账号启用禁用状态。通过在用户表中保留状态与角色信息,可以在鉴权与业务校验时减少额外查询。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | BIGINT | 用户ID |
| username | VARCHAR(50) | 用户名 |
| password | VARCHAR(64) | 密码MD5 加密 |
| phone | VARCHAR(20) | 手机号 |
| nickname | VARCHAR(50) | 昵称 |
| avatar | VARCHAR(255) | 头像URL |
| role | TINYINT | 角色 0 普通用户 1 管理员 |
| status | TINYINT | 状态 0 禁用 1 正常 |
| create_time | DATETIME | 创建时间 |
| update_time | DATETIME | 更新时间 |
| deleted | TINYINT | 逻辑删除 |
商品分类表用于存储商品分类信息。
分类表主要服务于门户端与小程序端的导航与筛选。通过sort字段控制前端展示顺序,通过status字段实现分类的启用禁用,在不删除历史数据的情况下控制分类是否对外展示。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | BIGINT | 分类ID |
| name | VARCHAR(50) | 分类名称 |
| sort | INT | 排序 |
| status | TINYINT | 状态 0 禁用 1 正常 |
| create_time | DATETIME | 创建时间 |
| update_time | DATETIME | 更新时间 |
| deleted | TINYINT | 逻辑删除 |
商品表用于存储商品信息与展示属性。
商品表是系统最核心的业务表之一。商品信息既包含描述类字段(title、description、images、quality、tags),也包含流程类字段(status、audit_status、view_count)。其中status用于表达商品生命周期,audit_status用于表达平台审核结果,二者共同决定商品是否可被展示与交易。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | BIGINT | 商品ID |
| user_id | BIGINT | 发布者ID |
| category_id | BIGINT | 分类ID |
| title | VARCHAR(100) | 商品标题 |
| description | TEXT | 商品描述 |
| price | DECIMAL(10,2) | 价格 |
| original_price | DECIMAL(10,2) | 原价 |
| images | VARCHAR(1000) | 商品图片数组字符串 |
| quality | VARCHAR(20) | 新旧程度 |
| tags | VARCHAR(200) | 标签 |
| status | TINYINT | 状态 0 草稿 1 上架 2 已售 3 下架 |
| view_count | INT | 浏览次数 |
| audit_status | TINYINT | 审核状态 0 待审核 1 通过 2 拒绝 |
| create_time | DATETIME | 创建时间 |
| update_time | DATETIME | 更新时间 |
| deleted | TINYINT | 逻辑删除 |
收藏表用于存储用户收藏记录。
收藏表用于表达用户与商品之间的偏好关系。通过在数据库层对user_id与product_id进行唯一性约束,可以从源头避免重复收藏记录,减少业务层重复判断逻辑并降低数据冗余。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | BIGINT | 收藏ID |
| user_id | BIGINT | 用户ID |
| product_id | BIGINT | 商品ID |
| create_time | DATETIME | 创建时间 |
订单表用于存储交易订单与状态。
订单表用于沉淀交易过程,并通过status字段表达交易阶段。订单中同时记录buyer_id、seller_id与product_id,保证一次交易行为具备完整的参与者信息与关联对象信息,为后续订单查询、权限校验与统计分析提供依据。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | BIGINT | 订单ID |
| order_no | VARCHAR(32) | 订单编号 |
| buyer_id | BIGINT | 买家ID |
| seller_id | BIGINT | 卖家ID |
| product_id | BIGINT | 商品ID |
| price | DECIMAL(10,2) | 成交价格 |
| status | TINYINT | 状态 0 待确认 1 交易中 2 已完成 3 已取消 |
| remark | VARCHAR(500) | 备注 |
| create_time | DATETIME | 创建时间 |
| update_time | DATETIME | 更新时间 |
| deleted | TINYINT | 逻辑删除 |
评价表用于存储订单评价与评分。
评价表与订单形成绑定关系,使评价数据与真实交易对应。通过订单完成后才允许评价的业务约束,可以提升评价数据的可信度,并为后续卖家评分展示提供数据基础。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | BIGINT | 评价ID |
| order_id | BIGINT | 订单ID |
| user_id | BIGINT | 评价人ID |
| seller_id | BIGINT | 被评价人ID |
| rating | TINYINT | 评分 1 到 5 |
| content | VARCHAR(500) | 评价内容 |
| create_time | DATETIME | 创建时间 |
留言表用于存储商品留言与卖家回复。
留言表用于承载交易前沟通信息,通过status字段区分是否已回复。reply_content与reply_time记录卖家回复信息,使沟通过程具备可追溯性,并便于卖家在消息页集中处理未回复留言。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | BIGINT | 留言ID |
| product_id | BIGINT | 商品ID |
| user_id | BIGINT | 留言用户ID |
| content | VARCHAR(500) | 留言内容 |
| reply_content | VARCHAR(500) | 回复内容 |
| reply_time | DATETIME | 回复时间 |
| status | TINYINT | 状态 0 未回复 1 已回复 |
| create_time | DATETIME | 创建时间 |
举报表用于存储商品举报与处理结果。
举报表用于形成平台治理闭环。status字段区分待处理、已处理与已驳回,result与handle_time用于记录处理结果与处理时间,使治理过程可追溯。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | BIGINT | 举报ID |
| user_id | BIGINT | 举报人ID |
| product_id | BIGINT | 被举报商品ID |
| reason | VARCHAR(50) | 举报原因 |
| description | VARCHAR(500) | 详细描述 |
| status | TINYINT | 状态 0 待处理 1 已处理 2 已驳回 |
| result | VARCHAR(500) | 处理结果 |
| handle_time | DATETIME | 处理时间 |
| create_time | DATETIME | 创建时间 |
4.4 关键业务流程总体设计
4.4.1 登录鉴权流程
系统在登录或注册成功后签发令牌,客户端保存令牌并在请求受保护接口时携带令牌,拦截器校验通过后执行业务逻辑并返回结果。
在三端协同场景中,登录鉴权流程需要做到两点:其一,令牌签发与校验规则一致,保证Web与小程序端行为一致;其二,登录态的存储方式符合终端特性,Web端使用本地存储,小程序端使用本地缓存与全局变量,但无论存储方式如何,最终都以请求头携带令牌的方式调用后端接口。
开始
提交登录信息
校验账号与密码
签发令牌
客户端保存令牌
请求业务接口
拦截器校验令牌
返回结果
结束
4.4.2 交易流程
交易流程以订单状态流转为主线,订单完成后同步更新商品状态为已售。
交易流程的设计重点在于权限边界与状态顺序约束。买家创建订单后进入待确认,由卖家确认后进入交易中;买家确认收货后进入已完成;订单完成或取消后不应再回到前置状态。系统通过在服务层校验当前状态与操作者身份,保证流程严格按顺序执行。
开始
买家创建订单
订单待确认
卖家确认
订单交易中
买家确认收货
订单已完成
商品状态已售
结束
4.4.3 商品发布与上架流程
商品发布流程需要同时满足"信息完整"与"权限正确"。发布者必须登录后才能发布商品,后端写入发布者身份并初始化商品状态与审核状态。商品上架后才能在公共列表中展示并允许下单。
开始
用户登录
填写商品信息
上传商品图片
提交发布请求
写入发布者ID
初始化商品状态
保存商品数据
商品进入列表展示
结束
4.4.4 留言沟通流程
留言沟通流程用于交易前咨询,强调沟通可追溯与处理状态明确。买家在商品详情页提交留言,卖家在消息页查看并回复,系统更新留言状态。
开始
买家提交留言
保存留言未回复
卖家查看留言
卖家提交回复
更新回复与状态
结束
4.4.5 举报治理流程
举报治理流程用于对违规商品进行处置。用户提交举报后形成待处理记录,管理员在后台处理举报并记录处理结果,必要时对商品进行强制下架。
开始
用户提交举报
保存举报待处理
管理员查看举报
管理员处理或驳回
记录处理结果
必要时商品下架
结束
4.5 本章小结
本章完成系统总体设计,明确三端协同与统一接口的架构方案,给出功能模块划分与数据库设计,并对登录鉴权流程与交易流程进行总体描述,为系统详细设计与实现提供结构基础。
第五章 系统详细设计与实现
5.1 系统主页设计与实现
5.1.1 Web门户端主页
门户端主页以商品推荐与分类导航为核心,提供商品列表入口、分类筛选入口与搜索入口。主页信息结构以"列表优先"为原则:优先展示商品卡片的标题、价格、首图与基础标签,使用户在最短时间内完成浏览与初步筛选。
在交互层面,门户端主页支持按分类快速切换列表内容,并通过关键词搜索缩小范围。为了降低用户从浏览到交易的跳转成本,主页的商品卡片直接关联商品详情页入口,用户进入详情后可进一步进行收藏、留言咨询与下单。
从数据获取角度看,主页展示的数据主要来自商品列表接口,采用分页参数控制一次返回的数据量,并结合筛选条件实现组合查询。列表展示的数据字段与详情展示字段存在差异:列表强调摘要信息,详情强调完整描述与交易相关信息,因此主页在展示层做轻量渲染,详情页再补齐更多字段。

5.1.2 Web管理端主页
管理端主页用于展示平台运营概况,包含用户数量、商品数量、订单数量与成交总金额等统计卡片,并提供订单趋势与分类分布数据用于图表展示。该页面的设计目标是让管理员以低成本掌握平台整体运行状态,及时发现异常波动并定位治理方向。
统计卡片的指标用于回答"平台规模与交易活跃度"的基础问题,趋势图用于观察近期变化,分类分布用于观察供给侧结构。在实现上,管理端主页通过聚合统计接口获取指标数据,前端将接口返回结果映射为图表组件的数据源,实现与业务数据的解耦。
由于统计类接口通常涉及多表汇总,页面采用"按需加载"方式:进入管理端主页后再请求统计接口,避免在登录完成前进行无意义请求。同时该页面只对管理员开放,路由守卫与接口鉴权共同保证访问边界。

5.1.3 微信小程序首页
小程序首页提供轮播与分类导航入口,并提供推荐商品展示。底部tabBar提供首页、商品、订单与我的四个核心入口,便于移动场景下快速访问。小程序端首页在布局上强调"触达效率",将高频入口放在首屏,减少在移动端的多次返回与跳转。
首页推荐列表的交互与门户端一致:点击商品进入详情页,进一步进行收藏、留言与下单。移动端在图片展示与滑动浏览方面具有天然优势,因此小程序首页通常以图片列表的方式呈现商品信息,配合价格与标题形成快速决策信息。
小程序首页的数据获取同样通过商品列表接口实现。与Web端不同的是,小程序端需要更关注网络波动与首屏体验,因此在页面加载时优先请求列表数据并渲染,扩展信息在进入详情后再请求,保证首屏响应。

5.2 核心功能模块设计与实现
5.2.1 身份认证与访问控制
系统采用JWT作为认证机制。登录成功后生成Token,前端请求在Authorization中携带Bearer Token。后端通过拦截器校验Token,有效则将userId与role写入请求属性供后续接口使用。
在三端实现上,门户端与管理端通过浏览器本地存储保存令牌,小程序端通过本地缓存与全局变量保存令牌。为保证统一性,三端在请求拦截处统一将令牌写入请求头,从而使后端无需区分终端类型即可完成鉴权。
访问控制不仅体现在"是否登录",还体现在"是否有权限"。管理端页面除登录态外还需要管理员角色,普通用户即使获取了令牌也无法访问管理端页面与管理端接口。对于普通用户侧的核心业务接口,系统通过比对请求中的userId与数据归属字段实现细粒度控制,避免越权修改他人商品、他人订单或他人留言。

登录流程说明。
开始
提交用户名与密码
后端查询用户
校验密码与账号状态
生成令牌
返回令牌与用户信息
结束
关键代码如下。
java
// AuthInterceptor 认证拦截核心逻辑
String token = request.getHeader("Authorization");
if (token != null && token.startsWith("Bearer ")) {
token = token.substring(7);
}
if (token == null || !jwtUtil.isValid(token)) {
response.setStatus(401);
response.getWriter().write(new ObjectMapper().writeValueAsString(Result.error(401, "请先登录")));
return false;
}
request.setAttribute("userId", jwtUtil.getUserId(token));
request.setAttribute("role", jwtUtil.getRole(token));
return true;
5.2.2 商品发布与状态管理
商品发布接口由登录用户调用,后端写入发布者ID并保存商品数据。商品状态用于描述商品生命周期,包括草稿、上架、已售、下架。商品列表仅展示上架且审核通过的商品,商品详情访问时会增加浏览次数。
商品发布在三端的交互形态不同,但业务逻辑一致。门户端与小程序端都需要支持填写标题、描述、价格、分类、成色等信息,并支持上传多张图片。后端在保存商品时统一写入发布者标识,并初始化浏览次数等字段,使商品从创建开始具备可展示的基础属性。
商品状态管理是平台交易规则的基础。发布者对商品进行上架与下架,用于控制是否对外展示;交易完成后商品进入已售状态,用于阻断重复交易。通过将状态作为字段持久化存储,可以在列表查询、详情展示与订单创建等关键环节进行一致校验。

商品发布流程说明。
开始
用户填写商品信息
上传图片
提交发布请求
写入发布者ID
保存商品数据
返回发布结果
结束
关键代码如下。
java
// ProductService 发布逻辑
if (product.getStatus() == null) {
product.setStatus(1);
}
product.setAuditStatus(1);
product.setViewCount(0);
productMapper.insert(product);
5.2.3 商品浏览检索与收藏
商品列表支持分页与条件查询,条件包含分类、关键词、最低价与最高价。服务端查询满足上架与审核通过条件的数据,并补充分类名称与卖家信息。收藏模块支持添加收藏、取消收藏与查询收藏列表,收藏表对userId与productId设定唯一约束以避免重复收藏。
商品浏览模块通过"列表与详情分离"的方式组织:列表页提供筛选与排序入口,详情页展示完整描述、图片与卖家信息。该设计能够在保证首屏性能的前提下提供足够的信息用于交易决策。
收藏功能用于沉淀用户偏好并提高回访效率。用户在商品详情页进行收藏与取消收藏,收藏列表以分页形式展示,便于用户集中管理。数据库层的联合唯一约束能够从根源上避免重复收藏造成的数据膨胀,同时简化业务层对重复写入的处理。
从权限角度,收藏、收藏列表等接口都需要登录态支持。系统在接口层校验令牌后,再以userId作为条件查询收藏记录,保证用户只能看到自己的收藏数据。

商品浏览检索流程说明。
开始
用户输入筛选条件
请求商品列表接口
服务端构造查询条件
分页查询商品
填充分类与卖家信息
返回分页结果
结束
5.2.4 订单创建与状态流转
订单状态包含待确认、交易中、已完成、已取消。创建订单时要求商品处于上架状态且买家不能购买自己的商品。卖家确认订单后进入交易中。买家确认收货后订单变为已完成,并同步将商品状态更新为已售。买家或卖家在订单完成前可取消订单。
订单模块的核心是状态机思想的工程化落地。系统以订单状态字段明确标识当前交易阶段,并在服务层对状态流转进行顺序约束:只有在前置状态满足时才允许进入后续状态,从而减少"并发点击""重复确认"等异常造成的数据不一致。
在权限控制方面,订单创建由买家发起,卖家确认由卖家执行,确认收货由买家执行。系统通过在请求上下文中获取userId并与订单中的buyerId、sellerId进行比对,保证操作者身份与业务动作匹配。
订单与商品的联动更新是关键一致性点。订单完成时同步将商品状态更新为已售,避免商品仍处于可购买状态。该更新通常在同一业务事务内完成,保证两张表的状态同时落地,从而形成可追溯的交易闭环。

订单流转流程说明。
开始
买家创建订单
校验商品上架
生成订单待确认
卖家确认
订单交易中
买家确认收货
订单已完成
商品状态更新已售
结束
关键代码如下。
java
// OrderService complete 逻辑
if (!order.getBuyerId().equals(userId)) {
throw new RuntimeException("无权操作");
}
if (order.getStatus() != 1) {
throw new RuntimeException("订单状态不正确");
}
order.setStatus(2);
orderMapper.updateById(order);
Product product = new Product();
product.setId(order.getProductId());
product.setStatus(2);
productMapper.updateById(product);
5.2.5 留言回复与评价
留言模块支持买家对商品留言,卖家对留言进行回复并更新留言状态。评价模块要求订单状态为已完成且评价只能由买家提交,同时对同一订单限制仅能评价一次。系统提供查询卖家评价列表与平均评分的能力。
留言模块用于在交易前进行咨询沟通,减少信息不对称。留言与回复采用"买家发起、卖家回复"的交互方式,留言状态字段用于区分未回复与已回复,便于卖家在消息页集中处理。
评价模块用于在交易完成后形成信用反馈。系统将评价与订单绑定,避免评价与真实交易脱离。通过限制订单必须处于已完成状态、限制同一订单仅可评价一次,可以减少刷评与无效评价,提高评价数据可信度。
在展示层面,卖家评价列表与平均评分用于在商品详情或卖家信息处呈现,提升用户对交易对象的信任感。该能力对二手交易场景尤为重要,能够在一定程度上缓解陌生人交易的弱信任问题。

留言回复流程说明。
开始
买家提交留言
保存留言未回复
卖家查看留言
卖家提交回复
更新回复内容与状态
结束
5.2.6 举报与管理员处理
举报模块支持用户对商品提交举报,举报记录包含原因、描述与状态。管理员在后台查看举报列表,对举报进行处理或驳回,并填写处理结果与处理时间。
举报模块是平台治理的重要入口。当用户发现违规信息时,可通过举报提交原因与描述,形成待处理记录。举报状态字段用于区分待处理、已处理与已驳回,便于管理端按状态筛选并分批处理。
管理员处理举报时需要兼顾治理效果与可追溯性。处理结果与处理时间的记录能够为后续纠纷处理提供依据,也可为平台运营提供数据支撑,例如统计某类违规的出现频率并优化审核策略。


举报处理流程说明。
开始
用户提交举报
保存举报待处理
管理员查询举报列表
管理员填写处理结果
更新举报状态与处理时间
结束
5.2.7 管理员后台统计与治理
管理员端提供统计数据接口,包含用户数量、商品数量、订单数量与成交总金额。提供近七天订单趋势与分类分布数据接口用于前端图表展示。管理员治理能力包含用户启用禁用、商品审核与强制下架、分类维护、订单删除与举报处理。
管理员治理能力的实现强调"可控操作"与"边界明确"。例如启用禁用用户会影响登录与核心操作权限,商品强制下架会影响公共列表展示与交易创建,订单删除与举报处理则关系到数据追溯。为避免误操作,后台页面通常配合确认弹窗与清晰的状态展示,使管理员在执行高风险操作前能够再次确认。
统计能力与治理能力相互支撑:统计面板用于发现异常或趋势变化,治理模块用于对异常进行处置并将处理结果回写到系统中。通过这种闭环,系统不仅能够完成交易功能,还能够在运营与合规层面形成可持续的管理机制。
5.3 关键业务流程说明
系统关键业务流程包括身份认证流程、商品发布流程、订单流转流程与举报处理流程,上述流程通过状态字段与权限校验形成闭环,确保业务操作主体与操作范围一致,并保证状态变化顺序符合业务规则。
第六章 总结与展望
6.1 系统成果总结
系统基于Spring Boot、Vue 3 与MySQL实现了二手交易平台的核心能力,完成普通用户、管理员、游客三类角色的功能边界划分。系统实现商品发布与浏览检索、收藏、订单状态流转、留言回复、评价与举报处理等功能,并通过JWT认证与拦截器机制实现接口访问控制。
系统同时提供Web门户端、Web管理端与微信小程序端三种访问形态。三端共享统一后端接口与统一鉴权机制,形成一致的数据交互规范与业务规则约束,能够满足不同使用场景下的交易与治理需求。
从工程实现角度看,系统在后端采用分层结构组织代码,将接口接入、业务规则与数据访问进行拆分,便于后续迭代扩展。前端侧通过组件化与路由组织页面,在门户端与管理端实现清晰的页面入口与权限边界;小程序端通过tabBar组织高频入口并以缓存保持登录态,实现移动端场景下的快速访问。
从业务闭环角度看,系统以商品状态与订单状态为核心约束,形成发布、浏览、下单、确认、完成与评价的交易闭环;同时以举报状态与处理结果为核心约束,形成用户提交、后台处理与结果反馈的治理闭环。这种双闭环设计保证了平台既能完成交易撮合,又具备基本治理能力。
从系统效果看,平台能够满足二手交易场景下的核心需求:一方面为用户提供结构化的信息发布与检索入口,降低信息不对称;另一方面通过订单记录与状态流转提高交易过程可追溯性。同时,管理端治理能力为平台秩序提供保障,能够对违规内容进行集中处理并沉淀处理结果。
从可扩展性看,系统采用统一REST接口支撑多端访问,使得业务能力可以在Web门户端、Web管理端与微信小程序端之间复用。后续若需要增加新的终端形态或新增业务模块,也可以在保持接口规范一致的前提下进行迭代扩展。
6.2 不足与改进方向
6.2.1 安全机制改进
系统当前采用MD5 存储密码,后续可在不改变业务接口的前提下引入更强的密码存储策略,并补充密码强度校验与登录风险控制策略。
同时可进一步完善接口安全策略,例如增加更细粒度的访问频控与异常行为检测,对短时间内的频繁登录失败或频繁请求进行限制,并在管理端提供必要的风险提示与账号安全相关的操作记录,以增强系统整体安全性。
6.2.2 审核与治理策略改进
商品发布当前默认审核通过,后续可按运营需求启用待审核流程,并在管理端补充审核记录与审核原因字段,以增强治理过程的可追溯性。
在治理策略上,可进一步完善举报原因的规范化与分类管理,降低用户提交举报的门槛并提高管理员处理效率。同时可在商品治理操作中增加更明确的规则提示与处理记录,使治理行为具备可解释性,减少因处理结果不透明导致的用户争议。
6.2.3 文件资源管理改进
文件删除接口当前返回成功但未实现资源回收,后续可补充文件实际删除与引用校验机制,避免无效资源积累。
对于图片等静态资源,可进一步引入引用计数或定期清理策略,确保删除商品或更新图片后不产生大量无用文件。与此同时,可在上传阶段增加文件类型与大小校验,避免异常文件占用存储空间并降低安全风险。
6.2.4 数据一致性与异常场景处理
订单取消与商品状态之间的联动规则可进一步细化,例如在交易中状态下的取消策略、已下架商品的订单创建限制提示等,以增强用户体验与规则透明度。
此外可补充更多异常场景的提示与恢复策略,例如在网络异常导致请求重复提交时进行幂等控制,在并发操作下对状态流转进行更严格的校验与提示,保证系统在复杂场景下仍能保持一致性与可理解性。
6.3 未来扩展展望
6.3.1 运营分析能力扩展
未来可在现有统计接口基础上扩展更多维度指标,例如新增用户趋势、活跃商品分布、成交转化率等,并结合管理端图表页面进行展示。
运营分析能力的扩展可进一步服务于平台治理与优化决策。例如对举报类型与发生频率进行统计,对不同分类的成交效率进行分析,从而为分类调整、审核策略调整与运营活动设计提供数据依据。
6.3.2 多端体验一致性优化
未来可进一步抽象接口调用与错误处理规范,使Web与小程序端在异常提示、状态展示与交互反馈方面保持一致,同时优化移动端页面的操作路径。
在体验一致性方面,可以进一步统一状态文案与操作入口的呈现方式,例如在订单不同状态下的按钮可用性与提示文案保持一致,使用户在不同终端切换时不产生学习成本。
6.3.3 业务规则扩展
在保持核心表结构稳定的前提下,可扩展更丰富的商品标签体系、订单备注规范、举报原因字典化管理等能力,以提升平台治理与检索体验。
在规则扩展时应保持"规则可解释、流程可追溯"的原则,将新增规则体现在明确的状态字段或配置字典中,并在管理端提供相应的配置与管理入口,避免将规则分散在多处实现导致维护困难。
对于图片等静态资源,可进一步引入引用计数或定期清理策略,确保删除商品或更新图片后不产生大量无用文件。与此同时,可在上传阶段增加文件类型与大小校验,避免异常文件占用存储空间并降低安全风险。
6.2.4 数据一致性与异常场景处理
订单取消与商品状态之间的联动规则可进一步细化,例如在交易中状态下的取消策略、已下架商品的订单创建限制提示等,以增强用户体验与规则透明度。
此外可补充更多异常场景的提示与恢复策略,例如在网络异常导致请求重复提交时进行幂等控制,在并发操作下对状态流转进行更严格的校验与提示,保证系统在复杂场景下仍能保持一致性与可理解性。
6.3 未来扩展展望
6.3.1 运营分析能力扩展
未来可在现有统计接口基础上扩展更多维度指标,例如新增用户趋势、活跃商品分布、成交转化率等,并结合管理端图表页面进行展示。
运营分析能力的扩展可进一步服务于平台治理与优化决策。例如对举报类型与发生频率进行统计,对不同分类的成交效率进行分析,从而为分类调整、审核策略调整与运营活动设计提供数据依据。
6.3.2 多端体验一致性优化
未来可进一步抽象接口调用与错误处理规范,使Web与小程序端在异常提示、状态展示与交互反馈方面保持一致,同时优化移动端页面的操作路径。
在体验一致性方面,可以进一步统一状态文案与操作入口的呈现方式,例如在订单不同状态下的按钮可用性与提示文案保持一致,使用户在不同终端切换时不产生学习成本。
6.3.3 业务规则扩展
在保持核心表结构稳定的前提下,可扩展更丰富的商品标签体系、订单备注规范、举报原因字典化管理等能力,以提升平台治理与检索体验。
在规则扩展时应保持"规则可解释、流程可追溯"的原则,将新增规则体现在明确的状态字段或配置字典中,并在管理端提供相应的配置与管理入口,避免将规则分散在多处实现导致维护困难。