1、立项背景和目标
某高校教务处希望优化教室借用申请流程。传统纸质申请方式效率低、进度不透明,学生需要多次跑腿,老师审批不便。目标是开发一个移动端系统,让学生随时随地提交申请,老师在线审批,同时保留完整的申请记录便于追溯。
2、软件功能、核心功能模块的介绍
系统分为三个角色:
- 学生端:注册登录、新建教室借用申请、提交审批、撤回草稿申请、查看处理进度、查看已通过申请详情
- 老师端:注册登录、查看待处理申请、开始处理、审核通过、打回申请
- 管理员端:预设账号登录、删除任何状态的申请
申请状态支持完整流转:草稿 → 已提交 → 处理中 → 已通过/已退回。每次状态变更自动记录操作人和时间,非法状态转换会被拦截并返回409错误。
3、业务流程、功能路径描述
学生登录后进入首页,点击"新建申请"填写借用日期、时间段、教室类型、用途、预计人数等信息,创建成功后申请出现在"草稿申请"列表中。学生点击"提交申请"后,申请状态变为"已提交",移动到老师的"待处理申请"列表。
老师登录后看到待处理申请,点击"开始处理"后状态变为"处理中"。老师可以选择"审核通过"让申请变为"已通过",或选择"打回"让申请退回给学生重新修改。所有操作都会自动生成处理记录,学生可以随时查看。
已通过申请支持折叠展示,点击可展开查看完整信息和处理记录,界面简洁高效。
本项目采用前后端分离架构。后端基于Spring Boot 3.3.2框架,使用Spring Data JPA进行数据持久化,MySQL 8.0存储业务数据。API设计遵循RESTful规范,使用统一的ApiResponse包装返回结果,通过@RestControllerAdvice实现全局异常处理。
前端使用微信小程序原生开发,支持iOS和Android平台。界面采用flex布局适配不同屏幕尺寸,状态通过不同颜色区分(草稿黄色、已提交蓝色、处理中蓝色、已通过绿色、已退回红色)。
关键技术难点及解决方案:
1. 状态机设计:申请状态流转规则通过枚举类的canTransitTo方法实现,非法转换自动抛出IllegalStateException,由全局异常处理器统一返回409状态码。
2. 多角色权限:不同角色登录后显示不同界面和操作按钮,通过wx.setStorageSync保存用户信息,页面根据角色动态渲染。
3. 处理记录追溯:每次状态变更自动创建ProcessRecord对象,记录操作人、动作、意见和时间,与申请关联存储。
4. 多级折叠:已通过申请列表支持外层整体折叠和内层单个展开,使用三元运算符控制显示状态。