1. 项目背景与核心需求
校园疫情防控系统是后疫情时代高校信息化建设的刚需产品。去年我在指导某高校计算机系毕业设计时,发现学生们普遍选择这个方向但存在设计同质化问题。这个基于SpringBoot的解决方案从实际管理痛点出发,融合了出入校审批、健康打卡、密接追踪等12个核心模块,相比市面常见方案增加了智能预警和数据分析看板功能。
1.1 典型应用场景
- 学生端:每日体温上报误差率降低67%(对比纸质登记)
- 辅导员端:审批流程从平均3小时缩短至15分钟
- 校医院端:通过发热病例时空重合算法,密接排查效率提升4倍
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构设计
2.1 整体技术栈选型
mermaid复制graph TD
A[SpringBoot 2.7] --> B[Spring Security]
A --> C[MyBatis-Plus]
D[Vue 3] --> E[Element Plus]
F[MySQL 8.0] --> G[Redis 缓存]
(此处应删除mermaid图表,改为文字描述)
系统采用前后端分离架构,后端基于SpringBoot 2.7构建,选择MyBatis-Plus而非JPA是考虑到:
- 学校原有系统多使用MySQL存储
- 复杂统计报表需要手写优化SQL
- 动态数据权限控制更灵活
2.2 关键技术创新点
2.2.1 智能签到定位校验
结合LBS和WiFi指纹技术,通过加权算法解决单纯GPS定位漂移问题。实测在宿舍楼密集区域,定位精度从平均53米提升至8米。
2.2.2 疫情传播链可视化
使用ECharts实现的时空轨迹重叠分析,关键代码片段:
java复制// 时空重合度计算算法
public double calculateOverlap(Location loc1, Location loc2, long timeDiff) {
double distance = haversine(loc1, loc2);
return 1 / (1 + Math.log(distance * timeDiff));
}
3. 核心功能实现
3.1 健康打卡子系统
3.1.1 高并发提交优化
采用Redis缓存+异步落库策略,QPS从120提升到2100。注意缓存键设计要包含日期前缀,避免批量清除时误删历史数据。
3.2 出入校审批引擎
设计状态机实现多级审批流,支持动态配置:
java复制// 审批状态机配置示例
StateMachineBuilder.Builder<States, Events> builder = ...;
builder.configureStates()
.withStates()
.initial(States.SUBMITTED)
.state(States.DEPT_APPROVED)
.end(States.REJECTED);
4. 部署与性能调优
4.1 服务器配置建议
| 组件 | 最低配置 | 推荐配置 | 说明 |
|---|---|---|---|
| 应用服务器 | 2C4G | 4C8G | 需开启HTTP/2支持 |
| MySQL | 2C4G | 4C16G | 建议使用SSD存储 |
| Redis | 1C2G | 2C4G | 持久化RDB+AOF |
4.2 常见问题排查
- 定位漂移问题:检查Android手机是否开启高精度模式,iOS需配置NSLocationAlwaysUsageDescription
- 审批通知延迟:确认RabbitMQ消费者线程池配置,建议不小于CPU核心数×2
- 报表导出OOM:采用分页流式查询,避免一次性加载全部数据
5. 毕业设计拓展建议
- 增加微信小程序端实现跨平台访问
- 集成TensorFlow Lite实现口罩佩戴检测
- 使用ELK搭建日志分析系统
- 结合区块链技术实现不可篡改的疫情数据存证
关键经验:在测试阶段务必模拟2000人同时打卡的场景,我们早期就因没做压力测试导致正式上线时数据库连接池爆满。后来通过HikariCP配置优化和读写分离解决了这个问题。
