【新增】Sirius固件查询接口及API文档

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-16 10:02:38 +08:00
parent 306222c55e
commit 37182d7efb
7 changed files with 581 additions and 0 deletions

View File

@@ -0,0 +1,346 @@
# Sirius 固件 API 接口文档
## 基本信息
- **Base URL**: `https://api.corewing.com`
- **接口前缀**: `/sirius_firmware`
## 统一响应格式
```json
{
"code": 200,
"message": "操作成功",
"data": {},
"success": true
}
```
| 字段 | 类型 | 说明 |
|------|------|------|
| code | Integer | 状态码200 成功500 失败) |
| message | String | 提示消息 |
| data | Object | 返回数据 |
| success | Boolean | 是否成功 |
## 枚举说明
### 固件类型firmwareType
| 值 | 说明 |
|----|------|
| 1 | 高频头 |
| 2 | 接收机 |
| 3 | 背包 |
### 协议类型protocolType
| 值 | 说明 |
|----|------|
| 1 | ELRS |
| 2 | CWLink |
## 固件对象字段说明
| 字段 | 类型 | 说明 |
|------|------|------|
| id | Integer | 主键ID |
| firmwareType | Integer | 固件类型1-高频头2-接收机3-背包 |
| protocolType | Integer | 协议类型1-ELRS2-CWLink |
| versionNumber | String | 版本号,如 v3.0.1 |
| fileName | String | 文件名 |
| filePath | String | 文件存储路径 |
| fileSize | Long | 文件大小(字节) |
| md5Hash | String | MD5 校验值 |
| releaseNotes | String | 版本更新说明(可能为 null |
| createTime | String | 创建时间 |
| updateTime | String | 更新时间 |
---
## 1. 查询最新固件版本
**接口描述:** 根据固件类型和协议类型查询最新版本,用于设备端检查更新。
**请求方式:** `GET`
**请求路径:** `/sirius_firmware/latest`
**请求参数:**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| firmwareType | Integer | 是 | 固件类型1-高频头2-接收机3-背包 |
| protocolType | Integer | 是 | 协议类型1-ELRS2-CWLink |
**请求示例:**
```bash
curl -X GET "http://your-server-host:8080/sirius_firmware/latest?firmwareType=1&protocolType=1"
```
**成功响应示例:**
```json
{
"code": 200,
"message": "操作成功",
"data": {
"id": 1,
"firmwareType": 1,
"protocolType": 1,
"versionNumber": "v3.0.1",
"fileName": "sirius_hf_elrs_v3.0.1.bin",
"filePath": "https://oss.corewing.com/sirius_firmware/sirius_hf_elrs_v3.0.1.bin",
"fileSize": 1048576,
"md5Hash": "d41d8cd98f00b204e9800998ecf8427e",
"releaseNotes": "优化信号连接稳定性",
"createTime": "2026-03-10 10:30:00",
"updateTime": "2026-03-10 10:30:00"
},
"success": true
}
```
**失败响应示例:**
```json
{
"code": 500,
"message": "固件不存在",
"data": null,
"success": false
}
```
---
## 2. 根据固件类型查询版本列表
**接口描述:** 查询指定固件类型下所有版本,按时间倒序排列。
**请求方式:** `GET`
**请求路径:** `/sirius_firmware/type/{firmwareType}`
**路径参数:**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| firmwareType | Integer | 是 | 固件类型1-高频头2-接收机3-背包 |
**请求示例:**
```bash
curl -X GET "http://your-server-host:8080/sirius_firmware/type/1"
```
**成功响应示例:**
```json
{
"code": 200,
"message": "操作成功",
"data": [
{
"id": 3,
"firmwareType": 1,
"protocolType": 2,
"versionNumber": "v2.1.0",
"fileName": "sirius_hf_cwlink_v2.1.0.bin",
"filePath": "https://oss.corewing.com/sirius_firmware/sirius_hf_cwlink_v2.1.0.bin",
"fileSize": 2097152,
"md5Hash": "098f6bcd4621d373cade4e832627b4f6",
"releaseNotes": "新增CWLink协议支持",
"createTime": "2026-03-12 14:00:00",
"updateTime": "2026-03-12 14:00:00"
},
{
"id": 1,
"firmwareType": 1,
"protocolType": 1,
"versionNumber": "v3.0.1",
"fileName": "sirius_hf_elrs_v3.0.1.bin",
"filePath": "https://oss.corewing.com/sirius_firmware/sirius_hf_elrs_v3.0.1.bin",
"fileSize": 1048576,
"md5Hash": "d41d8cd98f00b204e9800998ecf8427e",
"releaseNotes": "优化信号连接稳定性",
"createTime": "2026-03-10 10:30:00",
"updateTime": "2026-03-10 10:30:00"
}
],
"success": true
}
```
---
## 3. 根据固件类型和协议类型查询版本列表
**接口描述:** 查询指定固件类型和协议类型下所有版本,按时间倒序排列。
**请求方式:** `GET`
**请求路径:** `/sirius_firmware/type/{firmwareType}/protocol/{protocolType}`
**路径参数:**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| firmwareType | Integer | 是 | 固件类型1-高频头2-接收机3-背包 |
| protocolType | Integer | 是 | 协议类型1-ELRS2-CWLink |
**请求示例:**
```bash
curl -X GET "http://your-server-host:8080/sirius_firmware/type/1/protocol/1"
```
**成功响应示例:**
```json
{
"code": 200,
"message": "操作成功",
"data": [
{
"id": 5,
"firmwareType": 1,
"protocolType": 1,
"versionNumber": "v3.0.1",
"fileName": "sirius_hf_elrs_v3.0.1.bin",
"filePath": "https://oss.corewing.com/sirius_firmware/sirius_hf_elrs_v3.0.1.bin",
"fileSize": 1048576,
"md5Hash": "d41d8cd98f00b204e9800998ecf8427e",
"releaseNotes": "优化信号连接稳定性",
"createTime": "2026-03-12 14:00:00",
"updateTime": "2026-03-12 14:00:00"
},
{
"id": 2,
"firmwareType": 1,
"protocolType": 1,
"versionNumber": "v3.0.0",
"fileName": "sirius_hf_elrs_v3.0.0.bin",
"filePath": "https://oss.corewing.com/sirius_firmware/sirius_hf_elrs_v3.0.0.bin",
"fileSize": 1024000,
"md5Hash": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"releaseNotes": null,
"createTime": "2026-03-01 08:00:00",
"updateTime": "2026-03-01 08:00:00"
}
],
"success": true
}
```
---
## 4. 查询所有固件
**接口描述:** 查询所有固件记录。
**请求方式:** `GET`
**请求路径:** `/sirius_firmware/list`
**请求示例:**
```bash
curl -X GET "http://your-server-host:8080/sirius_firmware/list"
```
**成功响应示例:**
```json
{
"code": 200,
"message": "操作成功",
"data": [
{
"id": 1,
"firmwareType": 1,
"protocolType": 1,
"versionNumber": "v3.0.1",
"fileName": "sirius_hf_elrs_v3.0.1.bin",
"filePath": "https://oss.corewing.com/sirius_firmware/sirius_hf_elrs_v3.0.1.bin",
"fileSize": 1048576,
"md5Hash": "d41d8cd98f00b204e9800998ecf8427e",
"releaseNotes": "优化信号连接稳定性",
"createTime": "2026-03-10 10:30:00",
"updateTime": "2026-03-10 10:30:00"
}
],
"success": true
}
```
---
## 5. 根据ID查询固件
**接口描述:** 根据固件ID查询详情。
**请求方式:** `GET`
**请求路径:** `/sirius_firmware/{id}`
**路径参数:**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| id | Integer | 是 | 固件ID |
**请求示例:**
```bash
curl -X GET "http://your-server-host:8080/sirius_firmware/1"
```
**成功响应示例:**
```json
{
"code": 200,
"message": "操作成功",
"data": {
"id": 1,
"firmwareType": 1,
"protocolType": 1,
"versionNumber": "v3.0.1",
"fileName": "sirius_hf_elrs_v3.0.1.bin",
"filePath": "https://oss.corewing.com/sirius_firmware/sirius_hf_elrs_v3.0.1.bin",
"fileSize": 1048576,
"md5Hash": "d41d8cd98f00b204e9800998ecf8427e",
"releaseNotes": "优化信号连接稳定性",
"createTime": "2026-03-10 10:30:00",
"updateTime": "2026-03-10 10:30:00"
},
"success": true
}
```
**失败响应示例:**
```json
{
"code": 500,
"message": "固件不存在",
"data": null,
"success": false
}
```
---
## 接口总览
| 方法 | 路径 | 说明 | 使用场景 |
|------|------|------|----------|
| GET | `/sirius_firmware/latest?firmwareType=&protocolType=` | 查询最新版本 | 设备端检查更新 |
| GET | `/sirius_firmware/type/{firmwareType}` | 按固件类型查版本列表 | 查看某类固件所有版本 |
| GET | `/sirius_firmware/type/{firmwareType}/protocol/{protocolType}` | 按类型+协议查版本列表 | 精确筛选版本列表 |
| GET | `/sirius_firmware/list` | 查询所有固件 | 管理端展示全部数据 |
| GET | `/sirius_firmware/{id}` | 按ID查询固件 | 查看固件详情 |
---

View File

@@ -42,6 +42,8 @@ public class SaTokenConfig implements WebMvcConfigurer {
.excludePathPatterns("/firmware/**") .excludePathPatterns("/firmware/**")
// 排除AAT固件版本接口 // 排除AAT固件版本接口
.excludePathPatterns("/aat_version/**") .excludePathPatterns("/aat_version/**")
// 排除Sirius固件接口
.excludePathPatterns("/sirius_firmware/**")
// 排除公共固件 // 排除公共固件
.excludePathPatterns("/public_firmware/**") .excludePathPatterns("/public_firmware/**")
// 排除系统登录页(不需要登录) // 排除系统登录页(不需要登录)

View File

@@ -0,0 +1,79 @@
package com.corewing.app.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* Sirius固件信息实体类
*/
@Data
@TableName("app_sirius_firmware")
public class SiriusFirmware implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 固件类型1-高频头2-接收机3-背包
*/
private Integer firmwareType;
/**
* 协议类型1-ELRS2-CWLink
*/
private Integer protocolType;
/**
* 版本号v3.0.1
*/
private String versionNumber;
/**
* 文件名
*/
private String fileName;
/**
* 文件存储路径
*/
private String filePath;
/**
* 文件大小(字节)
*/
private Long fileSize;
/**
* MD5校验值
*/
private String md5Hash;
/**
* 版本更新说明
*/
private String releaseNotes;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
}

View File

@@ -0,0 +1,13 @@
package com.corewing.app.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.corewing.app.entity.SiriusFirmware;
import org.apache.ibatis.annotations.Mapper;
/**
* Sirius固件信息 Mapper 接口
*/
@Mapper
public interface SiriusFirmwareMapper extends BaseMapper<SiriusFirmware> {
}

View File

@@ -0,0 +1,97 @@
package com.corewing.app.modules.app;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.corewing.app.common.Result;
import com.corewing.app.common.annotation.CommonLog;
import com.corewing.app.entity.SiriusFirmware;
import com.corewing.app.service.SiriusFirmwareService;
import com.corewing.app.util.I18nUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* Sirius固件信息 Controller
*/
@Api(tags = "Sirius固件信息接口")
@RestController
@RequestMapping("/sirius_firmware")
public class AppSiriusFirmwareController {
private final SiriusFirmwareService siriusFirmwareService;
public AppSiriusFirmwareController(SiriusFirmwareService siriusFirmwareService) {
this.siriusFirmwareService = siriusFirmwareService;
}
/**
* 根据固件类型和协议类型查询最新版本
*/
@CommonLog("查询Sirius最新固件版本")
@ApiOperation("根据固件类型和协议类型查询最新版本")
@GetMapping("/latest")
public Result<SiriusFirmware> getLatest(
@RequestParam Integer firmwareType,
@RequestParam Integer protocolType) {
SiriusFirmware firmware = siriusFirmwareService.getLatestByTypeAndProtocol(firmwareType, protocolType);
if (firmware != null) {
return Result.success(firmware);
}
return Result.error(I18nUtil.getMessage("firmware.not.found"));
}
/**
* 根据固件类型查询版本列表
*/
@CommonLog("根据类型查询Sirius固件版本列表")
@ApiOperation("根据固件类型查询版本列表")
@GetMapping("/type/{firmwareType}")
public Result<List<SiriusFirmware>> listByType(@PathVariable Integer firmwareType) {
QueryWrapper<SiriusFirmware> wrapper = new QueryWrapper<>();
wrapper.eq("firmware_type", firmwareType);
wrapper.orderByDesc("create_time");
return Result.success(siriusFirmwareService.list(wrapper));
}
/**
* 根据固件类型和协议类型查询版本列表
*/
@CommonLog("根据类型和协议查询Sirius固件版本列表")
@ApiOperation("根据固件类型和协议类型查询版本列表")
@GetMapping("/type/{firmwareType}/protocol/{protocolType}")
public Result<List<SiriusFirmware>> listByTypeAndProtocol(
@PathVariable Integer firmwareType,
@PathVariable Integer protocolType) {
QueryWrapper<SiriusFirmware> wrapper = new QueryWrapper<>();
wrapper.eq("firmware_type", firmwareType);
wrapper.eq("protocol_type", protocolType);
wrapper.orderByDesc("create_time");
return Result.success(siriusFirmwareService.list(wrapper));
}
/**
* 查询所有固件
*/
@CommonLog("查询所有Sirius固件")
@ApiOperation("查询所有固件")
@GetMapping("/list")
public Result<List<SiriusFirmware>> list() {
return Result.success(siriusFirmwareService.list());
}
/**
* 根据ID查询固件
*/
@CommonLog("根据ID查询Sirius固件")
@ApiOperation("根据ID查询固件")
@GetMapping("/{id}")
public Result<SiriusFirmware> getById(@PathVariable Integer id) {
SiriusFirmware firmware = siriusFirmwareService.getById(id);
if (firmware != null) {
return Result.success(firmware);
}
return Result.error(I18nUtil.getMessage("firmware.not.found"));
}
}

View File

@@ -0,0 +1,19 @@
package com.corewing.app.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.corewing.app.entity.SiriusFirmware;
/**
* Sirius固件信息 Service 接口
*/
public interface SiriusFirmwareService extends IService<SiriusFirmware> {
/**
* 根据固件类型和协议类型查询最新版本
*
* @param firmwareType 固件类型
* @param protocolType 协议类型
* @return 最新固件版本
*/
SiriusFirmware getLatestByTypeAndProtocol(Integer firmwareType, Integer protocolType);
}

View File

@@ -0,0 +1,25 @@
package com.corewing.app.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.corewing.app.entity.SiriusFirmware;
import com.corewing.app.mapper.SiriusFirmwareMapper;
import com.corewing.app.service.SiriusFirmwareService;
import org.springframework.stereotype.Service;
/**
* Sirius固件信息 Service 实现类
*/
@Service
public class SiriusFirmwareServiceImpl extends ServiceImpl<SiriusFirmwareMapper, SiriusFirmware> implements SiriusFirmwareService {
@Override
public SiriusFirmware getLatestByTypeAndProtocol(Integer firmwareType, Integer protocolType) {
LambdaQueryWrapper<SiriusFirmware> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SiriusFirmware::getFirmwareType, firmwareType);
wrapper.eq(SiriusFirmware::getProtocolType, protocolType);
wrapper.orderByDesc(SiriusFirmware::getCreateTime);
wrapper.last("LIMIT 1");
return getOne(wrapper);
}
}