diff --git a/docs/API接口说明-Sirius固件版本管理.md b/docs/API接口说明-Sirius固件版本管理.md new file mode 100644 index 0000000..ea69d86 --- /dev/null +++ b/docs/API接口说明-Sirius固件版本管理.md @@ -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-ELRS,2-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-ELRS,2-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-ELRS,2-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查询固件 | 查看固件详情 | + +--- \ No newline at end of file diff --git a/src/main/java/com/corewing/app/config/SaTokenConfig.java b/src/main/java/com/corewing/app/config/SaTokenConfig.java index fe01de1..81033a1 100644 --- a/src/main/java/com/corewing/app/config/SaTokenConfig.java +++ b/src/main/java/com/corewing/app/config/SaTokenConfig.java @@ -42,6 +42,8 @@ public class SaTokenConfig implements WebMvcConfigurer { .excludePathPatterns("/firmware/**") // 排除AAT固件版本接口 .excludePathPatterns("/aat_version/**") + // 排除Sirius固件接口 + .excludePathPatterns("/sirius_firmware/**") // 排除公共固件 .excludePathPatterns("/public_firmware/**") // 排除系统登录页(不需要登录) diff --git a/src/main/java/com/corewing/app/entity/SiriusFirmware.java b/src/main/java/com/corewing/app/entity/SiriusFirmware.java new file mode 100644 index 0000000..1e29b1e --- /dev/null +++ b/src/main/java/com/corewing/app/entity/SiriusFirmware.java @@ -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-ELRS,2-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; +} diff --git a/src/main/java/com/corewing/app/mapper/SiriusFirmwareMapper.java b/src/main/java/com/corewing/app/mapper/SiriusFirmwareMapper.java new file mode 100644 index 0000000..be9b62f --- /dev/null +++ b/src/main/java/com/corewing/app/mapper/SiriusFirmwareMapper.java @@ -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 { + +} diff --git a/src/main/java/com/corewing/app/modules/app/AppSiriusFirmwareController.java b/src/main/java/com/corewing/app/modules/app/AppSiriusFirmwareController.java new file mode 100644 index 0000000..b6a3bdd --- /dev/null +++ b/src/main/java/com/corewing/app/modules/app/AppSiriusFirmwareController.java @@ -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 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> listByType(@PathVariable Integer firmwareType) { + QueryWrapper 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> listByTypeAndProtocol( + @PathVariable Integer firmwareType, + @PathVariable Integer protocolType) { + QueryWrapper 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() { + return Result.success(siriusFirmwareService.list()); + } + + /** + * 根据ID查询固件 + */ + @CommonLog("根据ID查询Sirius固件") + @ApiOperation("根据ID查询固件") + @GetMapping("/{id}") + public Result getById(@PathVariable Integer id) { + SiriusFirmware firmware = siriusFirmwareService.getById(id); + if (firmware != null) { + return Result.success(firmware); + } + return Result.error(I18nUtil.getMessage("firmware.not.found")); + } +} diff --git a/src/main/java/com/corewing/app/service/SiriusFirmwareService.java b/src/main/java/com/corewing/app/service/SiriusFirmwareService.java new file mode 100644 index 0000000..2551994 --- /dev/null +++ b/src/main/java/com/corewing/app/service/SiriusFirmwareService.java @@ -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 { + + /** + * 根据固件类型和协议类型查询最新版本 + * + * @param firmwareType 固件类型 + * @param protocolType 协议类型 + * @return 最新固件版本 + */ + SiriusFirmware getLatestByTypeAndProtocol(Integer firmwareType, Integer protocolType); +} diff --git a/src/main/java/com/corewing/app/service/impl/SiriusFirmwareServiceImpl.java b/src/main/java/com/corewing/app/service/impl/SiriusFirmwareServiceImpl.java new file mode 100644 index 0000000..7c5d469 --- /dev/null +++ b/src/main/java/com/corewing/app/service/impl/SiriusFirmwareServiceImpl.java @@ -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 implements SiriusFirmwareService { + + @Override + public SiriusFirmware getLatestByTypeAndProtocol(Integer firmwareType, Integer protocolType) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SiriusFirmware::getFirmwareType, firmwareType); + wrapper.eq(SiriusFirmware::getProtocolType, protocolType); + wrapper.orderByDesc(SiriusFirmware::getCreateTime); + wrapper.last("LIMIT 1"); + return getOne(wrapper); + } +}