// case · thesis
校园二手交易平台
基于 SpringBoot 3 + Vue3 的前后端分离项目,含商品发布、订单流转与信用评价体系。
项目背景
校园内的二手交易长期依赖社交群聊,信息分散、无法检索、缺乏信任机制。本项目将交易流程产品化,覆盖商品发布、检索、下单、评价的完整闭环。
技术架构
- 后端:SpringBoot 3 + MyBatis-Plus,JWT 无状态鉴权
- 前端:Vue3 + TypeScript + Element Plus
- 存储:MySQL 存业务数据,Redis 做缓存与登录态
关键设计一:订单状态机
订单是典型的有限状态机场景。我们用一个枚举 + 状态迁移表来约束流转,任何非法跳跃都会被拦截:
public enum OrderStatus {
PENDING_PAY(0), PAID(1), SHIPPED(2), FINISHED(3), CANCELLED(4);
private static final Map<OrderStatus, Set<OrderStatus>> TRANSITIONS = Map.of(
PENDING_PAY, EnumSet.of(PAID, CANCELLED),
PAID, EnumSet.of(SHIPPED, CANCELLED),
SHIPPED, EnumSet.of(FINISHED),
FINISHED, EnumSet.noneOf(OrderStatus.class),
CANCELLED, EnumSet.noneOf(OrderStatus.class)
);
public boolean canTransferTo(OrderStatus target) {
return TRANSITIONS.getOrDefault(this, Set.of()).contains(target);
}
}
这样设计的好处是:业务规则集中在枚举里,Service 层只负责调用,不需要在每个方法里重复写 if-else 判断。
关键设计二:列表查询的缓存策略
商品列表是典型的读多写少场景。我们对第一页的热门数据做缓存,写操作时精准失效:
@Cacheable(value = "goods:list", key = "#page + ':' + #size", unless = "#page > 0")
public PageResult<GoodsVO> listGoods(int page, int size) {
return goodsMapper.selectPage(page, size);
}
只缓存首页、翻页不缓存,是权衡命中率与内存占用后的选择,也是答辩时很好的一个讨论点。
交付内容
源码、数据库脚本、结构说明文档、核心逻辑讲解,以及一份针对该项目高频提问的准备清单。
// related-cases
相关案例
~/cases/lab-equipment-management.md
PY
PythonDjangoMySQL
毕业设计支持2026.02.25
实验室设备管理系统
Python + Django 实现的设备台账、借用审批与耗材预警系统,含数据可视化看板。
- ▸基于 Django ORM 的审批流设计,支持多级审批配置
- ▸耗材库存自动预警,按阈值触发站内通知
open_case() →
~/cases/mini-program-ordering.md
微信
微信小程序SpringBootMySQL
毕业设计支持2026.01.20
校园食堂点餐小程序
微信小程序 + SpringBoot 后端,支持扫码点餐、取餐叫号与档口管理后台。
- ▸WebSocket 实现取餐叫号实时推送
- ▸扫码进入对应档口,减少选择成本
open_case() →
~/cases/erp-secondary-development.md
SP
SpringBootMyBatisMySQL
软件开发2026.04.08
企业 ERP 系统二次开发与性能优化
对存量 ERP 系统做模块扩展与慢查询治理,核心报表加载时间从 18s 降至 2s 以内。
- ▸先做代码盘点与风险标注,再确定改造范围
- ▸定位并重构 12 条慢查询,报表响应从 18s 降至 2s
open_case() →
// contact
有需求?先聊聊你的项目
不管是一次技术支持、一个完整项目,还是想补一段工程能力,都可以先沟通。我们会先了解需求并给出判断,再谈方案与报价。
- Trdfyl
- 2356245930
- [email protected]

扫码添加微信