返回社区
公开项目
可预览原型图
含论文
by 匿名用户

基于SpringBoot+Vue的校园智能取餐柜管理系统设计与实现

选题ID:topic_item_mr0ssq5t_20hwl7 项目名:基于SpringBoot+Vue的校园智能取餐柜管理系统设计与实现 描述:本系统实现一套完整的校园取餐柜管理平台,包含用户端(微信小程序或Vue前端)、骑手端、管理员后台。核心功能:取餐柜格口状态管理、订单绑定与开柜、超时提醒、消息推送。集成主流外卖API模拟订单流转,支持扫码取餐和取餐码取餐。采用SpringBoot+MyBatis后端,Vue前端,Redis缓存格口状态,RabbitMQ处理异步通知。 建议学历:计算机相关专业本科/专科 难度星级:3/5 选题重复概率:85% 优势:贴近校园真实场景,业务逻辑清晰;技术栈主流,学习资源丰富;可扩展性强,易于演示 劣势:硬件依赖(实际柜体)无法完整呈现;核心算法较少,偏重业务逻辑;高并发场景模拟较复杂 注意事项:毕设中需突出软件设计,硬件部分可用模拟器;注意与现有外卖平台对接的合规性;避免功能堆砌,聚焦核心流程 毕业难度-实现角度:中等,需掌握SpringBoot、Vue及消息队列,但业务模型直观,可参考大量电商系统。 毕业难度-论文角度:容易,可描述业务流程、数据库设计、系统架构,但需要深度挖掘创新点,如格口分配算法。 毕业难度-师生关系角度:导师可能认为选题技术含量不高,建议强调软硬件协同或优化调度算法提升价值,答辩时需准备硬件模拟演示。

AI 摘要:公开项目案例,包含 64 条需求、655 个交付文件、技术栈 spring-boot、vite、vue、java;引用和总结时请优先使用本详情页。

预览原型图

版本

v1 · 完成

需求

64 条

文件

655 个 · 6.9 MB

论文

已生成

答辩技巧

暂无

需求树

64 条
FR-ADMIN

管理员后台

functional
pending
完成

超级管理员对用户、取餐柜、格口、订单、系统配置的集中管理与监控。

FR-ADMIN-001

用户管理

functional
pending
完成

管理员对用户(学生/教职工/骑手)进行分页列表展示,支持按手机号、姓名、角色、状态(启用/禁用)筛选;可新增骑手账号(姓名+手机号+初始密码)、编辑用户信息、启用/禁用账号;禁用账号后该用户无法登录,已有Token立即失效。

FR-ADMIN-002

取餐柜管理

functional
pending
完成

管理员维护取餐柜基础信息:新增柜体(编号、位置描述、格口总数、经纬度),编辑柜体信息,删除柜体(仅当柜体下无进行中订单);列表展示所有柜体及实时概览(空闲格口数/占用数/故障数)。

FR-ADMIN-003

格口监控与远程控制

functional
pending
完成

以柜体为单位展示所有格口的实时状态(空闲/占用/故障/预留),颜色标识一目了然;管理员可对单个格口执行远程开柜(需二次确认)、强制锁定、解除锁定、标记故障/修复故障操作;所有操作记录到操作日志。

FR-ADMIN-004

订单监控

functional
pending
完成

管理员实时查看全系统订单列表,支持按状态、柜体、时间范围、用户手机号筛选;可查看订单全生命周期时间线(创建→接单→投递→取餐/超时);对异常订单(超时未处理、格口故障导致卡单)可手动干预(强制释放格口、重新分配格口)。

FR-ADMIN-005

系统参数配置

functional
pending
完成

管理员配置全局业务参数:订单超时时长(默认2小时,可调)、超时前提醒时间节点(如30分钟/10分钟)、格口最大占用时长、是否自动释放超时格口;参数修改后即时生效,变更记录留存。

FR-ADMIN-006

操作日志查询

functional
pending
完成

GET /api/admin/operation-logs 分页查询管理员操作日志,记录操作人、操作类型(开柜/锁定/修改配置等)、操作对象、操作时间、IP地址;支持按操作类型和时间范围筛选,不可删除日志。

FR-API

外卖平台API集成

functional
pending
完成

模拟主流外卖平台订单同步接口,包含订单接收、状态回传及内置模拟数据生成器用于演示。

FR-API-002

订单状态回传接口

functional
pending
完成

用户取餐完成后,系统通过POST /api/external/order/callback回传订单状态更新至模拟外卖平台:平台订单号、状态(DELIVERED/PICKED_UP/TIMEOUT)、完成时间;支持失败重试3次,重试间隔递增(1s/3s/5s)。

FR-API-003

模拟外卖平台数据生成器

functional
pending
完成

管理后台内置"模拟接单"功能,管理员可配置参数(商家名称、菜品随机组合、用户随机选取)一键生成模拟外卖订单并自动推送到订单同步接口;支持批量生成(一次N单)用于演示和压力测试。

FR-API-004

外部API鉴权配置

functional
pending
完成

管理员可在后台为每个模拟外卖平台配置AppKey和AppSecret,用于API签名验证;支持启用/禁用某个外部平台接入、查看API调用日志(调用时间、接口路径、耗时、响应码)。

FR-API-001

外卖订单同步接收接口

functional
pending
完成

POST /api/external/order/sync 接收模拟外卖平台推送的订单数据,入参:平台订单号、商家名、菜品清单、用户手机号、总金额;接口需验证API签名(AppKey+AppSecret摘要签名),验签通过后创建本地订单并返回系统订单号;验签失败返回401。

FR-AUTH

用户认证与权限管理

functional
pending
完成

管理学生/教职工、骑手、管理员三类角色的注册、登录、Token鉴权与权限路由分发,是整个系统的身份基础。

FR-AUTH-001

用户注册

functional
pending
完成

学生/教职工通过手机号+短信验证码注册账号,设置登录密码;骑手由管理员后台创建;注册时校验手机号唯一性,密码长度6-20位。

FR-AUTH-002

用户登录

functional
pending
完成

POST /api/auth/login,入参手机号+密码,后端BCrypt校验后返回JWT accessToken(有效期2h)和refreshToken(有效期7天);登录失败返回对应错误提示(账号不存在/密码错误/账号已禁用)。

FR-AUTH-003

角色权限路由分流

functional
pending
完成

登录成功后前端解析JWT中的role字段(STUDENT/RIDER/ADMIN),自动跳转对应首页:学生→取餐列表页、骑手→配送任务页、管理员→后台仪表盘;无权限访问其他端路由时返回403页面。

FR-AUTH-004

密码重置与修改

functional
pending
完成

已登录用户修改密码需验证旧密码;忘记密码通过手机验证码重置;新密码不可与旧密码相同,修改成功后强制退出所有设备重新登录。

FR-AUTH-005

Token刷新与登出

functional
pending
完成

POST /api/auth/refresh 用refreshToken换取新accessToken;登出时将refreshToken加入Redis黑名单使其失效;前端拦截401响应自动尝试刷新Token,刷新失败跳转登录页。

FR-LOCKER

取餐柜格口管理

functional
pending
完成

格口状态实时维护(Redis缓存)、自动分配算法、超时检测与故障处理,是系统的核心调度层。

FR-LOCKER-001

格口状态实时查询

functional
pending
完成

GET /api/locker/cells?cabinetId=X 返回指定柜体所有格口的实时状态列表(cellId、状态枚举:IDLE/OCCUPIED/FAULT/RESERVED、当前绑定订单号、占用开始时间);数据优先从Redis读取,Redis未命中回源MySQL并回写缓存。

FR-LOCKER-002

格口自动分配算法

functional
pending
完成

骑手到达柜体时系统自动推荐最优空闲格口,分配策略:优先分配中层格口(取餐便捷)、避免分配故障格口、同一柜体均匀分散避免集中占用;返回推荐格口编号及备选列表(最多5个)。

FR-LOCKER-003

格口状态变更与缓存同步

functional
pending
完成

格口状态变更(空闲→占用→空闲/故障)时,先更新MySQL事务提交,再通过Redis发布订阅通知所有服务实例刷新缓存;前端通过WebSocket接收格口状态实时推送,无需轮询。

FR-LOCKER-004

格口超时检测定时任务

functional
pending
完成

Spring @Scheduled定时任务每5分钟扫描所有占用中的格口,对比系统配置的超时时长;到达超时阈值的订单自动标记为"超时",通过RabbitMQ发送超时处理消息(通知用户、释放格口或转人工处理);任务执行日志记录扫描格口数和处理数。

FR-LOCKER-005

格口故障管理

functional
pending
完成

骑手或管理员上报格口故障后,系统自动将该格口状态设为FAULT并从可分配池中移除;管理员修复后可手动恢复为IDLE;故障期间该格口已绑定的订单自动迁移至其他空闲格口(重新生成取餐码并通知用户)。

FR-NOTIFY

消息推送与通知

functional
pending
完成

取餐通知、超时提醒、超时处理通知等多场景消息推送,支持微信订阅消息和系统内消息。

FR-NOTIFY-001

取餐通知推送

functional
pending
完成

骑手投递成功后,RabbitMQ消费者接收订单状态变更事件,组装取餐通知消息(含取餐码、格口编号、柜体位置、存入时间),通过系统内消息和模拟推送渠道发送给用户;用户端收到后订单列表更新并展示通知红点。

FR-NOTIFY-002

超时前提醒推送

functional
pending
完成

根据系统配置的超时提醒节点(如超时前30分钟、10分钟),定时任务扫描即将超时订单,发送提醒通知"您的订单将在X分钟后超时,请尽快取餐";每个提醒节点仅发送一次,避免重复骚扰。

FR-NOTIFY-003

超时处理通知

functional
pending
完成

订单超时被系统自动处理后,推送通知告知用户"订单已超时回收,如需取餐请联系管理员";通知中附带管理员联系方式及处理指引。

FR-NOTIFY-004

系统内消息中心

functional
pending
完成

用户端/骑手端底部导航栏"消息"入口,展示系统推送消息列表(取餐通知、提醒、系统公告),未读消息红点角标;支持消息已读标记和按类型筛选;消息保留30天自动清理。

FR-NOTIFY-005

消息推送记录

functional
pending
完成

管理员后台可查询消息推送记录:消息类型、接收用户、推送时间、推送状态(成功/失败)、失败原因;支持按时间和消息类型筛选,用于排查通知未送达问题。

FR-ORDER

订单管理

functional
pending
完成

订单全生命周期:创建、状态流转、格口绑定/解绑、超时自动处理、多维度查询筛选。

FR-ORDER-001

订单创建

functional
pending
完成

POST /api/orders 创建订单,入参:用户ID、商家名称、菜品清单(名称+数量+单价)、总金额、用户手机号;校验用户状态正常,生成唯一订单号(格式:ORD+yyyyMMdd+6位随机数),初始状态为"待接单";支持外卖平台API推送和骑手手动录入两种来源。

FR-ORDER-002

订单状态流转

functional
pending
完成

订单状态机:待接单→已接单→配送中→已投递(待取餐)→已取餐;异常分支:任意节点可→已取消,待取餐超时→已超时。状态变更时记录时间戳和操作人,通过RabbitMQ发布状态变更事件供通知模块消费。

FR-ORDER-003

订单格口绑定与解绑

functional
pending
完成

POST /api/order/bind-locker 绑定订单与格口,使用Redis分布式锁保证同一格口不会被并发绑定;绑定成功后生成6位数字取餐码(全局唯一),更新格口状态为OCCUPIED;解绑时(取餐/超时/故障迁移)释放格口为IDLE,取餐码失效。

FR-ORDER-004

订单超时自动处理

functional
pending
完成

超时检测定时任务扫描到超时订单后:自动释放格口、订单状态变更为"已超时"、取餐码作废;若配置为自动回收模式,标记该订单餐品需由管理员处理;通过RabbitMQ异步发送超时通知给用户。

FR-ORDER-005

订单多维度查询

functional
pending
完成

GET /api/orders 支持多条件组合查询:订单号精确搜索、手机号模糊搜索、状态多选、时间范围、柜体筛选;分页返回,默认按创建时间倒序;管理员可查全部,骑手仅查自己配送的,用户仅查自己的。

FR-REPORT

数据统计与报表

functional
pending
完成

取餐柜使用率、订单处理效率、超时异常率等维度的统计分析与可视化仪表盘。

FR-REPORT-001

取餐柜使用率统计

functional
pending
完成

GET /api/report/cabinet-usage 统计各柜体的使用率(占用格口数/总格口数),支持按日/周/月时间粒度聚合;返回数据包含峰值使用率、平均使用率、使用率趋势折线图数据;可导出Excel。

FR-REPORT-002

订单处理效率统计

functional
pending
完成

统计订单各环节耗时:平均投递时长(接单到投递)、平均取餐时长(投递到取餐)、格口平均占用时长;支持按日期范围和柜体筛选,以数值卡片+柱状图展示。

FR-REPORT-003

超时率与异常率统计

functional
pending
完成

统计超时订单占比(超时订单数/总订单数)和异常订单占比(故障导致/用户取消),按日趋势展示;支持钻取到具体超时/异常订单列表,辅助管理员定位问题。

FR-REPORT-004

管理后台数据仪表盘

functional
pending
完成

管理员登录后首页展示数据仪表盘:实时概览卡片(今日订单数、当前占用格口数、空闲格口数、待取餐数)、近7天订单趋势折线图、各柜体使用率环形图、最近异常订单列表;数据每30秒自动刷新。

FR-RIDER

骑手端配送投递

functional
pending
完成

骑手接单后到达取餐柜、扫码或手动选择格口存入餐品、确认投递完成及异常处理。

FR-RIDER-001

配送任务列表

functional
pending
完成

骑手首页展示当日配送任务列表,按状态Tab切换(待取餐/配送中/已送达),每条显示订单号、商家名、用户地址摘要、接单时间;支持下拉刷新,空态展示"暂无配送任务"。

FR-RIDER-002

扫码绑定格口

functional
pending
完成

骑手到达取餐柜后扫描柜体二维码,系统自动识别柜体ID;调用GET /api/locker/available?cabinetId=X获取该柜体当前空闲格口列表;骑手选择格口后POST /api/order/bind-locker绑定订单与格口,生成6位取餐码并推送用户。

FR-RIDER-003

手动选择格口绑定

functional
pending
完成

骑手可手动从柜体格口平面图(以网格可视化展示空闲/占用/故障状态)中点击选择格口,确认后绑定订单;若所选格口在确认瞬间被他人占用,前端提示"该格口已被占用,请重新选择"并刷新格口状态。

FR-RIDER-004

投递确认

functional
pending
完成

骑手存入餐品关闭柜门后,点击"确认投递"按钮;系统校验柜门状态(模拟硬件返回关门信号),更新订单状态为"待取餐",记录投递时间,触发送达通知给用户;若柜门未正常关闭则提示"请确认柜门已关闭"。

FR-RIDER-005

配送记录查询

functional
pending
完成

GET /api/rider/delivery-history 按日期范围分页查询历史配送记录,展示订单号、投递时间、格口编号、用户取餐状态;支持按取餐状态筛选(已取/未取/超时)。

FR-RIDER-006

异常上报

functional
pending
完成

骑手遇到格口故障(门无法打开/关闭、格口已损坏)或用户联系不上等情况时,可通过"异常上报"入口选择异常类型并填写备注提交;系统自动标记对应格口为"故障"状态并通知管理员处理。

FR-USER

用户端取餐流程

functional
pending
完成

面向学生/教职工的取餐交互:查看订单、取餐码取餐、扫码取餐、历史记录与超时提醒。

FR-USER-001

待取订单列表

functional
pending
完成

用户首页展示待取餐订单列表,按状态Tab切换(待取餐/已取餐/已超时),每条显示订单摘要(商家名、菜品、存入时间、格口编号、倒计时),支持下拉刷新和分页加载,空态展示"暂无订单"插画。

FR-USER-002

订单详情与取餐码展示

functional
pending
完成

点击订单进入详情页,展示完整信息:订单号、商家、菜品清单、金额、格口编号、6位取餐码(大字突出显示)、存入时间、剩余可取时间倒计时、取餐柜位置指引图。

FR-USER-003

取餐码取餐

functional
pending
完成

POST /api/locker/open-by-code,入参取餐码(6位数字)+格口编号;后端校验取餐码与格口绑定关系,匹配成功则发送开柜指令,更新订单状态为"已取餐",释放格口为空闲;失败返回具体错误(取餐码错误/格口不匹配/订单已超时)。

FR-USER-004

扫码取餐

functional
pending
完成

用户扫描取餐柜屏幕或柜体贴纸上的动态二维码,前端解析二维码中的柜体ID,调用POST /api/locker/open-by-qrcode传入柜体ID+用户Token;后端自动匹配该用户在该柜体的待取订单并开柜,无匹配订单则提示"未找到待取餐订单"。

FR-USER-005

取餐确认与评价

functional
pending
完成

开柜成功后弹出确认页"请取走您的餐品并关闭柜门",用户点击"已取餐"确认;确认后可对本次服务评分(1-5星)和留言反馈,评价数据写入订单记录。

FR-USER-006

超时提醒查看

functional
pending
完成

订单列表中对临近超时的订单(剩余<30分钟)标黄高亮,超时订单标红置顶显示;点击可查看超时处理结果(已回收/需联系管理员)。

FR-USER-007

历史订单查询

functional
pending
完成

GET /api/orders/history 分页查询历史订单,支持按时间范围、状态筛选,每条记录展示订单基本信息+最终状态;支持按日期折叠分组。

TR-ARCH

技术架构约束

technical
pending
完成

后端SpringBoot+MyBatis+MySQL,前端Vue3+Vite+Element Plus,中间件Redis+RabbitMQ,JWT鉴权,RESTful API规范。

TR-ARCH-001

后端技术栈约束

technical
pending
完成

后端使用Spring Boot 2.7+ / 3.x + MyBatis-Plus + MySQL 8.0;项目结构按controller/service/mapper分层;使用Lombok简化POJO,Jackson做JSON序列化;API文档使用Knife4j/Swagger自动生成。

TR-ARCH-002

前端技术栈约束

technical
pending
完成

前端使用Vue 3 + Vite + Element Plus + Pinia状态管理 + Vue Router 4;Axios封装请求拦截器(自动附加Token、401统一处理);移动端适配使用Vant UI组件库或uni-app(如需小程序)。

TR-ARCH-003

Redis缓存策略

technical
pending
完成

Redis 6+ 缓存格口状态(Hash结构:cabinet:{id}:cells,field为cellId,value为状态JSON);设置合理TTL(5分钟)+ 主动失效机制;使用Redisson实现分布式锁保护格口绑定并发操作。

TR-ARCH-004

RabbitMQ消息队列

technical
pending
完成

RabbitMQ 3.x 处理异步任务:订单状态变更通知、消息推送、超时处理;定义交换机(topic类型)和队列,确保消息持久化和消费确认(ACK);死信队列处理消费失败的消息。

TR-ARCH-005

JWT认证与安全

technical
pending
完成

使用jjwt库生成和解析JWT;accessToken有效期2h,refreshToken有效期7天存储在Redis;所有API(除登录/注册外)通过Spring拦截器校验Token;密码BCrypt加密存储,敏感配置(密钥、数据库密码)通过环境变量或配置中心注入。

TR-ARCH-006

RESTful API设计规范

technical
pending
完成

所有API遵循RESTful规范:URL使用名词复数、HTTP方法语义正确(GET查询/POST创建/PUT更新/DELETE删除);统一响应格式{code, message, data};业务错误码枚举定义,分页响应含total/page/pageSize字段。

TR-ARCH-007

数据库核心表设计

technical
pending
完成

核心表包括:user(用户表,含角色字段)、cabinet(柜体表)、cell(格口表,含状态+绑定订单号)、order(订单表,含状态+取餐码+格口ID)、notification(消息表)、operation_log(操作日志表);所有表含create_time和update_time,软删除用is_deleted标记。