综合交通运行协调与应急指挥平台项目说明

综合交通运行协调与应急指挥平台

项目简介

基于 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

访问: http://localhost:8080

默认账号

  • 用户名: admin
  • 密码: 123456

API文档

启动服务后访问 Swagger 文档:

核心功能

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: 媒体文件表

注意事项

  1. 服务启动顺序: 确保Nacos先启动,然后启动Gateway,最后启动各业务服务
  2. 数据库隔离: 每个微服务使用独立数据库,禁止跨库JOIN
  3. Token校验: 除登录接口外,所有接口需在请求头携带Token
  4. 文件上传: 大文件上传需先启动MinIO服务
  5. 跨域配置: 网关已配置CORS,前端无需额外处理

扩展开发

添加新接口

  1. 在对应服务的Controller中添加方法
  2. 使用@Operation注解添加接口文档
  3. 在Gateway的路由配置中添加路径映射

跨服务调用

  1. 在common模块定义Feign接口
  2. 在需要调用的服务中注入Feign客户端
  3. 直接调用接口方法

添加新服务

  1. 创建新模块,继承父POM
  2. 添加Nacos discovery依赖
  3. 配置application.yml
  4. 在Gateway添加路由规则

项目启动指南

✅ 优化完成内容

代码优化

  1. ✅ 修复Gateway服务Lombok依赖缺失
  2. ✅ 添加LoginDTO参数校验注解
  3. ✅ 完善用户管理模块(UserService + UserController)
  4. ✅ 完善交通事件管理模块(IncidentService + IncidentController)
  5. ✅ 完善设备管理模块(DeviceService + DeviceController)
  6. ✅ 添加Swagger配置类
  7. ✅ 所有Service层添加业务逻辑实现
  8. ✅ 所有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中依次运行:

  1. GatewayApplication (8080)
  2. SystemApplication (8081)
  3. TrafficIncidentApplication (8082)
  4. IotMessageApplication (8083)

6. 验证启动

检查各服务是否启动成功:

7. 访问Swagger文档

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配置

  1. 安装插件:

    • Lombok Plugin
    • MyBatis X
    • Alibaba Java Coding Guidelines
  2. 设置Maven:

    • Settings → Maven → User Settings File → 指定settings.xml
    • 配置国内镜像(阿里云)加速下载
  3. 代码格式:

    • 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>

📊 项目健康检查

启动后可访问:

🎯 下一步

项目基础功能已完善,可以:

  1. 添加Redis缓存
  2. 集成MinIO文件存储
  3. 完善前端页面
  4. 添加单元测试
  5. 性能优化

相关推荐
小徐Chao努力2 小时前
【Langchain4j-Java AI开发】06-工具与函数调用
java·人工智能·python
无心水2 小时前
【神经风格迁移:全链路压测】33、全链路监控与性能优化最佳实践:Java+Python+AI系统稳定性保障的终极武器
java·python·性能优化
萧曵 丶2 小时前
Synchronized 详解及 JDK 版本优化
java·多线程·synchronized
夏幻灵2 小时前
JAVA基础:基本数据类型和引用数据类型
java·开发语言
weixin199701080162 小时前
闲鱼 item_get - 商品详情接口对接全攻略:从入门到精通
java·后端·spring
ChangYan.2 小时前
直接下载源码但是执行npm run compile后报错
前端·npm·node.js
cike_y3 小时前
Spring-Bean的作用域&Bean的自动装配
java·开发语言·数据库·spring
qq_12498707533 小时前
基于深度学习的蘑菇种类识别系统的设计与实现(源码+论文+部署+安装)
java·大数据·人工智能·深度学习·cnn·cnn算法
谈笑也风生3 小时前
经典算法题型之排序算法(三)
java·算法·排序算法