LEO 卫星星座管理平台

LEO/MEO/GEO 全要素卫星星座综合管理系统,提供卫星追踪、星座管理、地面站运维、通信链路监控、实时遥测数据可视化以及 3D 轨道仿真等一站式解决方案。

登录

登录.png

仪表盘

仪表盘.png

3D仿真

3D仿真.png

地面站

地面站.png

轨道视图

轨道视图.png

接入监控

接入监控.png

数据接入

数据接入.png

通信链路

通信链路.png

卫星管理

卫星管理.png

星座管理

星座管理.png

遥测监控

遥测监控.png

技术栈

后端

技术版本说明
Spring Boot3.3.5应用框架
Java17运行环境
MyBatis-Flex1.10.4ORM 数据访问层
PostgreSQL-关系型数据库
Redis-缓存与会话管理
jjwt0.12.6JWT 认证
SpringDoc OpenAPI2.6.0API 文档
Spring WebSocket-实时遥测推送
Hutool5.8.32通用工具库

前端

技术版本说明
Vue3.5.13前端框架
TypeScript5.x类型安全
Vite6.0.3构建工具
Element Plus2.9.1UI 组件库
Pinia2.2.6状态管理
Vue Router4.4.5路由管理
Axios1.7.7HTTP 客户端
CesiumJS1.141.03D 地球可视化
ECharts5.5.1数据图表
Vue I18n9.14.4国际化

核心功能

  • 卫星管理 — 卫星全生命周期管理,支持按轨道类型、星座筛选,批量操作
  • 星座管理 — 多卫星星座协同编排,支持分页查询与过滤
  • 地面站运维 — 地面站配置管理(国家、区域、天线参数、频段、状态)
  • 通信链路监控 — 星间链路 (ISL) 与星地链路 (GSL) 的信号质量、带宽、延迟监控
  • 实时遥测 — WebSocket 实时推送电池电量、太阳能板功率、温度、信噪比等关键指标
  • 3D 可视化 — 基于 CesiumJS 的卫星轨道、星座覆盖与地球 3D 渲染
  • 仪表盘分析 — KPI 卡片、轨道分布饼图、状态分布柱状图、系统活动概览
  • 认证授权 — JWT 无状态认证 + 基于角色的访问控制 (RBAC)

项目结构

text
复制代码
LEO/ ├── leo-backend/ # Spring Boot 后端 │ ├── src/main/java/com/leo/satellite/ │ │ ├── common/ # 通用组件(拦截器、工具类、异常处理) │ │ ├── config/ # 配置(Security、CORS、Redis、WebSocket) │ │ ├── controller/ # REST 控制器 │ │ ├── entity/ # 实体模型 │ │ ├── mapper/ # MyBatis-Flex Mapper 接口 │ │ ├── service/ # 业务服务层 │ │ └── websocket/ # WebSocket 实时通信 │ ├── src/main/resources/ │ │ ├── application.yml # 应用配置 │ │ ├── sql/init.sql # 数据库初始化脚本 │ │ └── mapper/ # MyBatis XML 映射文件 │ └── pom.xml # Maven 依赖管理 │ ├── leo-frontend/ # Vue 3 前端 │ ├── src/ │ │ ├── api/ # API 接口层 │ │ ├── assets/styles/ # 全局样式与 Less 变量 │ │ ├── components/ # 可复用组件 │ │ ├── layouts/ # 布局组件 │ │ ├── locales/ # 国际化(中/英) │ │ ├── router/ # 路由配置 │ │ ├── stores/ # Pinia 状态管理 │ │ ├── types/ # TypeScript 类型定义 │ │ ├── utils/ # 工具函数(WebSocket、Axios 封装) │ │ └── views/ # 页面视图 │ ├── package.json │ ├── nginx.conf # Nginx 部署配置 │ └── vite.config.ts │ ├── docker-compose.yml # Docker 一键部署编排 └── README.md

快速开始

环境要求

  • JDK 17 或更高版本
  • Node.js (LTS 版本)
  • PostgreSQL 15 或更高版本
  • Redis 6.x 或更高版本
  • Maven 3.8+(或使用项目自带的 mvnw

1. 数据库初始化

在 PostgreSQL 中创建数据库并运行初始化脚本:

sql
复制代码
CREATE DATABASE leo_satellite;

然后执行:

bash
复制代码
psql -U postgres -d leo_satellite -f leo-backend/src/main/resources/sql/init.sql

2. 后端启动

bash
复制代码
cd leo-backend # Windows ./mvnw.cmd clean install -DskipTests ./mvnw.cmd spring-boot:run # macOS / Linux ./mvnw clean install -DskipTests ./mvnw spring-boot:run

后端默认运行在 http://localhost:8080/api,Swagger 文档位于 http://localhost:8080/api/swagger-ui.html

3. 前端启动

bash
复制代码
cd leo-frontend npm install npm run dev

前端开发服务器默认运行在 http://localhost:3000,代理 /api/ws 请求到后端。

4. 访问系统

打开浏览器访问 http://localhost:3000,使用以下账号登录:

角色用户名密码
管理员adminadmin123
操作员operatoradmin123

环境配置

主要配置项位于 leo-backend/src/main/resources/application.yml

yaml
复制代码
server: port: 8080 servlet: context-path: /api spring: datasource: url: jdbc:postgresql://localhost:5432/leo_satellite username: postgres password: postgres data: redis: host: localhost port: 6379 jwt: secret: your-secret-key expiration: 86400000 # 24小时

请根据实际环境修改数据库连接、Redis 地址和 JWT 密钥。

API 文档

启动后端后,可通过以下地址访问 OpenAPI / Swagger 交互式文档:

text
复制代码
http://localhost:8080/api/swagger-ui.html

主要 API 模块:

模块路径前缀说明
认证/api/auth登录、刷新 Token
卫星/api/satellitesCRUD、按轨道/星座查询
星座/api/constellations星座管理
地面站/api/ground-stations地面站管理
通信链路/api/comm-links链路监控与管理
遥测/api/telemetry遥测数据查询
仪表盘/api/dashboard统计数据聚合

架构概览

系统采用前后端分离的分层架构,自顶向下划分为四层:

jggl.png

分层职责

说明
表现层Vue 3 单页应用,负责 UI 渲染、用户交互、3D 可视化。通过 Pinia 管理状态,Axios 发起 HTTP 请求,SockJS/STOMP 订阅实时推送
网关层Nginx 统一入口,处理静态资源分发、API 反向代理、WebSocket 升级、Gzip 压缩与缓存策略
业务逻辑层Spring Boot 应用核心。Security 过滤器校验 JWT Token → Controller 接收请求 → Service 执行业务编排 → 返回统一响应体R<T>
数据访问层MyBatis-Flex Mapper 完成 ORM 映射与分页查询;Redis 缓存热点数据(仪表盘统计、卫星列表),TTL 1 小时;PostgreSQL 持久化全部业务数据

核心数据流

以「卫星分页查询」为例,展示端到端链路:

mermaid
复制代码
sequenceDiagram actor U as 用户 participant FE as Vue 组件 participant Store as Pinia Store participant Axios as Axios 拦截器 participant Filter as JWT Filter participant Ctrl as SatelliteController participant Svc as SatelliteService participant Cache as Redis participant Mapper as Mapper participant DB as PostgreSQL U->>FE: 选择筛选条件并翻页 FE->>Store: dispatch fetchSatellites(params) Store->>Axios: GET /api/satellites?page=1&size=20 Axios->>Axios: 注入 Authorization: Bearer {token} Axios->>Filter: HTTP Request Filter->>Filter: 校验 JWT 签名与有效期 Filter->>Ctrl: 放行到 Controller Ctrl->>Svc: page(query) Svc->>Cache: 查询缓存 alt 缓存未命中 Svc->>Mapper: paginate(queryWrapper) Mapper->>DB: SELECT COUNT(*) ... SELECT * ... LIMIT OFFSET DB-->>Mapper: Page<Satellite> Mapper-->>Svc: PageResult Svc->>Cache: 写入 Redis (TTL 1h) else 缓存命中 Cache-->>Svc: 直接返回缓存数据 end Svc-->>Ctrl: PageResult<Satellite> Ctrl-->>Axios: 200 OK + R<PageResult> Axios->>Axios: 响应拦截:解包 data Axios-->>Store: PageResult Store-->>FE: 响应式更新 FE-->>U: 渲染表格与分页

实时遥测数据流

mermaid
复制代码
sequenceDiagram participant Browser as 浏览器前端 participant Nginx as Nginx participant WS as WebSocket Endpoint /api/ws participant Broker as STOMP Broker participant Publisher as TelemetryWebSocket Browser->>Nginx: WebSocket Upgrade 请求 Nginx->>WS: 代理转发 (Connection: Upgrade) WS->>Broker: 注册 STOMP 端点 Browser->>Broker: SUBSCRIBE /topic/telemetry/realtime Broker-->>Browser: 订阅确认 loop 每 5 秒 Publisher->>Publisher: 计算/采集遥测数据 Publisher->>Broker: convertAndSend("/topic/telemetry/realtime", payload) Broker-->>Browser: 推送遥测 JSON Browser->>Browser: 更新指标卡片 & 趋势图 end

功能架构

系统按业务域划分为九大功能模块:

gnjg.png

模块职责明细

模块前端视图后端 Controller核心能力
卫星管理SatelliteList / SatelliteDetailSatelliteController全生命周期 CRUD,按轨道类型(LEO/MEO/GEO)与星座筛选,批量删除
星座管理ConstellationListConstellationController星座创建/编辑,轨道面与每面卫星数配置,发射/在轨数量追踪
地面站管理StationListGroundStationController全球站点登记,天线口径/类型/频段配置,运行状态管理
通信链路LinkListCommunicationLinkControllerISL(星间)/GSL(星地)链路监控,频率/数据率/调制方式/信号强度
遥测监控TelemetryViewTelemetryController实时 WebSocket 推送,历史分页查询,最新遥测快照,健康状态标记
仪表盘分析DashboardViewDashboardController聚合统计(卫星/站/链路数),轨道分布饼图,状态分布柱状图
轨道可视化OrbitView(SAT API)2D SVG 轨道环渲染,卫星动态定位,按轨道类型过滤
3D 仿真SimulationView(SAT/Orbit API)CesiumJS 3D 地球场景,卫星轨道预测,覆盖分析
数据接入DataSourceList / DataSourceDetail / DataAccessMonitorDataAccessController多协议接入(MQTT/FTP/SFTP/CoAP/HTTP REST),数据源配置与监控

技术架构

jsjg.png

关键技术决策

决策点选择理由
ORM 框架MyBatis-Flex比 MyBatis-Plus 更轻量,链式查询 + Lambda 表达式类型安全,分页插件开箱即用
认证方案JWT 无状态无需服务端 Session,适合前后端分离;jjwt 库原生支持 Jackson 序列化
实时通信STOMP over SockJS比原生 WebSocket 更易用,支持订阅/广播模式,SockJS 提供降级兼容
3D 可视化CesiumJS业界标准的地球渲染引擎,支持 TLE 轨道计算、CZML 时序数据
缓存策略Redis + Spring Cache注解驱动(@Cacheable),TTL 1 小时 + Key 前缀隔离,减少数据库压力
API 文档SpringDoc OpenAPI兼容 Swagger UI,零注解侵入,自动生成 OpenAPI 3.0 规范文档

构建与部署

Docker 一键部署(推荐)

项目根目录已提供 docker-compose.yml,包含 PostgreSQL、Redis、后端、前端四个服务。

bash
复制代码
# 在项目根目录执行 docker compose up -d

首次启动会自动:

  1. 拉取 PostgreSQL 16、Redis 7 镜像并初始化数据库
  2. 构建后端 Spring Boot 镜像并启动(端口 8080)
  3. 构建前端 Nginx 镜像并启动(端口 80)

启动后访问 http://localhost 即可使用。

常用命令:

bash
复制代码
# 查看运行状态 docker compose ps # 查看日志 docker compose logs -f backend docker compose logs -f frontend # 重新构建并启动 docker compose up -d --build # 停止所有服务 docker compose down # 停止并删除数据卷(⚠️ 会清空数据库) docker compose down -v

手动部署

后端打包

bash
复制代码
cd leo-backend ./mvnw clean package -DskipTests java -jar target/leo-satellite-1.0.0-SNAPSHOT.jar

前端构建

bash
复制代码
cd leo-frontend npm run build

构建产物位于 leo-frontend/dist/,可部署至 Nginx 或其他静态资源服务器。参考配置见 leo-frontend/nginx.conf

常见问题

问题解决方法
数据库连接失败检查 PostgreSQL 是否启动,验证application.yml 中的连接信息
Redis 无法连接确认 Redis 服务已启动,默认端口 6379
WebSocket 连接异常确认 Vite 代理配置中/ws 已正确转发到后端
401 认证失败检查 JWT 密钥与过期时间配置,确认 Token 在请求头中携带
端口冲突后端默认 8080,前端默认 3000,可在配置文件中修改

开源地址

gitee:https://gitee.com/zd_g/leo.git 数据库初始化脚本: https://webnote.cc/futu

License

本项目仅供学习和参考使用、不建议商用。

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP