From f80e1f71d482bd233e865a28e02a1e6f4d65824b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E5=BC=BA?= <357099073@qq.com> Date: Thu, 26 Feb 2026 11:47:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=99=BB=E5=BD=95=E9=AA=8C?= =?UTF-8?q?=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SiteSettingsController.php | 192 ++++++++++-------- app/admin/route/routes/siteSettings.php | 2 + 2 files changed, 104 insertions(+), 90 deletions(-) diff --git a/app/admin/controller/SiteSettingsController.php b/app/admin/controller/SiteSettingsController.php index ff24eb2..1b9e53f 100644 --- a/app/admin/controller/SiteSettingsController.php +++ b/app/admin/controller/SiteSettingsController.php @@ -13,15 +13,29 @@ use app\model\System\SystemSiteSettings; class SiteSettingsController extends BaseController { /** - * 获取所有站点设置列表 + * 获取指定站点设置列表 * @return Json */ public function getNormalInfos() { + // 定义你需要的 label 列表 + $targetLabels = [ + 'sitename', + 'logo', + 'logow', + 'description', + 'copyright', + 'companyname', + 'icp' + ]; + $siteSettings = SystemSiteSettings::where('delete_time', null) - ->field('id, label, value, sort') - ->order('id', 'asc') + ->whereIn('label', $targetLabels) // 仅筛选指定的 label + ->field('label, value') ->select(); + + $this->logSuccess('站点设置管理', '查看基本信息配置', [], $this->getAdminUserInfo()); + return json([ 'code' => 200, 'msg' => '获取成功', @@ -36,65 +50,101 @@ class SiteSettingsController extends BaseController public function saveNormalInfos() { $params = $this->request->param(); + $rawData = isset($params['data']) ? json_decode($params['data'], true) : $params; + $allowedLabels = ['sitename', 'logo', 'logow', 'description', 'copyright', 'companyname', 'icp']; - if (!isset($params['data']) || empty($params['data'])) { - return json(['code' => 400, 'msg' => '数据不能为空', 'data' => null]); - } - - $data = json_decode($params['data'], true); - if (!is_array($data)) { - return json(['code' => 400, 'msg' => '数据格式错误', 'data' => null]); - } - - foreach ($data as $item) { - if (!isset($item['label']) || !isset($item['value'])) { - continue; - } - - $label = $item['label']; - $value = $item['value'] ?? ''; - - $setting = SystemSiteSettings::where('label', $label)->find(); - if ($setting) { - $setting->value = $value; - $setting->save(); - } else { - SystemSiteSettings::create([ - 'label' => $label, - 'value' => $value, - 'create_time' => date('Y-m-d H:i:s') - ]); + foreach ($allowedLabels as $label) { + if (isset($rawData[$label])) { + SystemSiteSettings::update( + ['value' => (string)$rawData[$label]], + ['label' => $label] + ); } } - $allSettings = SystemSiteSettings::column('value', 'label'); - $allSettings['type'] = 'normal'; + $this->logSuccess('站点设置管理', '保存基本信息', ['labels' => $allowedLabels], $this->getAdminUserInfo()); - $labels = array_column($data, 'label'); - $userInfo = $this->getAdminUserInfo(); - $this->logSuccess('站点设置管理', '保存基本信息', ['labels' => $labels], $userInfo); + return json(['code' => 200, 'msg' => '基本信息保存成功']); + } + + /** + * 获取登录验证数据 + * @return Json + */ + public function getVerifyInfos() + { + // 定义你需要的 label 列表 + $targetLabels = [ + 'openVerify', + 'verifyModel', + 'geetestID', + 'geetestKEY' + ]; + + $legalInfos = SystemSiteSettings::where('delete_time', null) + ->whereIn('label', $targetLabels) // 仅筛选指定的 label + ->field('label, value') + ->select(); + + $this->logSuccess('站点设置管理', '查看登录验证数据', [], $this->getAdminUserInfo()); return json([ 'code' => 200, - 'msg' => '保存成功', - 'data' => $allSettings + 'msg' => '获取成功', + 'data' => $legalInfos->toArray() ]); } /** - * 获取所有站点设置列表 + * 保存登录验证数据 + * @return Json + */ + public function saveVerifyInfos() + { + $params = $this->request->param(); + $allowedLabels = ['openVerify', 'verifyModel', 'geetestID', 'geetestKEY']; + + foreach ($allowedLabels as $label) { + if (isset($params[$label])) { + $val = $params[$label]; + if (is_bool($val)) { + $val = $val ? '1' : '0'; + } + + SystemSiteSettings::where('label', $label)->update([ + 'value' => (string)$val + ]); + } + } + + $this->logSuccess('站点设置管理', '保存登录验证配置', $params, $this->getAdminUserInfo()); + + return json(['code' => 200, 'msg' => '保存成功']); + } + + /** + * 获取法律声明和隐私条款 * @return Json */ public function getLegalInfos() { - $siteSettings = SystemSiteSettings::where('delete_time', null) - ->field('id, label, value, sort') - ->order('id', 'asc') + // 定义你需要的 label 列表 + $targetLabels = [ + 'legalNotice', + 'privacyTerms' + ]; + + $legalInfos = SystemSiteSettings::where('delete_time', null) + ->whereIn('label', $targetLabels) // 仅筛选指定的 label + ->field('label, value') ->select(); + + $this->logSuccess('站点设置管理', '查看法律声明和隐私条款', [], $this->getAdminUserInfo()); + return json([ 'code' => 200, 'msg' => '获取成功', - 'data' => $siteSettings->toArray() + 'data' => $legalInfos->toArray() ]); } @@ -105,58 +155,20 @@ class SiteSettingsController extends BaseController public function saveLegalInfos() { $params = $this->request->param(); + $rawData = isset($params['data']) ? json_decode($params['data'], true) : $params; + $allowedLabels = ['legalNotice', 'privacyTerms']; - if (!isset($params['data']) || empty($params['data'])) { - return json(['code' => 400, 'msg' => '数据不能为空', 'data' => null]); - } - - $data = json_decode($params['data'], true); - if (!is_array($data)) { - return json(['code' => 400, 'msg' => '数据格式错误', 'data' => null]); - } - - foreach ($data as $item) { - if (!isset($item['label']) || !isset($item['value'])) { - continue; - } - - $label = $item['label']; - $value = $item['value'] ?? ''; - - $setting = SystemSiteSettings::where('label', $label)->find(); - if ($setting) { - $setting->value = $value; - $setting->save(); - } else { - SystemSiteSettings::create([ - 'label' => $label, - 'value' => $value, - 'create_time' => date('Y-m-d H:i:s') - ]); + foreach ($allowedLabels as $label) { + if (isset($rawData[$label])) { + SystemSiteSettings::update( + ['value' => (string)$rawData[$label]], + ['label' => $label] + ); } } + $this->logSuccess('站点设置管理', '保存法律声明和隐私条款', ['labels' => $allowedLabels], $this->getAdminUserInfo()); - $allSettings = SystemSiteSettings::column('value', 'label'); - $allSettings['type'] = 'legal_notice'; - - $labels = array_column($data, 'label'); - - $userId = Session::get('user_id', 0); - $userFromSession = Session::get('user', []); - $userFromCache = Cache::get('userInfo_' . $userId, []); - $account = Session::get('account', ''); - $name = Session::get('name', ''); - - \think\facade\Log::record('SiteSettings Debug - user_id: ' . $userId . ', userFromSession: ' . json_encode($userFromSession) . ', userFromCache: ' . json_encode($userFromCache) . ', account: ' . $account . ', name: ' . $name); - - $this->logSuccess('站点设置管理', '保存法律声明和隐私条款', ['labels' => $labels]); - - return json([ - 'code' => 200, - 'msg' => '保存成功', - 'data' => $allSettings - ]); + return json(['code' => 200, 'msg' => '法律声明和隐私条款保存成功']); } - } diff --git a/app/admin/route/routes/siteSettings.php b/app/admin/route/routes/siteSettings.php index 735f677..7a9f8c8 100644 --- a/app/admin/route/routes/siteSettings.php +++ b/app/admin/route/routes/siteSettings.php @@ -4,5 +4,7 @@ use think\facade\Route; // 站点设置路由 Route::get('normalInfos', 'app\\admin\\controller\\SiteSettingsController@getNormalInfos'); Route::post('saveNormalInfos', 'app\\admin\\controller\\SiteSettingsController@saveNormalInfos'); +Route::get('loginVerifyInfos', 'app\\admin\\controller\\SiteSettingsController@getVerifyInfos'); +Route::post('saveloginVerifyInfos', 'app\\admin\\controller\\SiteSettingsController@saveVerifyInfos'); Route::get('legalInfos', 'app\\admin\\controller\\SiteSettingsController@getLegalInfos'); Route::post('saveLegalInfos', 'app\\admin\\controller\\SiteSettingsController@saveLegalInfos');