数据库设计
本模块 的数据库设计围绕“规则”这一核心实体展开,关联了MAC资源、渠道资源以及具体的业务实体。
数据库关系图 (规则引擎)
以下是规则引擎的数据库ER图:
1.1 MAC资源表 (rule_mac_resource)
用于管理一组MAC地址的集合,便于批量复用。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键ID |
| name | varchar | 资源名称 |
| remark | varchar | 备注 |
1.2 MAC资源关联MAC表 (rule_mac_resource_item)
记录MAC资源包中包含的具体MAC地址。数据量较大,采用分区表设计,按 mac_resource_id+mac 分区。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键ID |
| mac_resource_id | bigint | MAC资源表ID |
| mac | varchar | MAC地址 |
| partition_index | int | 表分区号 |
| valid | tinyint | 数据有效性 |
1.3 规则定义表 (rule_liteflow_chain)
规则引擎的核心配置表,定义了规则的基本属性、匹配逻辑(LiteFlow EL表达式)以及适用范围。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键ID |
| name | varchar | 规则名称 |
| application_name | varchar | 应用名称 (LiteFlow) |
| chain_name | varchar | 链路名称 (LiteFlow) |
| el_data | text | EL表达式数据 (LiteFlow规则EL表达式) |
| route | varchar | 路由信息 (LiteFlow) |
| namespace | varchar | 命名空间 (LiteFlow) |
| enable | tinyint | 是否启用 (1-启用, 0-禁用)(LiteFlow) |
| has_mac | tinyint | 是否有mac,0-否,1-是 |
| tinyint | 使用范围: 0-通用规则 1-特定业务类型多条业务 2-不限业务类型的单条业务 3-特定业务类型的单条业务 | |
| tinyint | 业务类型 (如:任务推送、launcher广告配置、黑名单、uota升级等) | |
| tinyint | 变更是否需要审批 (特定业务如任务推送、Launcher配置固定为是) | |
| tinyint | 基础设备范围: 0-全匹配 1-限制mac 2-限制渠道 3-同时限制mac和渠道 | |
| draft | json | 草稿数据 (用于审批流程中的临时数据存储) |
| valid | tinyint | 数据有效性 |
business_type在代码中建立枚 举类,增加是否需要审批的属性
1.4 规则关联业务表 (rule_business)
建立规则与具体业务数据的绑定关系。一个规则可以被多个业务使用(视scope定义而定)。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键ID |
| liteflow_chain_id | bigint | 规则ID |
| business_id | varchar/bigint | 业务ID (如广告ID、任务ID) |
| business_type | tinyint | 业务类型 (如:任务推送、launcher广告配置、黑名单、uota升级等) |
| valid | tinyint | 数据有效性 |
1.5 规则关联MAC表 (rule_mac_item)
规则直接绑定的特定MAC地址列表。按 liteflow_chain_id+mac 分区。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键ID |
| liteflow_chain_id | bigint | 规则ID |
| mac | varchar | MAC地址 |
| partition_index | int | 表分区号 |
| valid | tinyint | 数据有效性 |
1.6 规则关联渠道表 (rule_channel_item)
规则生效的渠道范围。
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键ID |
| liteflow_chain_id | bigint | 规则ID |
| channel_id | bigint | 渠道ID |
| valid | tinyint | 数据有效性 |
1.7 规则字段定义表 (rule_field_definition)
定义了规则引擎可以读取和比较的设备字段。系统启动时,会预置以下字段配置(数据来源于 base_device 设备表结构):
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键ID |
| name | varchar | 字段名 (对应设备表字段,如 mac, cpu) |
| alias_name | varchar | 字段别名 (用于前端显示,如 MAC地址) |
| type | tinyint | 字段类型 (0-string, 1-number, 2-time) |
| available_operators | json | 可用比较规则 (JSON数组) |
1.7.1 系统预置字段列表 (System Preset Fields)
以下是 rule_field_definition 表中的初始数据:
| name | alias_name | type | available_operators |
|---|---|---|---|
| id | 主键ID | 1 | ["eqCmp", "gtCmp", "ltCmp", "gteCmp", "lteCmp", "inCmp", "notInCmp"] |
| mac | MAC地址 | 0 | ["eqCmp", "inCmp", "notInCmp", "containCmp", "notContainsCmp"] |
| status | 状态 | 1 | ["eqCmp", "inCmp", "notInCmp"] |
| certification | 入网认证码 | 0 | ["eqCmp", "inCmp", "notInCmp", "containCmp", "notContainsCmp"] |
| user_id | 所属用 户 | 1 | ["eqCmp", "inCmp", "notInCmp"] |
| company_id | 所属公司 | 1 | ["eqCmp", "inCmp", "notInCmp"] |
| channel_id | 渠道ID | 1 | ["eqCmp", "gtCmp", "ltCmp", "gteCmp", "lteCmp", "inCmp", "notInCmp"] |
| device_model | 设备型号 | 0 | ["eqCmp", "inCmp", "notInCmp", "containCmp", "notContainsCmp"] |
| model_id | 型号ID | 1 | ["eqCmp", "gtCmp", "ltCmp", "gteCmp", "lteCmp", "inCmp", "notInCmp"] |
| order_number | 订单号 | 0 | ["eqCmp", "inCmp", "notInCmp", "containCmp", "notContainsCmp"] |
| sdk_version_name | SDK版本 | 0 | ["eqCmp", "inCmp", "notInCmp", "containCmp", "notContainsCmp"] |
| remarks | 备注 | 0 | ["eqCmp", "inCmp", "notInCmp", "containCmp", "notContainsCmp"] |
| activation_time | 激活时间 | 2 | ["gtCmp", "ltCmp", "gteCmp", "lteCmp"] |
| name | 设备名称 | 0 | ["eqCmp", "inCmp", "notInCmp", "containCmp", "notContainsCmp"] |
| brand | 品牌 | 0 | ["eqCmp", "inCmp", "notInCmp", "containCmp", "notContainsCmp"] |
| system_version | 系统版本 | 0 | ["eqCmp", "inCmp", "notInCmp", "containCmp", "notContainsCmp"] |
| build | 构建版本 | 0 | ["eqCmp", "inCmp", "notInCmp", "containCmp", "notContainsCmp"] |
| ddr | 内存 | 0 | ["eqCmp", "inCmp", "notInCmp", "containCmp", "notContainsCmp"] |
| cpu | CPU型号 | 0 | ["eqCmp", "inCmp", "notInCmp", "containCmp", "notContainsCmp"] |
| device_ip | 设备IP | 0 | ["eqCmp", "inCmp", "notInCmp", "containCmp", "notContainsCmp"] |
| region_id | 地区ID | 1 | ["eqCmp", "gtCmp", "ltCmp", "gteCmp", "lteCmp", "inCmp", "notInCmp"] |
| ip_address | IP地址 | 0 | ["eqCmp", "inCmp", "notInCmp", "containCmp", "notContainsCmp"] |
| ui | Launcher包名 | 0 | ["eqCmp", "inCmp", "notInCmp", "containCmp", "notContainsCmp"] |
| serial_number | 编号 | 0 | ["eqCmp", "inCmp", "notInCmp", "containCmp", "notContainsCmp"] |
| create_time | 创建时间 | 2 | ["gtCmp", "ltCmp", "gteCmp", "lteCmp"] |
| update_time | 更新时间 | 2 | ["gtCmp", "ltCmp", "gteCmp", "lteCmp"] |
| deleted | 是否删除 | 1 | ["eqCmp", "inCmp", "notInCmp"] |
| updater | 更新者 | 0 | ["eqCmp", "inCmp", "notInCmp", "containCmp", "notContainsCmp"] |
| creator | 创建者 | 0 | ["eqCmp", "inCmp", "notInCmp", "containCmp", "notContainsCmp"] |
| tenant_id | 租户编号 | 1 | ["eqCmp", "inCmp", "notInCmp"] |
| real_ddr | 真实DDR | 0 | ["eqCmp", "inCmp", "notInCmp", "containCmp", "notContainsCmp"] |
| real_flash | 真实Flash | 0 | ["eqCmp", "inCmp", "notInCmp", "containCmp", "notContainsCmp"] |
| production_order | 生产订单 | 0 | ["eqCmp", "inCmp", "notInCmp", "containCmp", "notContainsCmp"] |
| master_model | 主控型号 | 0 | ["eqCmp", "inCmp", "notInCmp", "containCmp", "notContainsCmp"] |
| pcb_model | PCB主板型号 | 0 | ["eqCmp", "inCmp", "notInCmp", "containCmp", "notContainsCmp"] |
1.8 业务数量限制表 (business_limit)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键ID |
| business_type | tinyint | 业务类型 (如:任务推送、launcher广告配置、黑名单、uota升级等) |
| business_id | bigint | 业务ID |
| limit_count | int | 业务数量限制 |
| current_count | int | 当前已操作数量 |
该表用于存储业务数量限制,如某个推送任务最多推送多少台设备就停止;黑名单最多卸载多少设备就停止;launcher最多推送成功多少就停止。
1.9 规则关联地区表 (rule_region_item)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键ID |
| liteflow_chain_id | bigint | 规则ID |
| region_id | bigint | 地区ID |
| valid | tinyint | 数据有效性 |
1.10 规则关联mac资源表 (rule_chain_mac_resource_item)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | bigint | 主键ID |
| liteflow_chain_id | bigint | 规则ID |
| mac_resource_id | bigint | mac资源表ID |
| valid | tinyint | 数据有效性 |