任务与OTA API
引用文件
本文引用的文件
- README.md
- docs/task/uota.md
- docs/file/index.md
- yudao-module-task/yudao-module-task-api/src/main/java/cn/iocoder/yudao/module/task/enums/ExportTaskStatus.java
- yudao-module-task/yudao-module-task-api/src/main/java/cn/iocoder/yudao/module/task/enums/ExportTaskType.java
- yudao-module-task/yudao-module-task-api/src/main/java/cn/iocoder/yudao/module/task/enums/ApiConstants.java
- yudao-module-task/yudao-module-task-api/src/main/java/cn/iocoder/yudao/module/task/api/security/AppSdkSecurityKeyApi.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/api/AppSdkSecurityKeyApiImpl.java
- yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/util/AppSdkSecurityKeyUtils.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/admin/export/BaseExportTaskController.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/uotadetail/AppUotaDetailController.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/domain/netty/enums/TcpMessageTypeEnum.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/domain/netty/vo/TcpMessageVO.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/domain/netty/handler/UotaTcpServerHandler.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/domain/netty/server/UotaTcpServer.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/domain/netty/server/UotaTcpServerInitializer.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/domain/netty/config/UotaTcpServerProperties.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/domain/vo/DomainListReqVO.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/domain/vo/DomainVO.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/admin/domain/DomainController.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/admin/secretkey/vo/TaskSecretKeyPageReqVO.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/admin/secretkey/vo/TaskSecretKeySaveReqVO.java
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileController.java
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileConfigController.java
目录
简介
本文件面向任务与OTA API的使用者与维护者,系统性梳理导出任务接口、文件管理接口、安全密钥接口、UOTA升级接口等核心能力。重点覆盖:
- 导出任务的状态与类型定义
- 文件上传下载与分片上传流程
- 安全密钥的获取与缓存机制
- TCP通信协议与UOTA升级流程
- 任务调度示例、文件处理流程与安全配置指南
项目结构
围绕任务与OTA相关的核心模块与文件如下:
- 任务模块API与业务实现 :yudao-module-task-api、yudao-module-task-biz
- 安全框架与工具:yudao-framework(含安全工具类)
- 基础设施文件管理:yudao-module-infra(文件与文件配置控制器)
图表来源
- yudao-module-task/yudao-module-task-api/src/main/java/cn/iocoder/yudao/module/task/api/security/AppSdkSecurityKeyApi.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/api/AppSdkSecurityKeyApiImpl.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/admin/export/BaseExportTaskController.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/uotadetail/AppUotaDetailController.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/domain/netty/server/UotaTcpServer.java
- yudao-module-task/yudao-module-task-api/src/main/java/cn/iocoder/yudao/module/task/enums/ExportTaskStatus.java
- yudao-module-task/yudao-module-task-api/src/main/java/cn/iocoder/yudao/module/task/enums/ExportTaskType.java
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileController.java
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileConfigController.java
章节来源
核心组件
- 导出任务接口与状态/类型
- 导出任务状态:启动、手动终止、完成、失败、排队等待中
- 导出任务类型:APP运行记录、黑名单MAC配置/结果、Launcher广告位配置/结果、APP活跃设备清单、APP安装列表(包名/设备)等
- 文件管理接口
- 文件上传、分片上传、文件列表、文件配置、下载
- 安全密钥接口
- 通过RPC接口按key与类型获取密钥,内部结合本地缓存与远端拉取
- UOTA升级接口
- HTTP接口:应用层检测更新
- TCP接口:设备侧长连接,时间戳同步、请求响应、加密传输、密钥动态获取
章节来源
- yudao-module-task/yudao-module-task-api/src/main/java/cn/iocoder/yudao/module/task/enums/ExportTaskStatus.java
- yudao-module-task/yudao-module-task-api/src/main/java/cn/iocoder/yudao/module/task/enums/ExportTaskType.java
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileController.java
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileConfigController.java
- yudao-module-task/yudao-module-task-api/src/main/java/cn/iocoder/yudao/module/task/api/security/AppSdkSecurityKeyApi.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/api/AppSdkSecurityKeyApiImpl.java
- yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/util/AppSdkSecurityKeyUtils.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/uotadetail/AppUotaDetailController.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/domain/netty/server/UotaTcpServer.java
架构总览
整体架构由“HTTP/Web接口层”、“TCP长连接服务层”、“导出任务与文件管理服务层”、“安全密钥服务层”组成。
图表来源
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/uotadetail/AppUotaDetailController.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/domain/netty/server/UotaTcpServer.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/api/AppSdkSecurityKeyApiImpl.java
- yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/util/AppSdkSecurityKeyUtils.java
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileController.java
详细组件分析
导出任务接口
- 接口职责
- 提供导出任务的分页查询、保存、导出触发与结果下载
- 支持多种导出类型(如APP运行记录、黑名单、Launcher广告等)
- 导出任务状态包括:启动、手动终止、完成、失败、排队等待中
- 关键枚举
- 导出任务状态:ExportTaskStatus
- 导出任务类型:ExportTaskType
- 控制器
- BaseExportTaskController 提供通用的分页、保存、导出等REST接口
图表来源
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/admin/export/BaseExportTaskController.java
- yudao-module-task/yudao-module-task-api/src/main/java/cn/iocoder/yudao/module/task/enums/ExportTaskStatus.java
- yudao-module-task/yudao-module-task-api/src/main/java/cn/iocoder/yudao/module/task/enums/ExportTaskType.java
章节来源
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/admin/export/BaseExportTaskController.java
- yudao-module-task/yudao-module-task-api/src/main/java/cn/iocoder/yudao/module/task/enums/ExportTaskStatus.java
- yudao-module-task/yudao-module-task-api/src/main/java/cn/iocoder/yudao/module/task/enums/ExportTaskType.java
文件管理接口
- 接口职责
- 文件上传、分片上传、断点续传、秒传、上传进度追踪
- 文件列表查询、文件分类管理、文件配置管理
- 下载与删除
- 关联模块
- 与任务管理、UOTA信息管理、Launcher管理、域名分发等模块关联
图表来源
- docs/file/index.md
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileController.java
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileConfigController.java
章节来源
- docs/file/index.md
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileController.java
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileConfigController.java
安全密钥接口
- 接口职责
- 通过RPC按key与类型获取密钥,内部结合本地缓存与远端拉取
- 实现要点
- 使用定时缓存与分布式锁,避免频繁远端调用
- 返回时解密密钥值,确保不直接暴露敏感值
图表来源
- yudao-module-task/yudao-module-task-api/src/main/java/cn/iocoder/yudao/module/task/api/security/AppSdkSecurityKeyApi.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/api/AppSdkSecurityKeyApiImpl.java
- yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/util/AppSdkSecurityKeyUtils.java
章节来源
- yudao-module-task/yudao-module-task-api/src/main/java/cn/iocoder/yudao/module/task/api/security/AppSdkSecurityKeyApi.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/api/AppSdkSecurityKeyApiImpl.java
- yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/util/AppSdkSecurityKeyUtils.java
UOTA升级接口
- HTTP接口
- 接口地址:/task/checkAppVersionIsUpdate
- 权限:无需登录
- 功能:接收客户端请求,调用Service层逻辑判断是否有新版本,并返回结果
- TCP接口
- 服务器组件:UotaTcpServer、UotaTcpServerInitializer、UotaTcpServerHandler
- 消息类型:时间戳响应、UOTA信息请求、UOTA信息响应、错误响应
- 加密与安全:AES-256-CBC(PKCS5Padding)、Base64编码、IV拼接于密文前;按请求头sdkVersion动态获取密钥;时间戳校验(默认5分钟窗口)
图表来源
- README.md
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/domain/netty/enums/TcpMessageTypeEnum.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/domain/netty/vo/TcpMessageVO.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/domain/netty/handler/UotaTcpServerHandler.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/domain/netty/server/UotaTcpServer.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/domain/netty/server/UotaTcpServerInitializer.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/domain/netty/config/UotaTcpServerProperties.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/uotadetail/AppUotaDetailController.java
章节来源
任务调度与域名分发
- 域名分发接口
- App侧请求:DomainListReqVO(platform/mac/cpu)
- 返回:DomainVO(包含域名列表与逗号分隔字符串)
- 管理端:DomainController 提供域名的增删改查与设备数量统计
- 与规则引擎集成
- 通过规则引擎匹配设备业务ID,支持灰度发布、地区限制、渠道白名单等策略
图表来源
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/domain/vo/DomainListReqVO.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/domain/vo/DomainVO.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/admin/domain/DomainController.java
章节来源
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/domain/vo/DomainListReqVO.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/domain/vo/DomainVO.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/admin/domain/DomainController.java
依赖分析
- 组件耦合
- AppSdkSecurityKeyApi 与 AppSdkSecurityKeyApiImpl 通过Feign RPC交互
- AppSdkSecurityKeyUtils 作为缓存与远端拉取的协调者
- UotaTcpServerHandler 依赖密 钥服务与业务服务进行解密与查询
- 外部依赖
- Netty TCP框架、Redis缓存、对象存储(文件管理)
- 规则引擎(设备规则匹配)
图表来源
- yudao-module-task/yudao-module-task-api/src/main/java/cn/iocoder/yudao/module/task/api/security/AppSdkSecurityKeyApi.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/api/AppSdkSecurityKeyApiImpl.java
- yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/util/AppSdkSecurityKeyUtils.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/domain/netty/handler/UotaTcpServerHandler.java
章节来源
- yudao-module-task/yudao-module-task-api/src/main/java/cn/iocoder/yudao/module/task/api/security/AppSdkSecurityKeyApi.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/api/AppSdkSecurityKeyApiImpl.java
- yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/util/AppSdkSecurityKeyUtils.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/domain/netty/handler/UotaTcpServerHandler.java
性能考虑
- 导出任务
- 大数据量采用异步导出与排队机制,降低阻塞风险
- 状态枚举便于前端轮询与可视化展示
- 文件管理
- 分片上传与断点续传提升成功率与稳定性
- 缓存与索引优化下载与检索性能
- 安全密钥
- 本地定时缓存减少RPC调用频率
- 解密在服务端完成,避免敏感值泄露
- TCP升级
- Netty高并发长连接,合理设置空闲检测与超时
- 加密与时间戳校验兼顾安全性与性能
故障排查指南
- 导出任务
- 若导出失败,检查任务状态是否为失败并查看日志
- 确认导出类型与数据范围是否正确
- 文件管理
- 分片上传失败时,优先检查网络与存储权限
- 合并阶段失败多因分片缺失或顺序错乱
- 安全密钥
- 密钥不存在或解密失败时,确认key与type是否匹配
- 检查缓存是否过期或远端服务是否可用
- TCP升级
- 设备无法获取升级信息时,检查时间戳差异是否超过阈值
- 确认加密算法、IV与Base64编码是否符合约定
- 校验sdkVersion对应的密钥是否存在
章节来源
- yudao-module-task/yudao-module-task-api/src/main/java/cn/iocoder/yudao/module/task/enums/ExportTaskStatus.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/api/AppSdkSecurityKeyApiImpl.java
- README.md
结论
本文档系统化梳理了任务与OTA API的关键能力:导出任务的状态与类型、文件管理的上传下载与分片策略、安全密钥的获取与缓存机制、以及UOTA升级的HTTP与TCP接口规范。通过清晰的架构图与时序图,帮助读者快速理解各组件职责与交互关系,并提供实用的故障排查建议与性能优化方向。
附录
- 配置项参考
- TCP服务器配置:enabled、port
- 关键接口一览
- 导出任务:BaseExportTaskController
- 文件管理:FileController、FileConfigController
- 安全密钥:AppSdkSecurityKeyApi、AppSdkSecurityKeyApiImpl、AppSdkSecurityKeyUtils
- UOTA升级:AppUotaDetailController、UotaTcpServer、UotaTcpServerHandler
章节来源
- README.md
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/admin/export/BaseExportTaskController.java
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileController.java
- yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileConfigController.java
- yudao-module-task/yudao-module-task-api/src/main/java/cn/iocoder/yudao/module/task/api/security/AppSdkSecurityKeyApi.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/api/AppSdkSecurityKeyApiImpl.java
- yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/util/AppSdkSecurityKeyUtils.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/uotadetail/AppUotaDetailController.java
- yudao-module-task/yudao-module-task-biz/src/main/java/cn/iocoder/yudao/module/task/controller/app/domain/netty/server/UotaTcpServer.java