diff --git a/app/service/PluginsService.php b/app/service/PluginsService.php index ac2012309..7a70b4917 100755 --- a/app/service/PluginsService.php +++ b/app/service/PluginsService.php @@ -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']); } }