跳到主要内容

Launcher 源码映射与结构差异

下表列全当前 Launcher DO 的持久属性,以数据库列名表达;除明确说明的例外外,Java 使用对应 camelCase 名称。这样既可从业务说明理解用途,也能逐项核对代码是否与实库相符。类型、默认值、长度及索引详见物理字典。

MySQL 实体完整映射​

LauncherBaseInfoDO 和 LauncherIndexDO 继承 BaseDO,共同增加 creator, create_time, updater, update_time, deleted 五列;其余 MySQL DO 不继承该基类。以下显式字段加这组继承字段即为完整 Java 持久字段,不给普通 DO 自动补上租户或审计字段。

实体 / 表显式持久字段继承和特殊映射
LauncherBaseInfoDO / launcher_base_infoid, name, package_name, remarks, version_code, valid, bpm_status, process_instance_id, draft继承 BaseDO;draft 用 BpmDraftTypeHandler,实体开启 autoResultMap
LauncherIndexDO / launcher_indexid, base_info_id, index, version, enable, valid, remarks, group继承 BaseDO;index/group 显式加反引号映射
LauncherIndexAdvertDO / launcher_index_advertid, index_id, type, url, size, app_url, app_size, app_package_name, app_version_code, app_version_name, enable, app_id, resource_id, info, valid, remark, draft无继承审计字段;draft 用 BpmDraftTypeHandler,实体开启 autoResultMap
LauncherAdvertPushTaskDO / launcher_advert_push_taskid, advert_id, push_task_id无继承字段
LauncherIndexChanelDO / launcher_index_chanelid, index_id, chanel_id, valid无继承字段
LauncherIndexMacDO / launcher_index_macid, index_id, mac, valid无继承字段
LauncherIndexRegionDO / launcher_index_regionid, index_id, region_id, valid无继承字段
LauncherAdPlayCountDO / launcher_ad_play_countid, type, package_name, ad_index_id, play_count, play_duration, record_time, version_code, create_time, update_time, ad_play_type仅实现 Serializable;静态常量与 serialVersionUID 不落库;版本 getter 处理 -99999

上述 8 个实体对应 8 张实表,未发现源码指向但本次采集缺失的 MySQL 表或列。额外列和长度范围差异见下表,不由此推断数据错误或立即执行迁移。

TDengine 实体完整映射​

实体 / 数据源普通持久字段TAG 与特殊字段
LauncherExecRecordDO / tdLauncherExects, data_key, mac, cpu, d_time, create_timeTAG:ad_resource_id, type;tbname 为特殊表名字段,代码标为输入型 TableId,不能解释成物理业务主键列
LauncherAdPlayDetailDO / tdLauncherAdPlayDetailbegin_time, data_key, mac, cpu, end_time, play_duration, create_time, log_infoTAG:time_tag, package_name, version_code, ad_index_id, ad_play_type, partition_index;tbname 为特殊表名字段
LauncherAdPlayDeviceCountDO / 日、月、年三个数据源record_time, data_key, mac, cpu, play_duration, play_count, create_timeTAG:package_name, version_code, time_tag, ad_index_id, ad_play_type;tbname 为特殊表名字段

3 个 DO 均不继承 BaseDO,不应人为追加审计人、逻辑删除和租户列。源码未在这 11 个 DO 中发现 @TableField(exist=false) 属性;tbname 通过 TDengine 语义处理,而不是遗漏的普通列。getRecordTimeStr() 是计算方法,不是独立持久属性。所有普通列与 TAG 名均在对应实测超级表中找到。

差异、演进与兼容清单​

编号现状与源码对照对业务理解的影响 / 后续核实方向
L-01launcher_base_info、launcher_index 实库各有 tenant_id,DO 只继承 BaseDO实体未声明不代表租户拦截器不生效;以公共框架边界及实际租户配置理解,不建议直接删列
L-02launcher_index 实库还有 JSON draft,当前 DO 没有对应属性;主配置、素材仍映射草稿与广告位当前主要更新状态/备注的代码形态并存;只能确认本模块当前 DO 不映射该列,不能证明历史草稿可删除
L-03launcher_ad_play_count 实库有 creator, updater, deleted,DO 未声明;XML 明确插入/更新 deleted不能因 DO 未声明就认为 deleted 完全无使用;该 DO 也没有继承 TableLogic 字段,不能声称所有查询自动过滤 deleted
L-04launcher_index(base_info_id,index,group) 的唯一性由服务查询校验,实库没有对应唯一索引业务规则与物理约束保障强度不同;记录现状,不在本次自动建索引
L-05valid 的表/实体注释通常停在 0–3,共享枚举及素材代码已使用 4、5字典应解释启用/禁用待审批标记;这是注释滞后,不是数据越界证据
L-06Java 中 launcher_base_info.id 为 Long,实库为 int;素材 size/app_size/app_version_code 为 Long,实库为 int;TD 明细 ad_index_id 为 Long,实库 TAG 为 INT表达范围不一致;本次没有读取数据,不能判断已有截断或溢出,变更字段范围应另行评估上下游
L-07执行 DO 注释称子表按 MAC/CPU,实际 getter 为 ler_{adResourceId}_{type};Mapper 包名是 mysql,但 DS 是 TDengine以实际路由和 getter 描述存储,不能据旧注释创建一张 MySQL 执行表
L-08统计 DO 注释示例偏向完整日期,月/年作业分别写 yyyyMM、yyyy;明细已加入 partitionIndex 与分类兼容段分区、统计周期和分类是后续业务演进,需要从调用处解释,不能只读字段注释
L-09MySQL 统计版本用 -99999 空值兼容;TD 子表在默认分类时省略分类段保存既有兼容语义。历史名称、哨兵值不自动判为脏设计
L-10规则投放与旧渠道/MAC/地区分支同时存在,infra 系统配置优先于 Nacos 注入值此次确认可选路径,不确认线上启用状态;旧关系表未标为废弃
L-11实时广告分支统一设第三方分类并进行德国时区转换;另有直接写日统计的路径同一统计表的数据来源并非完全相同,解释统计差异时需先确认包名、分类和上报路径,不能强求明细与日统计逐行对应
L-12MySQL 汇总唯一键含可空 ad_play_type 和 version_code;批量 XML 只对版本做 COALESCE索引存在并不覆盖所有 NULL 语义下的业务去重;实际重复情况未扫描,不作数据质量结论
L-13素材 type 注释为 0 视频、1 图片、2 网页、3 其它,当前 AdTypeEnum 返回 video/image/fav/text对外协议枚举已有具体语义,文档保留注释差异;不能只从字段注释解释当前客户端行为

关联与证据索引​

关系精确语义代码证据(路径根见首页)
Launcher → infraresource_id/app_id 对应文件 ID,保存时读取并带入元数据service/padvert/LauncherIndexAdvertServiceImpl.java:59,66
Launcher → device下发时取设备属性,并可异步更新 device UI 信息controller/app/ForeignLauncherController.java 的 getLauncherAds/updateUI
rule → LauncherLAUNCHER_PUSH 的 businessId 是 launcher_index.idlistener/RuleLauncherStatusListener.java:16,44
Launcher ↔ bpm主配置 ID 为 businessKey,主表保存流程实例 ID;结果由监听器交回业务服务service/push/LauncherBaseInfoBpmServiceImpl.java:152,171;listener/BpmLauncherStatusListener.java
Launcher ↔ taskpush_task_id 关联 task 推送业务,先查素材再汇总执行回传;导出任务由 task 管理service/execrecord/LauncherExecRecordServiceImpl.java:76,109;listener/LauncherExportTaskEventListener.java:46
Launcher → 安装回执消息type=2 时从素材补包名、版本,再发 TOPIC_FROM_LAUNCHERcontroller/app/ForeignLauncherController.java 的 addLauncherExecRecord

以上均为逻辑关系;本次实库 8 张 MySQL 表未检出物理外键。核验以 2026-09-18 结构快照和当前源码为准,没有据元数据推断业务数据是否孤立、统计是否完整、审批是否一致或线上代码版本。

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