1. 用户认证与权限模块
- 登录注册 :支持用户名密码登录、新用户注册
- 密码管理 :提供忘记密码、管理员重置密码功能
- 黑名单机制 :可对违规用户进行拉黑处理,保障系统安全
- 操作日志 :记录所有关键操作行为,便于审计追溯 2. 车辆管理模块
- 车辆档案管理 :新增、编辑、删除车辆信息,涵盖车牌号、品牌型号、购置信息等
- 车辆审核机制 :新增车辆需经审核通过后才能正式入库,支持驳回并填写原因
- 数据验证与清洗 :自动检测无效数据、重复数据,提供一键清洗功能
- 批量导入导出 :支持 Excel 批量导入车辆数据、导出车辆信息报表
- 智能搜索 :按车牌号、类型、状态等多条件组合搜索 3. 驾驶员管理模块
- 驾驶员档案 :维护驾驶员基本信息、准驾车型、所属学院/部门
- 批量管理 :支持批量导入驾驶员信息
- 信息查询 :按姓名、工号、部门等条件快速检索 4. 维修保养模块
- 维修记录 :记录车辆每次维修的时间、项目、费用、维修厂等信息
- 保养管理 :按保养周期记录定期保养情况
- 历史追溯 :可查询单车的完整维修保养历史 5. 保险管理模块
- 保险记录 :录入车辆保险信息,包括保险公司、保单号、有效期
- 到期提醒 :智能识别即将到期的保险,提前 N 天预警
- 理赔管理 :记录保险理赔情况 6. 年检管理模块
- 年检记录 :登记车辆年检信息,包括检测机构、结果、有效期
- 到期预警 :自动检测即将到期的年检记录 7. 统计分析模块
- 数据看板 :车辆总数、驾驶员总数、各类型占比等核心指标
- 状态统计 :按车辆状态(在用、维修、报废)分类统计
- 保险年检统计 :统计即将到期的保险和年检数量 8. 文件管理模块
- 文件上传 :支持图片、文档(PDF、Word、Excel)上传
- 文件下载 :提供安全的文件下载接口,防止路径穿越攻击
### 一、整体架构和设计思路
本系统是本人练手开发的车辆管理项目, 仅在本地电脑运行,未部署至云服务器 。项目采用前后端分离的 B/S 架构,后端基于 Spring Boot 框架构建 RESTful API,前端使用 Vue.js 实现响应式界面。后端采用三层架构:Controller 层负责接口接收与响应,Service 层封装业务逻辑,Repository 层基于 Spring Data JPA 实现数据持久化。技术栈包括:Spring Boot + Spring Security + JWT 认证、MySQL 数据库、Apache POI 实现 Excel 导入导出、Java NIO 处理文件上传下载、AOP 切面实现操作日志记录。
### 二、负责模块和结果
1. 文件管理模块 :实现文件上传和下载接口,支持图片、文档等 10 种格式,通过正则校验和路径规范化双重机制防止路径穿越攻击。
2. 车辆数据验证与清洗模块 :开发 VehicleValidationService 服务类,实现全量数据校验、单车校验、数据清洗三大功能,识别并清理无效车辆数据 15 条,重复数据 8 条,数据完整率达 98%。
3. 黑名单与操作日志模块 :实现用户拉黑/解除拉黑功能,通过 @OperationLog 自定义注解 + AOP 切面自动记录操作日志,累计记录操作行为 500+ 条。
4. Excel 批量导入导出 :基于 Apache POI 实现车辆和驾驶员信息的批量导入导出,支持单次导入 500 条数据,导出报表支持中文字符。
### 三、遇到的难点与解决方案
难点1:文件路径穿越攻击防护
- 问题 :用户上传文件名可能包含 ../ 等路径穿越字符,导致文件被写入非预期目录。
- 解决方案 :采用双重校验机制,一是用正则 ^[a-zA-Z0-9\\-_.]+$ 严格校验文件名格式,二是使用 Path.normalize() 规范化路径后,通过 startsWith() 判断最终路径是否在允许的上传目录内。
难点2:Excel 导入的异常处理
- 问题 :批量导入时可能遇到格式错误、重复数据、空值等情况。
- 解决方案 :引入预校验机制,导入前先进行数据完整性和合法性检查;采用 UUID 重命名策略避免文件名冲突;使用事务确保数据一致性。
难点3:车辆审核状态流转
- 问题 :车辆需经过"待审核→已通过/已驳回"的状态流转,逻辑复杂。
- 解决方案 :在 Service 层封装状态管理逻辑, approveVehicle() 和 rejectVehicle() 方法严格控制状态转换,驳回时必须填写原因,通过 AOP 自动记录审核操作。 这项目是我拿来练手的,只在本地部署过,没有传上过任何服务器,同时学校也采纳过我这个项目并进行过改进