温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片!
1. 项目背景与意义
随着高校信息化建设的不断深入,校园内的 IT 设备数量快速增长,包括计算机、投影仪、打印机、网络设备等。这些设备在日常教学、科研和办公中发挥着重要作用,但设备故障报修仍普遍依赖电话、纸质登记或口头传达等传统方式,存在报修信息不完整、处理进度不透明、维修响应不及时等问题。
本项目基于 Spring Boot 和微信小程序,设计并实现一套校园 IT 设备报修管理系统。师生可通过微信小程序随时提交报修申请、查看处理进度;维修人员可在线接单、更新维修状态;管理员可进行设备管理、工单分配和数据统计。该系统旨在提升校园 IT 设备报修的数字化水平,优化维修流程,提高服务效率。
2. 系统需求分析
2.1 用户角色分析
系统面向三类用户角色,各角色职责如下:
- 普通用户(师生):提交设备报修申请,填写故障描述、设备位置等信息,查看报修进度与处理结果。
- 维修人员:接收维修工单,更新维修状态,填写维修记录与处理结果。
- 系统管理员:管理用户与设备信息,分配维修工单,查看统计报表,维护系统基础数据。
2.2 功能需求
系统核心功能模块包括:
- 用户认证模块:微信授权登录、用户信息维护、角色权限控制。
- 报修管理模块:报修单创建、故障类型选择、设备信息绑定、报修进度查询。
- 工单处理模块:维修人员接单、状态流转(待处理、处理中、已完成)、维修记录填写。
- 设备管理模块:设备信息录入、设备分类管理、设备状态跟踪。
- 统计报表模块:报修数量统计、故障类型分布、维修效率分析。
2.3 非功能需求
- 易用性:小程序界面简洁,操作流程清晰,降低用户使用门槛。
- 可靠性:系统应保证数据一致性,关键操作具备异常处理与日志记录。
- 安全性:用户敏感信息加密存储,接口鉴权与访问控制完善。
- 可扩展性:系统架构应支持后续功能扩展,如消息推送、评价反馈等。
3. 系统总体设计
3.1 系统架构设计
系统采用前后端分离架构,前端为微信小程序,后端为 Spring Boot 服务,数据存储使用 MySQL 数据库。整体架构分为表现层、业务逻辑层和数据访问层三层。
flowchart TD A[微信小程序前端] -->|HTTPS 请求| B[Spring Boot 后端] B --> C[业务逻辑层 Service] C --> D[数据访问层 Mapper] D --> E[(MySQL 数据库)] B --> F[Redis 缓存] B --> G[文件存储服务]3.2 技术选型
| 层次 | 技术 | 说明 |
|---|---|---|
| 前端 | 微信小程序 | WXML、WXSS、JavaScript |
| 后端 | Spring Boot | 核心业务框架 |
| 安全认证 | Spring Security + JWT | 接口鉴权与身份认证 |
| ORM | MyBatis-Plus | 数据持久层框架 |
| 数据库 | MySQL | 关系型数据存储 |
| 缓存 | Redis | 会话缓存与热点数据 |
| 接口文档 | Swagger / Knife4j | API 文档自动生成 |
3.3 数据库设计
系统核心数据表包括用户表、设备表、报修单表、维修记录表和通知消息表。以下为报修单表的主要字段设计:
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键,自增 |
| repair_no | varchar(32) | 报修单编号 |
| user_id | bigint | 报修用户 ID |
| device_id | bigint | 设备 ID |
| fault_desc | text | 故障描述 |
| status | tinyint | 工单状态:0 待处理,1 处理中,2 已完成 |
| assignee_id | bigint | 维修人员 ID |
| create_time | datetime | 创建时间 |
| update_time | datetime | 更新时间 |
4. 核心功能实现
4.1 微信登录与鉴权
用户首次进入小程序时,前端调用wx.login获取临时凭证 code,后端通过 code 调用微信接口换取 openid,并生成 JWT 令牌返回给前端。后续请求携带令牌,由 Spring Security 过滤器统一鉴权。
@PostMapping("/login") public Result login(@RequestBody LoginRequest request) { String code = request.getCode(); String openid = wechatService.getOpenId(code); User user = userService.findOrCreateByOpenId(openid); String token = jwtUtil.generateToken(user.getId(), user.getRole()); return Result.success(token); }4.2 报修单提交
用户填写故障描述、选择设备并提交报修单。后端校验设备归属与参数合法性后保存工单,初始状态为待处理,同时向管理员发送通知。
@PostMapping("/repair") public Result createRepair(@RequestBody RepairDTO dto) { RepairOrder order = new RepairOrder(); order.setRepairNo(IdGenerator.generate()); order.setUserId(CurrentUser.getId()); order.setDeviceId(dto.getDeviceId()); order.setFaultDesc(dto.getFaultDesc()); order.setStatus(0); repairService.save(order); notifyService.sendToAdmin("收到新的报修工单:" + order.getRepairNo()); return Result.success(order.getId()); }4.3 工单处理流程
维修人员在小程序端查看待处理工单列表,点击接单后工单状态变为处理中;维修完成后填写处理结果,状态更新为已完成,用户可查看最终处理反馈。
@PostMapping("/repair/{id}/complete") public Result complete(@PathVariable Long id, @RequestBody CompleteDTO dto) { RepairOrder order = repairService.getById(id); order.setStatus(2); order.setHandleResult(dto.getHandleResult()); order.setUpdateTime(LocalDateTime.now()); repairService.updateById(order); return Result.success(); }5. 系统测试
5.1 测试环境
系统测试在本地开发环境完成,后端服务运行于 Spring Boot 内嵌 Tomcat,数据库使用 MySQL 8.0,小程序端通过微信开发者工具进行真机模拟测试。
5.2 功能测试
针对核心业务流程设计测试用例,覆盖用户登录、报修提交、工单接单、维修完成、进度查询等关键路径。测试结果表明各功能模块运行正常,接口响应符合预期,数据读写一致。
5.3 性能测试
使用 JMeter 对报修单提交接口进行并发压测。在 200 并发用户场景下,接口平均响应时间约为 320ms,吞吐量达到每秒 580 次请求,系统整体表现稳定,满足校园场景下的日常使用需求。
6. 总结与展望
本项目基于 Spring Boot 和微信小程序,设计并实现了一套校园 IT 设备报修管理系统,覆盖报修提交、工单流转、设备管理和统计报表等核心功能。系统有效简化了报修流程,提升了维修响应效率和管理透明度。
后续可从以下方向继续优化:一是引入消息订阅与推送能力,实时通知用户工单状态变化;二是增加维修评价与满意度反馈机制;三是结合数据分析,对高频故障设备进行预警与维护建议,进一步提升校园 IT 服务的智能化水平。