diff --git a/beike/Admin/Http/Controllers/DesignController.php b/beike/Admin/Http/Controllers/DesignController.php index 535f7f33..cc3e6cfe 100644 --- a/beike/Admin/Http/Controllers/DesignController.php +++ b/beike/Admin/Http/Controllers/DesignController.php @@ -23,13 +23,18 @@ class DesignController extends Controller /** * @param Request $request * @return array + * @throws \Throwable */ public function update(Request $request): array { - $fields = [ - 'design_setting' => $request->getContent() + $data = [ + 'type' => 'system', + 'space' => 'base', + 'name' => 'design_setting', + 'value' => $request->getContent(), + 'json' => 1 ]; - SettingRepo::update('system', 'base', $fields); + SettingRepo::createOrUpdate($data); return json_success("保存成功"); } diff --git a/beike/Repositories/SettingRepo.php b/beike/Repositories/SettingRepo.php index e05ec247..7abf7d3b 100644 --- a/beike/Repositories/SettingRepo.php +++ b/beike/Repositories/SettingRepo.php @@ -95,4 +95,41 @@ class SettingRepo } Setting::query()->insert($rows); } + + + /** + * 创建或更新单条记录 + * + * @param $data + * @throws \Throwable + */ + public static function createOrUpdate($data) + { + $type = $data['type'] ?? ''; + $space = $data['space'] ?? ''; + $name = $data['name'] ?? ''; + $value = (string)$data['value'] ?? ''; + $json = (bool)$data['json'] ?? ''; + + $setting = Setting::query() + ->where('type', $type) + ->where('space', $space) + ->where('name', $name) + ->first(); + + $settingData = [ + 'type' => $type, + 'space' => $space, + 'name' => $name, + 'value' => $value, + 'json' => $json, + ]; + + if (empty($setting)) { + $setting = new Setting($settingData); + $setting->saveOrFail(); + } else { + $setting->update($settingData); + } + } }