From 860f7184593c7ae48157c97a3fe2823d4df00e71 Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Tue, 12 Jul 2022 20:32:53 +0800 Subject: [PATCH] modified setting --- beike/Helpers.php | 43 +++++++++++++++++++----------- beike/Models/Setting.php | 2 ++ beike/Repositories/SettingRepo.php | 26 ++++++++++++++++++ 3 files changed, 55 insertions(+), 16 deletions(-) diff --git a/beike/Helpers.php b/beike/Helpers.php index 10a74ee5..21907f51 100644 --- a/beike/Helpers.php +++ b/beike/Helpers.php @@ -19,6 +19,32 @@ function setting($key, $default = null) return config("bk.{$key}", $default); } +/** + * 获取系统 settings + * + * @param $group + * @param $key + * @param null $default + * @return mixed + */ +function system_setting($group, $key, $default = null) +{ + return config("bk.{$group}.{$key}", $default); +} + +/** + * 获取后台设置到 settings 表的值 + * + * @param $plugin + * @param $key + * @param null $default + * @return mixed + */ +function plugin_setting($plugin, $key, $default = null) +{ + return config("bk.{$plugin}.{$key}", $default); +} + /** * 获取后台管理前缀名称, 默认为 admin */ @@ -37,22 +63,7 @@ function admin_name(): string */ function load_settings() { - $settings = Setting::all(['type', 'space', 'name', 'value', 'json']) - ->groupBy('space'); - - $result = []; - foreach ($settings as $space => $groupSettings) { - $space = $space ?: 'system'; - foreach ($groupSettings as $groupSetting) { - $name = $groupSetting->name; - $value = $groupSetting->value; - if ($groupSetting->json) { - $result[$space][$name] = json_decode($value, true); - } else { - $result[$space][$name] = $value; - } - } - } + $result = \Beike\Repositories\SettingRepo::getGroupedSettings(); config(['bk' => $result]); } diff --git a/beike/Models/Setting.php b/beike/Models/Setting.php index 64d35517..86d65116 100644 --- a/beike/Models/Setting.php +++ b/beike/Models/Setting.php @@ -9,6 +9,8 @@ class Setting extends Model { use HasFactory; + const TYPES = ['system', 'plugin']; + protected $table = 'settings'; protected $fillable = ['type', 'space', 'name', 'value', 'json']; } diff --git a/beike/Repositories/SettingRepo.php b/beike/Repositories/SettingRepo.php index c47f0d0c..4ce11fb1 100644 --- a/beike/Repositories/SettingRepo.php +++ b/beike/Repositories/SettingRepo.php @@ -16,6 +16,32 @@ use Beike\Models\Setting; class SettingRepo { + /** + * 按照类型分组获取设置 + */ + public static function getGroupedSettings(): array + { + $settings = Setting::all(['type', 'space', 'name', 'value', 'json']); + + $result = []; + foreach ($settings as $setting) { + $type = $setting->type; + if (!in_array($type, Setting::TYPES)) { + continue; + } + + $space = $setting->space; + $name = $setting->name; + $value = $setting->value; + if ($setting->json) { + $result[$type][$space][$name] = json_decode($value, true); + } else { + $result[$type][$space][$name] = $value; + } + } + return $result; + } + /** * 获取插件默认字段 *