插件基础字段处理优化

feat/task1-c-wallet
gongfuxiang 2022-05-08 15:04:58 +08:00
parent ec2c0f774d
commit 075616c8df
1 changed files with 40 additions and 15 deletions

View File

@ -46,7 +46,14 @@ class PluginsService
$ret = self::PluginsField($plugins, 'data');
if(!empty($ret['data']))
{
// 数据处理
// 获取插件基础字段定义
$field_data = self::PluginsBaseFieldData($plugins);
// 数据处理、未指定附件字段则使用系统获取的附件字段
if(empty($attachment_field) && !empty($field_data['attachment_field']))
{
$attachment_field = $field_data['attachment_field'];
}
$data = self::PluginsDataHandle($ret['data'], $attachment_field);
} else {
$data = [];
@ -58,6 +65,33 @@ class PluginsService
return DataReturn('处理成功', 0, $data);
}
/**
* 获取插件基础字段
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2022-05-08
* @desc description
* @param [string] $plugins [插件名称]
*/
public static function PluginsBaseFieldData($plugins)
{
$result = [
'private_field' => [],
'attachment_field' => [],
];
$ser = '\app\plugins\\'.$plugins.'\service\BaseService';
if(class_exists($ser))
{
// 附件属性
$result['attachment_field'] = property_exists($ser, 'base_config_attachment_field') ? $ser::$base_config_attachment_field : [];
// 私有字段
$result['private_field'] = property_exists($ser, 'base_config_private_field') ? $ser::$base_config_private_field : [];
}
return $result;
}
/**
* 插件配置数据处理
* @author Devil
@ -409,25 +443,16 @@ class PluginsService
{
foreach($data as &$v)
{
$private_field = [];
$attachment_field = [];
$plugins = '\app\plugins\\'.$v['plugins'].'\service\BaseService';
if(class_exists($plugins))
{
// 附件属性
$attachment_field = property_exists($plugins, 'base_config_attachment_field') ? $plugins::$base_config_attachment_field : [];
// 私有字段
$private_field = property_exists($plugins, 'base_config_private_field') ? $plugins::$base_config_private_field : [];
}
// 获取插件基础字段定义
$field_data = self::PluginsBaseFieldData($v['plugins']);
// 处理配置数据
$v['data'] = self::PluginsDataHandle($v['data'], $attachment_field);
$v['data'] = self::PluginsDataHandle($v['data'], $field_data['attachment_field']);
// 移除私有字段及数据
if(!empty($v['data']) && is_array($v['data']) && !empty($private_field) && is_array($private_field))
if(!empty($v['data']) && is_array($v['data']) && !empty($field_data['private_field']) && is_array($field_data['private_field']))
{
$v['data'] = self::ConfigPrivateFieldsHandle($v['data'], $private_field);
$v['data'] = self::ConfigPrivateFieldsHandle($v['data'], $field_data['private_field']);
}
}