数据库
唯一来源
全量表结构集中在一个文件:
- 仓库路径:
docs/developer-docs/docs/public/1-ddl.sql - 站点下载:/1-ddl.sql(构建时从
public/原样拷到站点根)
项目没有引入自动迁移工具(无 Flyway / Liquibase),DDL 由人工在目标库执行。因此:
- 表结构变更直接修改全量 DDL,保持它始终是「当前库应有的完整结构」。
- 需要增量脚本(补列、补索引、数据修复)时,同样放在
docs/developer-docs/docs/public/下供人工评审与执行,不得由代码、测试或调试链路自动运行。 - 依赖新列的后端版本上线前,DDL 必须先在目标库执行,否则查询因缺列失败。
库与引擎约定
| 项 | 约定 |
|---|---|
| 数据库 | asone,utf8mb4 |
| 排序规则 | utf8mb4_0900_ai_ci |
| 引擎 | InnoDB |
| 时间字段 | created_at / updated_at,DEFAULT CURRENT_TIMESTAMP,updated_at 带 ON UPDATE CURRENT_TIMESTAMP |
| 状态字段 | status tinyint UNSIGNED,1 启用 / 0 禁用 |
| 主键 | id,业务表多为 int UNSIGNED AUTO_INCREMENT,日志类大表用 bigint |
| 索引命名 | idx_<表名>_<列>,写在表定义的 KEY 子句 |
| Flowable | ACT_* 表由引擎启动时自动创建(flowable.database-schema-update=true),数据库账号需要 DDL 权限 |
表清单(42 张)
广告投放域 advertisement_*(10 张,模块 asone-module-advertisement)
| 表 | 说明 |
|---|---|
advertisement_advertiser | 广告主表(上游广告主,与本系统管理员 system_admin 无关联) |
advertisement_channel | 广告渠道表 |
advertisement_click_log | 广告点击日志表 |
advertisement_customer_platform | 广告客户与广告平台绑定,一个客户只绑定一个平台;客户按绑定平台过滤广告数据,管理员不受限 |
advertisement_data_report | 广告数据报表 |
advertisement_domain | 广告域名表 |
advertisement_offer | 广告 Offer 表 |
advertisement_offer_channel | Offer 渠道关联表 |
advertisement_postback_log | 广告回调日志表 |
advertisement_product | 广告产品表 |
渠道报表域 report_channel_*(7 张,模块 asone-module-channel-report)
| 表 | 说明 |
|---|---|
report_channel_daily_report | 每日报告表 |
report_channel_country_report | 按国家汇总 |
report_channel_unit_report | 按广告单元汇总 |
report_channel_data_report | 详细报表 |
report_channel_customer_domain | 广告客户与推广域名关联及收益扣率表 |
report_channel_customer_source | 广告客户数据源授权表,与产品维度共同决定客户可见数据范围,命中产品关联或数据源授权任一即可见对应报表 |
report_channel_report_sync_log | 报告同步记录表 |
IAA 变现域 iaa_*(2 张,模块 asone-module-iaa)
| 表 | 说明 |
|---|---|
iaa_product | IAA 产品表 |
iaa_roas | IAA 产品 ROAS 数据(花费、广告收益等按 report_date 记录) |
系统与共享内核 system_*(23 张,模块 asone-server-system)
| 表 | 说明 |
|---|---|
system_admin | 后台管理员表(系统用户) |
system_admin_role | 管理员角色关联表 |
system_role | 角色表 |
system_role_resource | 角色资源关联表 |
system_resource | 系统资源表(菜单与权限动作),含 role_scope、icon |
system_admin_identity | 管理员第三方身份绑定 |
system_identity_app | 第三方身份登录应用配置 |
system_admin_login_log | 管理员登录记录 |
system_admin_mfa | 管理员两步认证绑定 |
system_admin_mfa_device | 管理员两步认证信任设备 |
system_admin_favorite | 管理员收藏表 |
system_admin_recent_menu | 管理员最近访问菜单表 |
system_api_key | 管理员 API Key 表 |
system_approval_application | 审批申请单 |
system_approval_record | 审批操作留痕 |
system_approval_flow_definition | 审批流程定义 |
system_approval_field_meta | 审批条件分支字段元数据 |
system_notification | 系统通知表 |
system_notification_preference | 管理员通知偏好表 |
system_export_task | 导出任务表 |
system_operation_log | 系统操作审计日志表 |
system_config | 系统技术配置表,按 config_key 取原始值 |
system_setting | 系统基本设置表(站点品牌与 SEO 等后台可编辑项) |
访问方式与约束
- 访问层是 MyBatis-Plus:Mapper
extends BaseMapper<T>并逐个标注@Mapper,Service 继承 MyBatis-PlusServiceImpl<M, E>,复杂查询落src/main/resources/mapper/*.xml。 - 实体用
@TableName显式指定表名,Lombok@Getter/@Setter,不使用record。 - 分页只走
PaginationInnerInterceptor(DbType.MYSQL);BlockAttackInnerInterceptor会拦截无where的全表更新与删除。 - 渠道报表模块对同类报表复用泛型基接口(
ChannelReportSummaryMapper<T>/ChannelReportBatchMapper<T>)与实体基类,新增渠道优先继承而不是复制表。
数据库只读
排查问题、验证数据、探索库表结构时只允许只读查询(SELECT / SHOW / DESC / information_schema / 只读 EXPLAIN)。任何 DML、DDL、权限与运维类语句、CALL 不确定是否只读的例程、以及「先写后回滚」的试探方式一律禁止;确实需要写入时,先说明目的、影响的表和行数预估,取得明确同意后执行,且同意仅对本次有效。
初始化本地库
CREATE DATABASE IF NOT EXISTS asone
DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
再把 1-ddl.sql 导入 asone 库(人工执行,Flowable 的 ACT_* 表在应用首次启动时自动补齐)。
