Skip to content

LincolnMa1285/UOM

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

低空飞行申报与智能审核系统 - 项目说明与部署文档

1. 项目概述

1.1 项目简介

低空飞行申报与智能审核系统是一套政务类信息管理系统,用于规范和管理民用无人驾驶航空器(无人机)的飞行活动申报与审批流程。系统对标民航局UOM全国无人机综合监管平台,依据《无人驾驶航空器飞行管理暂行条例》及相关国家标准进行设计开发。

1.2 核心功能

功能模块 功能说明
用户管理 飞手、审核员、管理员三种角色,支持注册、登录、实名认证
无人机管理 依据GB 46761-2025标准进行无人机分类登记管理
飞行计划申报 填写时间、空域、航线、高度、飞行器、用途等信息
智能合规校验 自动校验飞行时间、空域、高度、操控员资质等6大规则
多级审核流程 初审→复审→批准/驳回/退回修改
申请状态查询 实时查看进度、驳回原因、整改要求
历史记录归档 查询历史申请、飞行记录

1.3 参考标准

  • 《无人驾驶航空器飞行管理暂行条例》(国务院令第761号)
  • GB 46761-2025《民用无人驾驶航空器系统分类及分级》
  • GB 46750-2025《民用无人驾驶航空器系统运行识别信息》

2. 技术架构

2.1 技术栈

层级 技术 版本
前端框架 Vue 3.4+
UI组件库 Element Plus 2.4+
路由管理 Vue Router 4.2+
状态管理 Pinia 2.1+
HTTP客户端 Axios 1.6+
后端框架 Spring Boot 3.2+
安全框架 Spring Security 6.2+
ORM框架 MyBatis-Plus 3.5+
数据库 MySQL 8.0
接口文档 Knife4j (Swagger) 4.4+

2.2 系统架构图

┌─────────────────────────────────────────────────────────────────┐
│                          用户层                                  │
│     ┌──────────┐    ┌──────────┐    ┌──────────┐               │
│     │  飞手端   │    │ 审核员端 │    │ 管理员端 │               │
│     └──────────┘    └──────────┘    └──────────┘               │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│                        前端服务层                                │
│              Vue3 + Element Plus + Vue Router                   │
│   ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐      │
│   │登录注册│ │无人机  │ │飞行申报│ │审核管理│ │记录查询│      │
│   └────────┘ └────────┘ └────────┘ └────────┘ └────────┘      │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│                        后端服务层                                │
│          SpringBoot 3.x + Spring Security + MyBatis-Plus        │
│   ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐      │
│   │认证授权│ │业务逻辑│ │合规校验│ │审核流程│ │文件服务│      │
│   └────────┘ └────────┘ └────────┘ └────────┘ └────────┘      │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│                        数据存储层                                │
│                    MySQL 8.0 + 文件存储                          │
└─────────────────────────────────────────────────────────────────┘

3. 项目结构

UOM/
├── db/                              # 数据库脚本
│   ├── init.sql                     # 建表SQL(8张核心表)
│   └── data.sql                     # 初始数据(测试用户、无人机、空域等)
│
├── backend/                         # 后端SpringBoot项目
│   ├── pom.xml                      # Maven依赖配置
│   └── src/main/
│       ├── java/com/flight/
│       │   ├── FlightApplication.java    # 启动类
│       │   ├── common/                   # 通用类
│       │   │   ├── Result.java           # 统一响应封装
│       │   │   ├── ResultCode.java       # 响应状态码
│       │   │   ├── PageQuery.java        # 分页查询基类
│       │   │   └── PageResult.java       # 分页结果封装
│       │   ├── config/                   # 配置类
│       │   │   ├── SecurityConfig.java   # Spring Security配置
│       │   │   ├── MybatisPlusConfig.java
│       │   │   ├── CorsConfig.java       # 跨域配置
│       │   │   └── MyMetaObjectHandler.java
│       │   ├── controller/               # 控制器(5个)
│       │   ├── entity/                   # 实体类(8个)
│       │   ├── mapper/                   # Mapper接口(8个)
│       │   ├── service/                  # 服务层
│       │   │   ├── UserService.java
│       │   │   ├── DroneService.java
│       │   │   ├── FlightPlanService.java
│       │   │   ├── AuditService.java
│       │   │   ├── ComplianceService.java
│       │   │   └── impl/                 # 服务实现类
│       │   ├── dto/                      # 数据传输对象(6个)
│       │   ├── vo/                       # 视图对象(7个)
│       │   ├── enums/                    # 枚举类(10个)
│       │   ├── security/                 # 安全模块
│       │   │   ├── LoginUser.java        # 用户详情实现
│       │   │   ├── UserDetailsServiceImpl.java
│       │   │   └── JwtAuthenticationFilter.java
│       │   ├── exception/                # 异常处理
│       │   └── utils/                    # 工具类
│       └── resources/
│           └── application.yml           # 应用配置
│
└── frontend/                        # 前端Vue3项目
    ├── package.json                 # 依赖配置
    ├── vite.config.js               # Vite构建配置
    ├── index.html                   # 入口HTML
    └── src/
        ├── main.js                  # 入口JS
        ├── App.vue                  # 根组件
        ├── api/                     # API接口(4个)
        │   ├── auth.js              # 认证接口
        │   ├── drone.js             # 无人机接口
        │   ├── flight.js            # 飞行计划接口
        │   └── audit.js             # 审核接口
        ├── router/                  # 路由配置
        ├── store/                   # 状态管理
        │   └── user.js              # 用户状态
        ├── utils/                   # 工具函数
        │   ├── request.js           # Axios封装
        │   └── auth.js              # Token管理
        ├── layout/                  # 布局组件
        │   └── index.vue            # 主布局
        └── views/                   # 页面组件
            ├── login/               # 登录/注册
            ├── dashboard/           # 首页仪表盘
            ├── user/                # 个人中心
            ├── drone/               # 无人机管理
            ├── flight/              # 飞行申报
            ├── audit/               # 审核管理
            └── record/              # 历史记录

4. 数据库设计

4.1 数据库表清单

表名 说明 主要字段
sys_user 用户表 用户名、密码、角色、认证状态
pilot_certificate 操控员资质表 执照编号、类型、等级、有效期
drone 无人机表 产品信息、重量、类别、登记状态
flight_plan 飞行计划表 计划信息、航线、状态、校验结果
audit_record 审核记录表 审核类型、操作、意见
attachment 附件材料表 文件信息、类型
airspace 空域信息表 空域类型、坐标、高度限制
message 消息通知表 消息内容、已读状态

4.2 无人机分类标准(依据GB 46761-2025)

类别 空机重量 最大起飞重量 管理要求
微型 <0.25kg <0.25kg 无需登记
轻型 ≥0.25kg且<4kg ≥0.25kg且<7kg 实名登记
小型 ≥4kg且<15kg ≥7kg且<25kg 实名登记+责任险
中型 ≥15kg且<150kg ≥25kg且<700kg 实名登记+责任险+执照
大型 ≥150kg ≥700kg 实名登记+责任险+执照

4.3 飞行计划状态流转

草稿(DRAFT) → 待审核(PENDING) → 初审中(FIRST_REVIEW) → 复审中(SECOND_REVIEW) → 已通过(APPROVED)
                                      ↓                        ↓
                                  已驳回(REJECTED)          已驳回(REJECTED)
                                      ↓
                                  需修改(REVISION) → 待审核(PENDING) → ...

已通过(APPROVED) → 执行中(IN_FLIGHT) → 已完成(COMPLETED) → 已归档(ARCHIVED)

5. 接口文档

5.1 接口规范

  • 基础路径/api/v1
  • 认证方式:JWT Token(Header: Authorization: Bearer <token>
  • 响应格式
{
    "code": 200,
    "message": "操作成功",
    "data": {},
    "timestamp": 1705123456789
}

5.2 接口清单

认证接口 /api/v1/auth

方法 路径 说明 认证
POST /login 用户登录
POST /register 用户注册
GET /me 获取当前用户信息

无人机接口 /api/v1/drones

方法 路径 说明 认证
POST / 新增无人机登记
GET /mine 查询我的无人机
GET /{id} 查询无人机详情
PUT /{id} 更新无人机信息
DELETE /{id} 删除无人机

飞行计划接口 /api/v1/flight-plans

方法 路径 说明 认证
POST / 创建飞行计划
GET /mine 查询我的飞行计划
GET /pending 查询待审核列表 审核员
GET /{id} 查询飞行计划详情
PUT /{id} 更新飞行计划
POST /{id}/submit 提交审核
POST /{id}/cancel 取消申请
POST /{id}/confirm-takeoff 确认起飞
POST /{id}/confirm-landing 确认降落

审核接口 /api/v1/audits

方法 路径 说明 认证
POST /{id}/approve 审核通过 审核员
POST /{id}/reject 审核驳回 审核员
POST /{id}/revise 退回修改 审核员
GET /{id}/records 获取审核记录
GET /history 获取审核历史 审核员

合规校验接口 /api/v1/compliance

方法 路径 说明 认证
POST /{id}/check 执行合规校验

6. 部署指南

6.1 环境要求

软件 版本要求 说明
JDK 17+ Java开发环境
Node.js 18+ 前端运行环境
MySQL 8.0+ 数据库
Maven 3.8+ 构建工具(可选,IDE可直接运行)

6.2 数据库部署

6.2.1 创建数据库并导入数据

# 进入MySQL命令行
mysql -u root -proot

# 或者直接执行SQL脚本
mysql -u root -proot < UOM/db/init.sql
mysql -u root -proot < UOM/db/data.sql

6.2.2 验证数据库

USE lowaltitude_flight;
SHOW TABLES;
-- 应显示8张表

SELECT * FROM sys_user;
-- 应显示6个测试用户

6.3 后端部署

6.3.1 方式一:IDE直接运行

  1. 使用IDE(IntelliJ IDEA)打开 UOM/backend 目录
  2. 等待Maven依赖下载完成
  3. 运行 FlightApplication.java 主类

6.3.2 方式二:Maven打包运行

cd UOM/backend

# 打包(跳过测试)
mvn clean package -DskipTests

# 运行
java -jar target/lowaltitude-flight-1.0.0.jar

6.3.3 后端启动成功标志

============================================
  低空飞行申报与智能审核系统启动成功!
  API文档: http://localhost:8080/doc.html
============================================

6.4 前端部署

6.4.1 安装依赖

cd UOM/frontend
npm install

6.4.2 开发环境运行

npm run dev

启动成功后访问:http://localhost:3000

6.4.3 生产环境打包

npm run build

打包产物在 dist 目录,部署到Nginx或任意静态文件服务器。

6.5 Nginx配置(生产环境)

server {
    listen 80;
    server_name your-domain.com;

    # 前端静态文件
    location / {
        root /www/lowaltitude-flight/dist;
        index index.html;
        try_files $uri $uri/ /index.html;
    }

    # API代理
    location /api {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # 文件上传大小限制
    client_max_body_size 100M;
}

7. 系统使用说明

7.1 测试账号

角色 用户名 密码 说明
管理员 admin 123456 拥有所有权限
审核员 auditor1 123456 审核飞行申请
审核员 auditor2 123456 审核飞行申请
飞手 pilot1 123456 已实名认证,有无人机
飞手 pilot2 123456 已实名认证,有无人机
飞手 pilot3 123456 未实名认证

7.2 业务流程示例

飞手操作流程

  1. 登录系统 → 使用飞手账号登录
  2. 登记无人机 → 无人机管理 → 新增登记
  3. 新建飞行申报 → 飞行申报 → 新建申报
  4. 填写申报信息 → 选择无人机、时间、地点、用途
  5. 提交审核 → 确认信息后提交
  6. 查看审核进度 → 我的申报 → 查看状态
  7. 确认起飞 → 审核通过后,执行飞行时确认起飞
  8. 确认降落 → 飞行结束后确认降落

审核员操作流程

  1. 登录系统 → 使用审核员账号登录
  2. 查看待审核列表 → 审核管理 → 待审核列表
  3. 审核申请 → 查看详情 → 通过/驳回/退回修改
  4. 查看审核历史 → 审核管理 → 审核历史

7.3 合规校验规则

系统自动执行以下6项合规校验:

校验项 校验规则 不通过处理
无人机登记 无人机必须已实名登记 提示先完成登记
操控员资质 中型及以上需持有效执照 提示获取执照
空域合规 禁飞区禁止飞行,管控区需批件 提示更换空域
高度合规 不超过无人机类别限制高度 提示降低高度
时间合规 6:00-22:00允许飞行 提示调整时间
无人机状态 无人机必须状态正常 提示检查状态

8. 配置说明

8.1 数据库配置

修改 backend/src/main/resources/application.yml

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/lowaltitude_flight?useUnicode=true&characterEncoding=utf8mb4&serverTimezone=Asia/Shanghai
    username: root
    password: root  # 修改为实际密码

8.2 JWT密钥配置

jwt:
  secret: LowAltitudeFlight2024SecretKeyForJWTTokenGeneration  # 建议修改为自定义密钥
  expiration: 7200000           # Token有效期(毫秒)
  refresh-expiration: 604800000 # Refresh Token有效期(毫秒)

8.3 文件上传配置

file:
  upload-path: ./uploads/       # 文件上传目录

8.4 前端代理配置

修改 frontend/vite.config.js

server: {
  port: 3000,                   # 前端端口
  proxy: {
    '/api': {
      target: 'http://localhost:8080',  # 后端地址
      changeOrigin: true
    }
  }
}

9. 常见问题

9.1 后端启动失败

问题:数据库连接失败

解决

  1. 确认MySQL服务已启动
  2. 确认数据库账号密码正确
  3. 确认数据库 lowaltitude_flight 已创建

9.2 前端启动失败

问题:npm install 报错

解决

# 清除缓存后重试
rm -rf node_modules package-lock.json
npm install

9.3 登录后403错误

问题:Token过期或无效

解决

  1. 清除浏览器LocalStorage
  2. 重新登录

9.4 文件上传失败

问题:上传大小超限

解决

  1. 检查 application.yml 中的文件大小配置
  2. 检查Nginx的 client_max_body_size 配置

10. 开发说明

10.1 项目扩展

如需添加新功能,按以下步骤:

  1. 数据库:在 init.sql 中添加新表
  2. 实体类:在 entity 包中创建实体类
  3. Mapper:在 mapper 包中创建Mapper接口
  4. Service:在 service 包中创建服务接口和实现
  5. Controller:在 controller 包中创建控制器
  6. 前端API:在 api 目录中添加接口调用
  7. 前端页面:在 views 目录中添加页面组件
  8. 路由配置:在 router/index.js 中添加路由

10.2 代码规范

  • 后端遵循Spring Boot开发规范
  • 前端遵循Vue3 + Composition API规范
  • 接口遵循RESTful设计规范
  • 数据库字段使用下划线命名
  • Java类使用驼峰命名

附录

A. 初始数据说明

data.sql 中包含以下测试数据:

  • 6个用户(1管理员、2审核员、3飞手)
  • 3条操控员资质记录
  • 6架无人机
  • 7个空域(3适飞、2管控、2禁飞)
  • 4条飞行计划(含各状态示例)
  • 3条审核记录
  • 4条消息通知

B. 相关文档

  • 项目设计文档:UOM/../项目设计文档.md
  • 数据库脚本:UOM/db/init.sqlUOM/db/data.sql
  • API文档:启动后端后访问 http://localhost:8080/doc.html

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 56.6%
  • Vue 36.5%
  • JavaScript 6.7%
  • HTML 0.2%