一个基于Spring Boot的企业级停车收费管理系统后端,提供完整的车辆进出管理、自动计费、用户认证授权、数据统计等功能。集成Redis缓存、JWT认证、分布式锁等高级功能,支持高并发场景。
- JWT Token认证,支持多设备登录
- 基于Redis的Token存储和管理
- 权限缓存,提升访问性能
- 自动Token续期和过期清理
- Redis缓存热点数据(用户权限、字典数据等)
- 方法级别缓存注解支持
- 分布式锁保证并发安全
- 智能缓存策略,自动清理过期数据
- Spring Boot 3.x + Spring Security
- MyBatis Plus数据访问层
- RESTful API设计规范
- 统一异常处理和响应格式
- 配置中心化管理
- 车辆进出记录管理
- 自动计费和优惠策略
- 数据统计报表
- 字典数据缓存管理
- Java: 17
- Spring Boot: 3.5.5
- Spring Security: 6.x
- MyBatis Plus: 3.5.1
- Redis: 7.0
- MySQL: 8.0
- Maven: 3.9+
- JUnit: 5.x
- Lombok: 简化Java代码
- Redis缓存服务
- JWT Token管理
- 分布式锁实现
- 方法级缓存注解
- JDK 17+
- Maven 3.6+
- MySQL 8.0+
- Redis 7.0+
- 克隆项目
git clone https://github.com/your-username/parking-fee-server.git
cd parking-fee-server- 配置数据库
-- 创建数据库
CREATE DATABASE parking_manager CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 导入表结构(如果有SQL文件)
-- source schema.sql;- 配置Redis
# 安装Redis(macOS)
brew install redis
brew services start redis
# 或使用Docker
docker run -d -p 6379:6379 redis:7-alpine- 修改配置文件
编辑
src/main/resources/application.yml:
spring:
datasource:
url: jdbc:mysql://localhost:3306/parking_manager?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: your_username
password: your_password
data:
redis:
host: localhost
port: 6379
password: # 如果设置了密码
database: 0- 编译运行
# 编译
mvn clean compile
# 运行
mvn spring-boot:run
# 或使用Maven Wrapper
./mvnw spring-boot:run- 验证服务 访问 http://localhost:8080/test/hello 验证服务是否正常运行。
POST /auth/login
Content-Type: application/json
{
"username": "admin",
"password": "password"
}GET /auth/info
Authorization: Bearer {token}POST /auth/logout
Authorization: Bearer {token}{
"code": 200,
"message": "操作成功",
"data": {
// 响应数据
}
}parking-fee-server/
├── src/main/java/com/parking/manager/
│ ├── ParkingManagerApplication.java # 启动类
│ ├── common/ # 通用模块
│ │ ├── annotation/ # 自定义注解
│ │ │ ├── Cacheable.java # 缓存注解
│ │ │ └── CacheEvict.java # 缓存清除注解
│ │ ├── aspect/ # AOP切面
│ │ │ └── CacheAspect.java # 缓存切面实现
│ │ ├── config/ # 配置类
│ │ │ ├── RedisConfig.java # Redis配置
│ │ │ └── SecurityConfig.java # 安全配置
│ │ ├── exception/ # 异常处理
│ │ │ ├── BusinessException.java # 业务异常
│ │ │ └── GlobalExceptionHandler.java # 全局异常处理器
│ │ ├── filter/ # 过滤器
│ │ │ └── JwtAuthenticationTokenFilter.java # JWT认证过滤器
│ │ ├── handler/ # 处理器
│ │ │ ├── AuthenticationEntryPointImpl.java # 认证失败处理器
│ │ │ └── LogoutSuccessHandlerImpl.java # 登出成功处理器
│ │ ├── result/ # 统一响应
│ │ │ ├── Result.java # 响应对象
│ │ │ └── PageResult.java # 分页响应
│ │ ├── service/ # 通用服务
│ │ │ ├── DictCacheService.java # 字典缓存服务
│ │ │ ├── DistributedLockService.java # 分布式锁服务
│ │ │ ├── TokenCacheService.java # Token缓存服务
│ │ │ ├── UserDetailsServiceImpl.java # 用户详情服务
│ │ │ └── UserPermissionCacheService.java # 用户权限缓存
│ │ └── utils/ # 工具类
│ │ ├── JwtUtils.java # JWT工具类
│ │ └── RedisService.java # Redis服务工具
│ ├── system/ # 系统管理模块
│ │ └── controller/ # 系统控制器
│ │ ├── AuthController.java # 认证控制器
│ │ └── TestController.java # 测试控制器
│ ├── parking/ # 停车场管理模块
│ ├── vehicle/ # 车辆管理模块
│ ├── charge/ # 收费管理模块
│ ├── inout/ # 进出管理模块
│ ├── statistics/ # 统计报表模块
│ ├── monitor/ # 系统监控模块
│ └── ai/ # AI集成模块
│ └── service/
│ └── AiService.java # AI服务接口
├── src/main/resources/
│ ├── application.yml # 主配置文件
│ └── application.properties # 备用配置文件
├── src/test/ # 测试代码
├── .gitignore # Git忽略文件
├── mvnw # Maven Wrapper (Unix)
├── mvnw.cmd # Maven Wrapper (Windows)
├── pom.xml # Maven配置
└── README.md # 项目说明
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/parking_manager?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: your_passwordspring:
data:
redis:
host: localhost
port: 6379
password: # 可选
database: 0
timeout: 10s
lettuce:
pool:
max-active: 200
max-wait: -1ms
max-idle: 10
min-idle: 0jwt:
header: Authorization
secret: parking-manager-secret-key-2024
expiration: 7200 # 2小时
tokenHead: Bearer# 运行单元测试
mvn test
# 运行特定测试类
mvn test -Dtest=AuthControllerTest
# 生成测试覆盖率报告
mvn test jacoco:report访问 http://localhost:8080/actuator/health 查看应用健康状态
- Redis连接状态
- 缓存命中率统计
- 内存使用情况
项目使用SLF4J + Logback进行日志管理,可通过 application.yml 配置日志级别:
logging:
level:
com.parking.manager: DEBUG
org.springframework.security: DEBUG- Fork 本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
- 遵循阿里巴巴Java开发规范
- 提交前运行测试确保通过
- 更新相关文档
- 使用有意义的提交信息
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情
- 项目维护者: linhe
- 邮箱: linhe.sq@gmail.com
感谢以下开源项目和贡献者: