feat(ota): 新增OTA远程升级功能

- 创建OTA版本管理表结构,支持版本名称、构建号、APK文件等信息存储
- 实现后台OTA版本管理界面,包含新增、编辑、删除和发布功能
- 开发API接口用于设备版本检查和更新包下载
- 实现版本发布逻辑,自动归档旧版本并计算APK文件哈希值
- 添加强制更新、目标设备白名单和最低版本限制功能
- 集成文件上传和选择组件,支持APK文件管理
- 实现版本状态管理(草稿、已发布、已归档)和权限控制
This commit is contained in:
2026-04-09 17:51:34 +08:00
parent ab27bb6bf6
commit 1e22f5b452
11 changed files with 731 additions and 0 deletions

22
sql/ota_version.sql Normal file
View File

@@ -0,0 +1,22 @@
-- OTA 版本管理表
-- 用于芬太尼智能药品管理柜的 OTA 远程升级功能
CREATE TABLE IF NOT EXISTS `ota_version` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`version_name` VARCHAR(20) NOT NULL COMMENT '版本名称,如 1.1.0',
`version_code` INT(11) UNSIGNED NOT NULL COMMENT '版本号(构建号),用于比较',
`apk_file` VARCHAR(255) NOT NULL COMMENT 'APK 文件路径(相对于 upload 目录)',
`file_size` BIGINT(20) UNSIGNED DEFAULT NULL COMMENT '文件大小(字节)',
`sha256` CHAR(64) DEFAULT NULL COMMENT 'APK 文件 SHA-256 哈希值',
`update_log` TEXT NOT NULL COMMENT '更新日志',
`is_force_update` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT '是否强制更新0=否1=是',
`status` ENUM('draft','published','archived') NOT NULL DEFAULT 'draft' COMMENT '状态:草稿/已发布/已归档',
`target_devices` TEXT DEFAULT NULL COMMENT '目标设备 IMEI逗号分隔NULL=所有设备',
`min_version` VARCHAR(20) DEFAULT NULL COMMENT '最低可升级版本NULL=不限制',
`creator_id` INT(11) UNSIGNED DEFAULT NULL COMMENT '创建人ID',
`createtime` INT(10) UNSIGNED DEFAULT NULL COMMENT '创建时间',
`updatetime` INT(10) UNSIGNED DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_version_code` (`version_code`),
KEY `idx_status_version` (`status`, `version_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='OTA 版本管理表';