From b3456b8916e5a1e6b42cd2453265f289e4e1143d Mon Sep 17 00:00:00 2001 From: seaHi Date: Sun, 26 Jul 2026 17:52:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=90=8E=E5=8F=B0?= =?UTF-8?q?=E4=BB=AA=E8=A1=A8=E7=9B=98=E5=8F=8A=E7=B3=BB=E7=BB=9F=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routes/admin/+page.server.ts | 25 +++++ src/routes/admin/+page.svelte | 86 +++++++++++++++++ src/routes/admin/settings/+page.server.ts | 8 ++ src/routes/admin/settings/+page.svelte | 108 ++++++++++++++++++++++ 4 files changed, 227 insertions(+) create mode 100644 src/routes/admin/+page.server.ts create mode 100644 src/routes/admin/+page.svelte create mode 100644 src/routes/admin/settings/+page.server.ts create mode 100644 src/routes/admin/settings/+page.svelte diff --git a/src/routes/admin/+page.server.ts b/src/routes/admin/+page.server.ts new file mode 100644 index 0000000..bb27b87 --- /dev/null +++ b/src/routes/admin/+page.server.ts @@ -0,0 +1,25 @@ +import type { PageServerLoad } from './$types'; + +export const load: PageServerLoad = async ({ platform }) => { + const db = platform?.env?.DB; + + let postCount = 0; + let tagCount = 0; + + if (db) { + try { + const postResult = await db.prepare('SELECT COUNT(*) as count FROM posts').first(); + const tagResult = await db.prepare('SELECT COUNT(*) as count FROM tags').first(); + + postCount = (postResult?.count as number) || 0; + tagCount = (tagResult?.count as number) || 0; + } catch (err) { + console.error('Error fetching admin dashboard stats:', err); + } + } + + return { + postCount, + tagCount + }; +}; diff --git a/src/routes/admin/+page.svelte b/src/routes/admin/+page.svelte new file mode 100644 index 0000000..83f710b --- /dev/null +++ b/src/routes/admin/+page.svelte @@ -0,0 +1,86 @@ + + +
+

仪表盘

+

欢迎回来,{data.user?.email || '管理员'}!这是您的后台概览。

+ +
+
+

文章总数

+
{data.postCount}
+ 管理文章 → +
+ +
+

标签总数

+
{data.tagCount}
+ 管理标签 → +
+
+
+ + diff --git a/src/routes/admin/settings/+page.server.ts b/src/routes/admin/settings/+page.server.ts new file mode 100644 index 0000000..662be43 --- /dev/null +++ b/src/routes/admin/settings/+page.server.ts @@ -0,0 +1,8 @@ +import type { PageServerLoad } from './$types'; + +export const load: PageServerLoad = async ({ platform, locals }) => { + return { + user: locals.user, + platformEnv: !!platform?.env?.DB ? 'Cloudflare D1 (Connected)' : 'Local Mock' + }; +}; diff --git a/src/routes/admin/settings/+page.svelte b/src/routes/admin/settings/+page.svelte new file mode 100644 index 0000000..99dafdc --- /dev/null +++ b/src/routes/admin/settings/+page.svelte @@ -0,0 +1,108 @@ + + +
+

系统设置

+
+ +
+
+

博客信息

+
+ 博客名称 + BlogFlare +
+
+ 主题风格 + Typecho Theme VOID +
+
+ 驱动框架 + SvelteKit 5 + Cloudflare +
+
+ +
+

安全与环境

+
+ 当前管理员 + {data.user?.email || '未知用户'} +
+
+ 数据库绑定 + {data.platformEnv} +
+
+ 鉴权模式 + Cloudflare Access (Zero Trust) +
+
+
+ +