模块简介
Data 是动态数据集模块,用来把“数据结构、表单、列表和权限规则”配置化。开发者可以先定义一个数据集,再由系统自动提供对应的数据结构、查询与维护能力。
它不是某个固定业务模型,而是一个“低代码数据容器”:
DataConfig负责定义数据集元信息Data负责存放具体记录App\Data\Service\Config负责把配置转换成查询、关联、格式化规则- 数据读取、保存和菜单生成都围绕同一份配置运行
能力状态约定
稳定可用:当前模块核心流程已经实际依赖扩展入口:推荐其他模块或前端复用的正式能力接入前验证:能力开放但高度动态,正式交付前应先用目标数据结构验证
核心特点
- 支持动态定义数据集标识、表格配置、表单配置、字段配置
- 支持分页列表、普通列表、树形数据三种数据展现方式
- 支持按字段配置自动格式化、过滤、排序和保存
- 支持为动态数据建立 JSON 关系并自动预加载
- 支持从后台一键生成动态数据菜单
- 支持把数据集配置导出分享码并重新导入
数据模型
App\Data\Models\DataConfig
状态:稳定可用
用途:定义一个数据集的全部配置,包括:
name:数据名称label:数据标识,也是跨模块引用数据集的关键参数table_data:列表页配置form_data:表单配置field_data:字段与关联配置table_type:list、pages、treeform_type:modal、drawer、pagepost_retry、post_limit、post_window、post_tactics:去重与限流策略
App\Data\Models\Data
状态:稳定可用
用途:承载动态数据记录。核心字段包括:
config_id:所属数据集配置parent_id:树形结构父级has_type、has_id:所属用户或实体ip:来源 IPdata:实际业务字段,存储为 JSON
模型会根据 DataConfig.field_data 自动把 JSON 数据格式化输出,并可拼接动态关联字段。
如果跨模块只需要围绕数据集建立关系,优先依赖:
App\Data\Models\DataConfig
App\Data\Models\Data
不要依赖管理端页面路径,因为真正稳定的是数据集 label、config_id 以及 field_data 约定。
对外开放的 Service
Config
状态:稳定可用、扩展入口、接入前验证
这是 Data 模块最重要的公共服务,负责把动态配置真正变成可运行逻辑。
// App\Data\Service\Config
// 根据 field_data.has 动态注册并预加载关联关系
has($query, $config)
// 根据字段配置给查询增加筛选和排序条件
filter($query, $config, $params = [])
// 把请求数据转换成可入库的数据结构
format(Data $data, DataConfig $config)
适用场景:
- 其他模块想基于
DataConfig二次构建数据读写逻辑
因为它高度依赖配置质量,正式接入前建议先验证字段类型、关联配置和筛选规则是否符合预期。
模块事件
当前 Data 模块没有定义额外的模块级 Event 类
当前也没有事件总线扩展点
它的扩展方式主要不是事件,而是:
- 配置
DataConfig - 复用
App\Data\Service\Config - 围绕
DataConfig、Data模型建立数据关联
其他模块接入建议
- 如果你的需求是“可配置字段 + 可配置表单 + 可配置列表”,优先考虑接入
Data,不要先手写一套专用 CRUD。 - 如果你的需求已经有复杂业务规则、事务、领域行为或跨表约束,就不要把
Data当成主业务模型。 - 如果要从别的模块读取动态数据,优先使用数据集
label作为契约,不要硬编码配置 ID。 - 如果要把某个动态数据集交给后台用户日常维护,可以在配置完成后调用“生成菜单”动作,把它挂进后台导航。