Update settings
parent
ec52c4b18d
commit
693404cd55
|
|
@ -6,7 +6,6 @@ use App\Models\Setting;
|
|||
use Illuminate\Contracts\Cache\Repository as Cache;
|
||||
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
||||
use Illuminate\Support\Arr;
|
||||
use Throwable;
|
||||
|
||||
class SettingService
|
||||
{
|
||||
|
|
@ -39,25 +38,21 @@ class SettingService
|
|||
return $this->getMany($key);
|
||||
}
|
||||
|
||||
if (! array_key_exists($key, $this->items)) {
|
||||
$_key = $this->getSettingKey($key);
|
||||
|
||||
if (! array_key_exists($_key, $this->items)) {
|
||||
try {
|
||||
$this->items[$key] = $this->cache->remember($this->cacheKey($key), $this->ttl, function () use ($key) {
|
||||
$_key = $this->keyHandle($key);
|
||||
$settings = Setting::where('key', $_key[0])->firstOrFail();
|
||||
if (isset($_key[1])) {
|
||||
return Arr::get($settings->value, $_key[1]);
|
||||
} else {
|
||||
return $settings->value;
|
||||
}
|
||||
$this->items[$_key] = $this->cache->remember($this->cacheKey($_key), $this->ttl, function () use ($_key) {
|
||||
$settings = Setting::where('key', $_key)->firstOrFail();
|
||||
|
||||
return $settings->value;
|
||||
});
|
||||
} catch (ModelNotFoundException $e) {
|
||||
return $default;
|
||||
} catch (Throwable $th) {
|
||||
return $default;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->items[$key];
|
||||
return Arr::get($this->items[$_key], $key, $default);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -89,8 +84,20 @@ class SettingService
|
|||
$keys = is_array($key) ? $key : [$key => $value];
|
||||
|
||||
foreach ($keys as $key => $value) {
|
||||
$_key = $this->keyHandle($key);
|
||||
Setting::where('key', $_key[0])->update(['value->'.$_key[1] => $value]);
|
||||
$_key = $this->getSettingKey($key);
|
||||
|
||||
$setting = Setting::firstOrNew(['key' => $_key]);
|
||||
|
||||
if (strpos($key, '.') === false) {
|
||||
$setting->value = $value;
|
||||
} else {
|
||||
$json = [$_key => $setting->value];
|
||||
|
||||
data_set($json, $key, $value);
|
||||
|
||||
$setting->value = $json[$_key];
|
||||
}
|
||||
$setting->save();
|
||||
|
||||
$this->cleanCache($key);
|
||||
}
|
||||
|
|
@ -116,8 +123,20 @@ class SettingService
|
|||
return "settings.{$key}";
|
||||
}
|
||||
|
||||
protected function keyHandle(string $key)
|
||||
/**
|
||||
* 获取设置项的 key
|
||||
*
|
||||
* @param string $key
|
||||
* @return string
|
||||
*/
|
||||
protected function getSettingKey(string $key): string
|
||||
{
|
||||
return explode('.', $key);
|
||||
if (strpos($key, '.') === false) {
|
||||
return $key;
|
||||
}
|
||||
|
||||
$segments = explode($key, '.');
|
||||
|
||||
return $segments[0];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue