From 776aacfa2e045542e9b8315ff3c5f82ecf560e8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=AB=E5=9C=B0=E5=83=A7?= <357099073@qq.com> Date: Fri, 6 Feb 2026 00:06:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=89=8D=E7=AB=AF=E7=9B=B8?= =?UTF-8?q?=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SiteSettingsController.php | 20 ++++----- app/index/controller/Index.php | 39 +++++++++++++++--- app/index/route/app.php | 3 ++ app/model/{ => System}/SystemSiteSettings.php | 18 ++++---- .../uploads/2026/02/05/6984b341c401d.png | Bin 0 -> 6327 bytes .../uploads/2026/02/05/6984bc0015123.png | Bin 0 -> 5860 bytes 6 files changed, 55 insertions(+), 25 deletions(-) rename app/model/{ => System}/SystemSiteSettings.php (79%) create mode 100644 public/storage/uploads/2026/02/05/6984b341c401d.png create mode 100644 public/storage/uploads/2026/02/05/6984bc0015123.png diff --git a/app/admin/controller/SiteSettingsController.php b/app/admin/controller/SiteSettingsController.php index 27b23da..ff24eb2 100644 --- a/app/admin/controller/SiteSettingsController.php +++ b/app/admin/controller/SiteSettingsController.php @@ -8,7 +8,7 @@ use app\admin\BaseController; use think\exception\ValidateException; use think\facade\Db; use think\response\Json; -use app\model\SystemSiteSettings; +use app\model\System\SystemSiteSettings; class SiteSettingsController extends BaseController { @@ -19,7 +19,7 @@ class SiteSettingsController extends BaseController public function getNormalInfos() { $siteSettings = SystemSiteSettings::where('delete_time', null) - ->field('id, label, value, sort') + ->field('id, label, value, sort') ->order('id', 'asc') ->select(); return json([ @@ -69,11 +69,11 @@ class SiteSettingsController extends BaseController $allSettings = SystemSiteSettings::column('value', 'label'); $allSettings['type'] = 'normal'; - + $labels = array_column($data, 'label'); $userInfo = $this->getAdminUserInfo(); $this->logSuccess('站点设置管理', '保存基本信息', ['labels' => $labels], $userInfo); - + return json([ 'code' => 200, 'msg' => '保存成功', @@ -88,7 +88,7 @@ class SiteSettingsController extends BaseController public function getLegalInfos() { $siteSettings = SystemSiteSettings::where('delete_time', null) - ->field('id, label, value, sort') + ->field('id, label, value, sort') ->order('id', 'asc') ->select(); return json([ @@ -139,19 +139,19 @@ class SiteSettingsController extends BaseController $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' => '保存成功', diff --git a/app/index/controller/Index.php b/app/index/controller/Index.php index ef7a76a..f21a6d1 100644 --- a/app/index/controller/Index.php +++ b/app/index/controller/Index.php @@ -10,6 +10,7 @@ use app\model\FrontMenu; use app\model\OnePage; use think\db\exception\DbException; use think\facade\Env; +use app\model\System\SystemSiteSettings; class Index extends BaseController { @@ -30,7 +31,7 @@ class Index extends BaseController $files = glob($logPath . '*.log'); if ($files) { // 按修改时间排序,最新的在前 - usort($files, function($a, $b) { + usort($files, function ($a, $b) { return filemtime($b) - filemtime($a); }); @@ -39,7 +40,7 @@ class Index extends BaseController if (file_exists($latestFile)) { $content = file_get_contents($latestFile); $lines = explode("\n", $content); - + // 倒序遍历,只取最近的100条 $count = 0; for ($i = count($lines) - 1; $i >= 0 && $count < 100; $i--) { @@ -48,7 +49,7 @@ class Index extends BaseController $count++; } } - + // 再倒序回来,使最新的日志在最后 $logs = array_reverse($logs); } @@ -138,15 +139,15 @@ class Index extends BaseController $requestPath = $this->request->pathinfo(); $path = str_replace('onepage/', '', $requestPath); } - + // 确保路径以 / 开头 if (empty($path) || $path[0] !== '/') { $path = '/' . $path; } - + // 解码路径 $path = urldecode($path); - + // 查找对应路径的单页 $onePage = OnePage::where('path', $path) ->where('status', 1) @@ -174,4 +175,30 @@ class Index extends BaseController ]); } } + + /** + * 前端底部数据 + * @return \think\response\Json + */ + public function getFooterData() + { + try { + $footerData = SystemSiteSettings::where('delete_time', null) + ->field('label, value') + ->select() + ->toArray(); + + return json([ + 'code' => 200, + 'msg' => 'success', + 'data' => $footerData + ]); + } catch (DbException $e) { + return json([ + 'code' => 500, + 'msg' => 'fail:' . $e->getMessage(), + 'data' => null + ]); + } + } } diff --git a/app/index/route/app.php b/app/index/route/app.php index 8e2c563..d9e3f03 100644 --- a/app/index/route/app.php +++ b/app/index/route/app.php @@ -5,6 +5,9 @@ use think\facade\Route; Route::get('/', 'app\index\controller\Index@index'); Route::get('index/index', 'app\index\controller\Index@index'); +// --- 前端底部数据路由 --- +Route::get('footerdata', 'app\index\controller\Index@getFooterData'); + // --- 文章详情路由 --- Route::get('kingdeenews/detail/:id', 'app\index\controller\Article\NewsCenterController@getKingdeeNewsDetail'); Route::get('companynews/detail/:id', 'app\index\controller\Article\NewsCenterController@getCompanyNewsDetail'); diff --git a/app/model/SystemSiteSettings.php b/app/model/System/SystemSiteSettings.php similarity index 79% rename from app/model/SystemSiteSettings.php rename to app/model/System/SystemSiteSettings.php index 3812230..c7a35fd 100644 --- a/app/model/SystemSiteSettings.php +++ b/app/model/System/SystemSiteSettings.php @@ -9,28 +9,28 @@ // | Author: Liu21st // +---------------------------------------------------------------------- -namespace app\model; +namespace app\model\System; use think\Model; use think\model\concern\SoftDelete; /** - * 文章分类模型 + * 站点设置模型 */ class SystemSiteSettings extends Model { // 启用软删除 use SoftDelete; - + // 数据库表名 protected $name = 'mete_system_site_settings'; - + // 字段类型转换 protected $type = [ - 'id' => 'integer', - 'label' => 'string', - 'value' => 'string', - 'sort' => 'integer', - 'remark' => 'string', + 'id' => 'integer', + 'label' => 'string', + 'value' => 'string', + 'sort' => 'integer', + 'remark' => 'string', ]; } diff --git a/public/storage/uploads/2026/02/05/6984b341c401d.png b/public/storage/uploads/2026/02/05/6984b341c401d.png new file mode 100644 index 0000000000000000000000000000000000000000..b50c77d36a38f244f14181e4c597e8191dd00355 GIT binary patch literal 6327 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 Z6Xt(ZZbej}(dSRE=-s`iRjug|^*?XjJ)r;q literal 0 HcmV?d00001 diff --git a/public/storage/uploads/2026/02/05/6984bc0015123.png b/public/storage/uploads/2026/02/05/6984bc0015123.png new file mode 100644 index 0000000000000000000000000000000000000000..8a2146cc57178ce39e524702c3d1686653961058 GIT binary patch literal 5860 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