mingyuanyun/dynamicfields

基于天际PAAS的个性化动态字段方案实现,应对前端PaaS化页面中的表单拖拉拽增加一个扩展字段能力,此组件只需增加简单的模块配置,零代码就能无感知和无侵入地拥有动态字段的能力。

v1.0.5 2022-01-17 08:09 UTC

This package is auto-updated.

Last update: 2024-05-17 13:52:17 UTC


README

云链智慧工程公共组提供的应对天际PaaS的个性化动态字段的后端中间件方案支持,基于Yii2框架的行为特性进行封装,只需要后端接口增加简单的模块配置,零代码就能无感知和无侵入地拥有动态字段的能力。

配套数据库扩展表结构

参考一下sql建立扩展表,xxx表示某业务功能主表

create table if not exists xxx_paas_extra (
    `biz_id` CHAR(36) default ''not null comment '业务id',
    `x__customer_a` VARCHAR(500) default '' null comment '自定义字段a',
    `x__customer_b` VARCHAR(500) default '' null comment '自定义字段b',
    `x__customer_c` VARCHAR(500) default '' null comment '自定义字段c',
    `x__customer_d` VARCHAR(500) default '' null comment '自定义字段d',
    `x__customer_e` VARCHAR(500) default '' null comment '自定义字段e',
    `x__customer_f` VARCHAR(500) default '' null comment '自定义字段f',
    `x__customer_g` VARCHAR(500) default '' null comment '自定义字段g',
    `x__customer_h` VARCHAR(500) default '' null comment '自定义字段h',
    `x__customer_i` VARCHAR(500) default '' null comment '自定义字段i',
    `x__customer_j` VARCHAR(500) default '' null comment '自定义字段j',
    `created_on` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `created_by` char(36) DEFAULT '' COMMENT '创建人',
    `modified_on` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
    `modified_by` char(36) DEFAULT '' COMMENT '修改人',
    `update_timestamp` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间时间戳',
    `is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除',
    primary key (`biz_id`)
) engine = innodb charset = utf8 comment ='xxx功能paas扩展表';

配置与使用

在controller中,增加behaviors的方法,并返回一下配置

class DemoController extends \yii\web\Controller
{
    public function behaviors()
    {
        return [
            [
                'class' => \DynamicFields\DynamicFieldsBehavior::class,
                'actions' => [
                    'set' => [
                        '保存接口的action'
                    ],
                    'get' => [
                        '获取详情接口的action'
                    ]
                ],
                'prefix' => '扩展字段的前缀,比如 x__',
                'mainTable' => '业务功能的主表,比如 users',
                'mainTablePrimaryKey' => '业务功能主表的主键,比如 id',
                'bizId' => '扩展表的主键,对应主表的ID,比如 biz_id',
                'responseBodyDataField' => '接口响应体的数据字段,比如 data',
                'conn' => '访问数据库对象,比如 \Yii::$app->getDb()',
            ]
        ];
    }
    
    ...
}

配置说明

配置项类型默认值说明
actionsarray必填,否则不起作用。actions需要指定保存扩展字段的action和获取扩展字段的action
prefixstringx__必填,扩展字段的前缀,用于区分扩展字段参数与业务字段参数
mainTablestring必填,业务功能的主表表名
mainTablePrimaryKeystringid功能主表的主键名
bizIdstringbiz_id扩展表的主键名,映射主表的主键
responseBodyDataFieldstringdata获取详情接口返回值中的数据字段
connobject\Yii::$app->db访问数据库的对象,默认为Yii中的db组件