综合交通运行协调与应急指挥平台
项目简介
基于 Spring Boot 3 + Spring Cloud + Vue3 的微服务架构交通运行监测与应急指挥平台。
技术栈
后端
- JDK 17
- Spring Boot 3.2.1
- Spring Cloud 2023.0.0
- Spring Cloud Alibaba 2022.0.0.0
- MySQL 8.0
- MyBatis Plus 3.5.5
- Nacos 2.2.3 (服务发现与配置中心)
- Gateway (API网关)
- JWT (Token认证)
- MinIO (文件存储)
前端
- Vue 3
- Pinia (状态管理)
- Vue Router
- Axios
- Element Plus
项目结构
comprehensive-traffic-platform/
├── common/ # 公共模块
├── discovery-config-center/ # Nacos配置(需独立部署)
├── gateway-service/ # API网关 (端口:8080)
├── system-service/ # 系统服务 (端口:8081)
├── traffic-incident-service/ # 交通事件服务 (端口:8082)
├── iot-message-service/ # 物联消息服务 (端口:8083)
└── frontend/ # Vue3前端
快速开始
1. 环境准备
必需环境
- JDK 17
- Maven 3.6+
- MySQL 8.0
- Node.js 16+ (前端)
- Nacos Server 2.2.3
可选环境
- MinIO (文件存储)
- Redis (缓存,可选)
2. 安装Nacos
bash
# 下载Nacos
wget https://github.com/alibaba/nacos/releases/download/2.2.3/nacos-server-2.2.3.zip
unzip nacos-server-2.2.3.zip
# 启动Nacos (单机模式)
cd nacos/bin
# Windows
startup.cmd -m standalone
# Linux/Mac
sh startup.sh -m standalone
访问: http://localhost:8848/nacos (账号/密码: nacos/nacos)
3. 初始化数据库
执行以下SQL脚本:
bash
# 系统服务数据库
mysql -u root -p < system-service/src/main/resources/sql/init_system.sql
# 交通事件服务数据库
mysql -u root -p < traffic-incident-service/src/main/resources/sql/init_traffic_incident.sql
# 物联消息服务数据库
mysql -u root -p < iot-message-service/src/main/resources/sql/init_traffic_iot.sql
4. 修改配置
修改各服务的 application.yml:
- 数据库连接信息
- Nacos服务地址
- MinIO配置(如使用)
5. 启动后端服务
bash
# 编译整个项目
mvn clean install
# 按顺序启动服务
# 1. 启动网关服务
cd gateway-service
mvn spring-boot:run
# 2. 启动系统服务
cd system-service
mvn spring-boot:run
# 3. 启动交通事件服务
cd traffic-incident-service
mvn spring-boot:run
# 4. 启动物联消息服务
cd iot-message-service
mvn spring-boot:run
6. 启动前端 (如已创建)
bash
cd frontend
npm install
npm run serve
默认账号
- 用户名: admin
- 密码: 123456
API文档
启动服务后访问 Swagger 文档:
- 网关: http://localhost:8080/doc.html
- 系统服务: http://localhost:8081/doc.html
- 交通事件服务: http://localhost:8082/doc.html
- 物联消息服务: http://localhost:8083/doc.html
核心功能
1. 系统服务 (system-service)
- 用户登录认证与JWT Token签发
- 基于RBAC的权限控制
- 组织机构管理(省/市/区三级)
- 系统配置与字典管理
- 操作日志记录
2. 交通事件服务 (traffic-incident-service)
- 实时交通流数据接入
- 路网运行状态评估
- 交通事件上报与管理
- 应急预案匹配
- 任务创建与分派
- 调度指令下发
3. 物联消息服务 (iot-message-service)
- IoT设备接入与管理
- 设备状态监控
- 设备指令下发
- 多通道消息通知(短信/邮件/APP)
- 文件上传与存储
服务间调用
使用OpenFeign进行服务间通信:
java
@Autowired
private SystemFeignClient systemClient;
@Autowired
private IotMessageFeignClient iotClient;
数据库设计
系统服务 (traffic_system)
- sys_user: 用户表
- sys_role: 角色表
- sys_menu: 菜单表
- sys_org: 组织机构表
- sys_dict_type/data: 字典表
- sys_config: 系统配置表
- sys_oper_log: 操作日志表
交通事件服务 (traffic_incident)
- road_segment: 路段信息表
- traffic_realtime: 实时交通流数据表
- incident: 交通事件表
- incident_attachment: 事件附件表
- emergency_plan: 应急预案表
- task: 应急任务表
- dispatch_log: 调度指令日志表
物联消息服务 (traffic_iot)
- device: 设备信息表
- device_status_log: 设备状态日志表
- device_command: 设备指令表
- message_template: 消息模板表
- notification_record: 通知记录表
- media_file: 媒体文件表
注意事项
- 服务启动顺序: 确保Nacos先启动,然后启动Gateway,最后启动各业务服务
- 数据库隔离: 每个微服务使用独立数据库,禁止跨库JOIN
- Token校验: 除登录接口外,所有接口需在请求头携带Token
- 文件上传: 大文件上传需先启动MinIO服务
- 跨域配置: 网关已配置CORS,前端无需额外处理
扩展开发
添加新接口
- 在对应服务的Controller中添加方法
- 使用
@Operation注解添加接口文档 - 在Gateway的路由配置中添加路径映射
跨服务调用
- 在common模块定义Feign接口
- 在需要调用的服务中注入Feign客户端
- 直接调用接口方法
添加新服务
- 创建新模块,继承父POM
- 添加Nacos discovery依赖
- 配置application.yml
- 在Gateway添加路由规则

项目启动指南
✅ 优化完成内容
代码优化
- ✅ 修复Gateway服务Lombok依赖缺失
- ✅ 添加LoginDTO参数校验注解
- ✅ 完善用户管理模块(UserService + UserController)
- ✅ 完善交通事件管理模块(IncidentService + IncidentController)
- ✅ 完善设备管理模块(DeviceService + DeviceController)
- ✅ 添加Swagger配置类
- ✅ 所有Service层添加业务逻辑实现
- ✅ 所有Controller添加完整接口
功能增强
- ✅ 用户管理: 增删改查、密码重置
- ✅ 事件管理: 创建、更新、处置、完成
- ✅ 设备管理: 设备控制、状态监控
- ✅ 全局异常处理
- ✅ 参数校验
- ✅ 分页查询
🚀 启动步骤
1. 环境检查
确保已安装:
- ✅ JDK 17
- ✅ MySQL 8.0
- ✅ Maven 3.6+
- ✅ IntelliJ IDEA (推荐)
2. 启动Nacos
bash
# 下载Nacos 2.2.3
# 解压后进入bin目录
cd nacos/bin
# Windows启动
startup.cmd -m standalone
# Linux/Mac启动
sh startup.sh -m standalone
# 访问控制台
http://localhost:8848/nacos
账号: nacos
密码: nacos
3. 初始化数据库
在MySQL中执行以下SQL脚本:
sql
-- 1. 系统服务数据库
source system-service/src/main/resources/sql/init_system.sql
-- 2. 交通事件服务数据库
source traffic-incident-service/src/main/resources/sql/init_traffic_incident.sql
-- 3. 物联消息服务数据库
source iot-message-service/src/main/resources/sql/init_traffic_iot.sql
4. 修改配置文件
根据实际环境修改各服务的application.yml:
yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/数据库名?...
username: 你的用户名
password: 你的密码
cloud:
nacos:
discovery:
server-addr: localhost:8848 # Nacos地址
5. IDEA中启动服务
方法1: 使用Maven
在IDEA中按顺序运行以下命令:
bash
# 1. 启动网关
cd gateway-service
mvn spring-boot:run
# 2. 启动系统服务
cd system-service
mvn spring-boot:run
# 3. 启动交通事件服务
cd traffic-incident-service
mvn spring-boot:run
# 4. 启动物联消息服务
cd iot-message-service
mvn spring-boot:run
方法2: 直接运行启动类
在IDEA中依次运行:
GatewayApplication(8080)SystemApplication(8081)TrafficIncidentApplication(8082)IotMessageApplication(8083)
6. 验证启动
检查各服务是否启动成功:
- 网关: http://localhost:8080
- 系统服务: http://localhost:8081
- 交通事件服务: http://localhost:8082
- 物联消息服务: http://localhost:8083
- Nacos控制台: http://localhost:8848/nacos
7. 访问Swagger文档
- 网关聚合文档: http://localhost:8080/doc.html
- 系统服务: http://localhost:8081/swagger-ui.html
- 交通事件服务: http://localhost:8082/swagger-ui.html
- 物联消息服务: http://localhost:8083/swagger-ui.html
8. 测试登录接口
使用Postman或curl测试:
bash
POST http://localhost:8080/api/auth/login
Content-Type: application/json
{
"username": "admin",
"password": "123456"
}
📋 常见问题
1. Lombok注解
解决方案:
- 安装IDEA Lombok插件
- File → Settings → Build → Compiler → Annotation Processors → 勾选 "Enable annotation processing"
- 重启IDEA
2. 端口占用
解决方案:
bash
# Windows查看端口
netstat -ano | findstr :8080
# 杀死进程
taskkill /F /PID 进程号
3. 数据库连接失败
检查:
- MySQL是否启动
- 数据库是否创建
- 用户名密码是否正确
- 时区配置: serverTimezone=Asia/Shanghai
4. Nacos连接失败
检查:
- Nacos是否启动 (localhost:8848)
- 网络是否通畅
- 配置文件中的server-addr是否正确
5. 依赖下载失败
解决方案:
bash
# 清理Maven缓存并重新下载
mvn clean install -U
🔧 开发建议
IDEA配置
-
安装插件:
- Lombok Plugin
- MyBatis X
- Alibaba Java Coding Guidelines
-
设置Maven:
- Settings → Maven → User Settings File → 指定settings.xml
- 配置国内镜像(阿里云)加速下载
-
代码格式:
- Settings → Editor → Code Style → Java
- 设置缩进为4空格
开发模式
开发时建议使用Spring Boot DevTools实现热部署:
xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
📊 项目健康检查
启动后可访问:
- 健康检查: http://localhost:8081/actuator/health
- 服务列表: http://localhost:8848/nacos (查看服务注册情况)
🎯 下一步
项目基础功能已完善,可以:
- 添加Redis缓存
- 集成MinIO文件存储
- 完善前端页面
- 添加单元测试
- 性能优化