跳到主要内容

广告资源下载安装执行明细

核心概念:桌面管理 | 广告资源下载安装执行明细 | 概览

本模块用于记录 Launcher 终端设备在执行广告位配置资源时的具体操作结果。

通过该功能,管理员可以监控设备是否成功下载了图片/视频资源,应用是否安装成功,或者应用是否已存在,从而排查广告投放过程中的资源下发与执行问题。

功能说明

入口

资源绑定配置 列表中,当某条配置的 回调记录条数 大于 0 时,点击该数字即可进入本页面。

列表查询

界面展示了所有设备上报的执行记录流水。

列表查询

字段说明

  • adResourceId:广告位资源 ID,对应资源绑定配置中的记录 ID。
  • 类型:执行结果类型。
    • 图片下载完成 (Type: 0)
    • 视频下载完成 (Type: 1)
    • app安装完成 (Type: 2)
    • app已存在(无需安装) (Type: 3)
  • MAC:设备 MAC 地址。
  • CPU:设备 CPU 序列号。
  • 设备时间:设备上报时的本地时间。
  • 执行完成时间:操作实际完成的时间(通常与设备时间一致,若设备未上报则使用服务器接收时间)。
  • 创建时间:记录入库时间。

核心概念:桌面管理 | 广告资源下载安装执行明细 | 技术实现与数据流

技术实现与数据流

本章节详细阐述了广告位执行记录的采集、传输与存储逻辑。

1. 数据采集 (Data Collection)

终端设备在完成资源下载或应用安装检测后,通过 HTTP 接口上报执行结果,由 ForeignLauncherController 进行处理:

  • 上报接口/launcher/ad/cb
  • 处理逻辑
    1. 接收数据:接收 LauncherExecRecordsVO 对象,包含设备标识 (MAC/CPU) 和一组执行记录 (List<LauncherExecRecordVO>)。
    2. 时间校准
      • 尝试从请求体或 Header (d-time) 中获取设备时间 (dTime)。
      • 校验设备时间与服务器时间的偏差。若偏差在 1 分钟内,记录的 ts (执行时间) 优先使用设备时间;否则使用服务器当前时间。
    3. 消息投递:将处理后的完整数据封装为 JSON,通过 KafkaTemplate 发送至 Kafka Topic。
  • Kafka Topiclauncher-exec-record (配置常量 LauncherConstants.KAFKA_TOPIC_LAUNCHER_EXEC_RECORD)

2. 消息处理 (Message Processing)

LauncherExecRecordConsumer 负责消费 Kafka 中的执行记录数据并持久化:

  • 消费者监听:监听 launcher-exec-record Topic。
  • 处理逻辑
    1. 反序列化:将 JSON 消息解析为 LauncherExecRecordsVO 实体。
    2. 数据入库:遍历记录列表,将每条记录映射为 LauncherExecRecordDO 并插入数据库。
  • 存储表launcher_exec_record

3. 架构图解

数据流向图

下图展示了从设备上报到最终数据落库的完整流程:

Mermaid Diagram Code:

graph TD
    Device["终端设备"] -- "HTTP POST /launcher/ad/cb" --> API["ForeignLauncherController"]
    API -- "Process & Time Calibration" --> API
    API -- "Produce" --> Kafka{{"Kafka Topic<br/>launcher-exec-record"}}
    
    Kafka -- "Consume" --> Consumer["LauncherExecRecordConsumer"]
    
    Consumer -- "Insert" --> DB[("MySQL<br/>launcher_exec_record")]
    
    Admin["管理后台"] -- "Query" --> DB

    style Kafka fill:#f9f,stroke:#333,stroke-width:2px
    style DB fill:#6db,stroke:#333,stroke-width:2px

数据模型关系图

下图展示了执行记录的数据结构:

Mermaid Diagram Code:

classDiagram
    class LauncherExecRecordDO {
        +Long id
        +String mac "设备MAC"
        +String cpu "设备CPU"
        +Long adResourceId "资源ID"
        +Integer type "执行类型"
        +LocalDateTime ts "执行完成时间"
        +LocalDateTime dTime "设备上报时间"
        +LocalDateTime createTime "入库时间"
    }
    
    note for LauncherExecRecordDO "类型(type)枚举:<br/>0: 图片下载完成<br/>1: 视频下载完成<br/>2: app安装完成<br/>3: app已存在"
AI 问答