跳到主要内容

UOTA详情表结构

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖分析
  7. 性能考虑
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件聚焦于UOTA详情表(task_uota_detail)的结构设计与使用规范,围绕以下目标展开:

  • 明确UOTA详情表的核心字段及其语义,包括固件版本号、固件URL、MD5校验值、固件大小、发布状态、发布时间等。
  • 解释UOTA升级流程中的关键数据字段含义,如升级条件、兼容性检查、升级包验证机制。
  • 给出字段约束说明,包括唯一性约束、非空约束、格式验证等。
  • 说明UOTA详情表与任务/规则引擎等模块的关联关系与数据一致性保障机制。
  • 提供典型数据示例与升级流程中的数据变化说明。

项目结构

与UOTA详情表直接相关的后端模块位于任务模块(task module),主要由以下层次构成:

  • 控制层:对外暴露REST API,负责参数接收与响应封装。
  • 服务层:实现业务逻辑,包括创建、更新、查询、校验等。
  • 数据访问层:MyBatis Mapper,负责持久化操作。
  • 数据对象层:DO/VO,映射数据库表结构与前端展示需求。
  • 文档与协议:升级流程、TCP协议说明、规则引擎集成等。

Mermaid Diagram Code:

graph TB
subgraph "控制层"
Ctl["UotaDetailController<br/>REST接口"]
end
subgraph "服务层"
SvcI["UotaDetailService<br/>接口"]
SvcImpl["UotaDetailServiceImpl<br/>实现"]
end
subgraph "数据访问层"
Mapper["UotaDetailMapper<br/>MyBatis映射"]
end
subgraph "数据对象层"
DO["UotaDetailDO<br/>数据库实体"]
SaveVO["UotaDetailSaveReqVO<br/>保存请求VO"]
RespVO["UotaDetailRespVO<br/>响应VO"]
end
subgraph "文档与协议"
Doc["uota.md<br/>升级流程与字段说明"]
NetDoc["Netty协议说明<br/>UOTA TCP协议"]
end
Ctl --> SvcI
SvcI --> SvcImpl
SvcImpl --> Mapper
Mapper --> DO
Ctl --> SaveVO
Ctl --> RespVO
SvcImpl --> Doc
SvcImpl --> NetDoc

图表来源

章节来源

核心组件

  • UotaDetailDO:数据库实体,映射task_uota_detail表,承载升级包元数据与状态。
  • UotaDetailController:管理后台接口,提供创建、更新、删除、分页查询等能力。
  • UotaDetailService/Impl:业务服务,封装校验、落库、变更记录等逻辑。
  • UotaDetailMapper:MyBatis映射,提供基础CRUD与条件查询。
  • VO类:UotaDetailSaveReqVO、UotaDetailRespVO,用于接口入参与出参的结构化传输。

章节来源

架构总览

UOTA详情表作为升级包元数据的权威来源,与以下模块协同工作:

  • 规则引擎:用于灰度、地区、渠道等多维条件匹配,决定设备是否可升级。
  • 文件管理:通过文件ID关联实际的升级包文件,提供下载地址。
  • TCP协议服务:在设备侧发起升级请求,服务端返回升级包信息(URL、MD5、大小等)。
  • 任务调度/导出:支持批量导出与异步任务管理。

Mermaid Diagram Code:

graph TB
Dev["设备/机顶盒"]
TCP["UOTA TCP服务<br/>UotaTcpServerHandler"]
Biz["UOTA业务服务<br/>UotaDetailServiceImpl"]
Rule["规则引擎<br/>RuleRunUtil"]
Mapper["UotaDetailMapper"]
DO["UotaDetailDO"]
File["文件管理<br/>infra_file"]
DB["数据库"]
Dev --> TCP
TCP --> Biz
Biz --> Mapper
Mapper --> DO
DO --> File
Biz --> Rule
Biz --> DB

图表来源

详细组件分析

数据模型与字段定义

UotaDetailDO映射task_uota_detail表,核心字段如下(按出现顺序整理):

  • id:主键
  • name:UOTA名称
  • infraFileId:关联文件资源ID(指向文件管理)
  • packageName:应用包名
  • versionCode:版本号(整数)
  • versionName:版本名称(字符串)
  • developer:开发者
  • describeInfo:描述
  • remark:备注
  • isAutoStart:是否自动启动(布尔)
  • isSystemApp:是否系统应用(布尔)
  • installPath:系统应用安装路径(系统应用必填)
  • valid:是否有效(布尔,草稿以外生效)
  • status:状态(整型,枚举值)
  • createTime/updateTime/creator/updater:审计字段

字段约束与校验要点(基于VO与业务实现推断):

  • 非空约束:名称、包名、版本号、版本名称等在保存时通常要求非空。
  • 唯一性约束:包名+版本号在业务上常用于唯一标识同一升级包;具体索引以数据库为准。
  • 格式验证:版本号为整数;系统应用时安装路径必填;布尔字段取值0/1或true/false。
  • 审计字段:创建/更新时间与创建者/更新者字段由框架自动维护。

章节来源

升级流程与数据字段含义

升级流程的关键步骤与数据流转:

  1. 设备发起升级请求,携带当前版本号、平台、MAC等信息。
  2. 服务端根据平台与当前版本号,筛选出更高版本的UOTA包。
  3. 对每个候选包执行“规则匹配”与“渠道匹配”双重校验。
  4. 若命中任一条件,则加入候选集;最终选择最高版本返回。
  5. 返回给设备的升级包信息包含:下载URL、文件大小、MD5校验值、版本号等。

Mermaid Diagram Code:

sequenceDiagram
participant D as "设备"
participant H as "UotaTcpServerHandler"
participant S as "UotaDetailServiceImpl"
participant R as "规则引擎"
participant M as "UotaDetailMapper"
D->>H : "UOTA_INFO_REQUEST(含平台/版本/MAC)"
H->>S : "解析并调用业务处理"
S->>M : "查询更高版本的UOTA包"
loop "遍历候选包"
S->>R : "规则匹配(matchBusinessIds)"
R-->>S : "命中/未命中"
alt "任一条件命中"
S->>S : "加入可用升级列表"
end
end
S-->>H : "选择最高版本并组装响应"
H-->>D : "UOTA_INFO_RESPONSE(URL/MD5/Size/Version)"

图表来源

升级包验证机制

  • URL有效性:通过文件ID关联文件管理,确保下载地址有效且可访问。
  • MD5校验:设备端下载完成后进行MD5校验,确保完整性。
  • 大小校验:设备端可对比文件大小,避免下载不完整。
  • 时间戳与加密:请求中包含时间戳,防止重放攻击;生产环境使用动态密钥进行加解密。

章节来源

典型数据示例

  • UOTA详情记录(示意)
    • 名称:示例升级包
    • 包名:com.example.app
    • 版本号:100
    • 版本名称:1.0.0
    • 是否系统应用:是
    • 安装路径:/system/app/App.apk
    • 是否自动启动:是
    • 有效状态:有效
    • 关联文件ID:123456
  • 设备请求升级包(示意)
    • 平台:allwinner
    • 当前版本号:99
    • MAC:AA:BB:CC:DD:EE:FF
  • 服务端响应(示意)

章节来源

依赖分析

  • 控制层依赖服务层接口,通过权限注解与参数校验保证输入质量。
  • 服务层依赖Mapper与规则引擎,完成数据查询与策略匹配。
  • Mapper依赖DO与数据库,承担持久化职责。
  • DO与VO之间通过服务层转换,避免直接跨层耦合。

Mermaid Diagram Code:

classDiagram
class UotaDetailController
class UotaDetailService
class UotaDetailServiceImpl
class UotaDetailMapper
class UotaDetailDO
class UotaDetailSaveReqVO
class UotaDetailRespVO
UotaDetailController --> UotaDetailService : "依赖接口"
UotaDetailService <|-- UotaDetailServiceImpl : "实现"
UotaDetailServiceImpl --> UotaDetailMapper : "调用"
UotaDetailMapper --> UotaDetailDO : "映射"
UotaDetailController --> UotaDetailSaveReqVO : "入参"
UotaDetailController --> UotaDetailRespVO : "出参"

图表来源

性能考虑

  • 查询优化:针对“平台+当前版本号”的筛选,建议在数据库层面建立复合索引,减少全表扫描。
  • 规则匹配并行:在服务层对候选包的规则匹配与渠道匹配采用并行计算,缩短响应时间。
  • 缓存策略:对热点升级包信息可引入Redis缓存,降低数据库压力。
  • 大数据导出:列表导出采用异步任务,避免阻塞主线程。

章节来源

故障排查指南

  • 升级包未返回
    • 检查是否存在更高版本的UOTA包。
    • 核对规则引擎与渠道配置是否允许该设备命中。
  • 下载失败或校验失败
    • 确认文件ID有效且文件可访问。
    • 对比响应中的MD5与下载文件的实际MD5。
  • 时间戳/加密异常
    • 核对请求头中的sdkVersion与密钥配置。
    • 检查是否启用了时间戳校验与忽略标志。

章节来源

结论

UOTA详情表(task_uota_detail)是升级包元数据的权威来源,结合规则引擎与文件管理,实现了灵活的升级策略与可靠的下载校验。通过明确的字段约束、严格的升级流程与完善的验证机制,系统能够在多设备、多平台环境下稳定地完成远程升级。

附录

字段约束与校验清单(基于代码与文档推断)

  • 非空约束
    • 名称、包名、版本号、版本名称在保存时通常要求非空。
  • 唯一性约束
    • 包名+版本号在业务上常用于唯一标识升级包(具体索引以数据库为准)。
  • 格式约束
    • 版本号为整数;布尔字段取值0/1或true/false;系统应用时安装路径必填。
  • 审计字段
    • 创建/更新时间与创建者/更新者由框架自动维护。

章节来源

用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答