From 5d2cf49d96d6d5ea541d4091ed2c86e1f2b031d5 Mon Sep 17 00:00:00 2001 From: anghunk Date: Wed, 21 Jan 2026 22:35:59 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=95=B0=E6=8D=AE=E5=88=86=E6=9E=90):=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=9F=9F=E5=90=8D=E8=BF=87=E6=BB=A4=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=B9=B6=E6=8C=81=E4=B9=85=E5=8C=96=E5=AD=98=E5=82=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在评论、统计和访问分析页面添加域名过滤功能 - 使用localStorage持久化存储用户选择的域名过滤条件 - 新增30天访问趋势图表展示 - 优化API接口支持按域名过滤数据 - 添加每日访问统计记录功能 --- cwd-admin/src/api/admin.ts | 34 +++- cwd-admin/src/views/AnalyticsVisitView.vue | 220 +++++++++++++++++++-- cwd-admin/src/views/CommentsView.vue | 19 +- cwd-admin/src/views/StatsView.vue | 66 ++++++- cwd-api/src/api/admin/getStats.ts | 97 ++++++--- cwd-api/src/api/admin/visitAnalytics.ts | 141 +++++++++++-- cwd-api/src/api/public/trackVisit.ts | 78 +++++++- 7 files changed, 574 insertions(+), 81 deletions(-) diff --git a/cwd-admin/src/api/admin.ts b/cwd-admin/src/api/admin.ts index 86b8234..8547c44 100644 --- a/cwd-admin/src/api/admin.ts +++ b/cwd-admin/src/api/admin.ts @@ -86,6 +86,10 @@ export type CommentStatsResponse = { export type VisitOverviewResponse = { totalPv: number; totalPages: number; + last30Days?: { + date: string; + total: number; + }[]; }; export type VisitPageItem = { @@ -226,14 +230,32 @@ export function importComments(data: any[]): Promise<{ message: string }> { return post<{ message: string }>('/admin/comments/import', data); } -export function fetchCommentStats(): Promise { - return get('/admin/stats/comments'); +export function fetchCommentStats(domain?: string): Promise { + const searchParams = new URLSearchParams(); + if (domain) { + searchParams.set('domain', domain); + } + const query = searchParams.toString(); + const url = query ? `/admin/stats/comments?${query}` : '/admin/stats/comments'; + return get(url); } -export function fetchVisitOverview(): Promise { - return get('/admin/analytics/overview'); +export function fetchVisitOverview(domain?: string): Promise { + const searchParams = new URLSearchParams(); + if (domain) { + searchParams.set('domain', domain); + } + const query = searchParams.toString(); + const url = query ? `/admin/analytics/overview?${query}` : '/admin/analytics/overview'; + return get(url); } -export function fetchVisitPages(): Promise { - return get('/admin/analytics/pages'); +export function fetchVisitPages(domain?: string): Promise { + const searchParams = new URLSearchParams(); + if (domain) { + searchParams.set('domain', domain); + } + const query = searchParams.toString(); + const url = query ? `/admin/analytics/pages?${query}` : '/admin/analytics/pages'; + return get(url); } diff --git a/cwd-admin/src/views/AnalyticsVisitView.vue b/cwd-admin/src/views/AnalyticsVisitView.vue index fb7178c..c2c1b9c 100644 --- a/cwd-admin/src/views/AnalyticsVisitView.vue +++ b/cwd-admin/src/views/AnalyticsVisitView.vue @@ -1,6 +1,18 @@ - diff --git a/cwd-admin/src/views/CommentsView.vue b/cwd-admin/src/views/CommentsView.vue index b287e19..4851246 100644 --- a/cwd-admin/src/views/CommentsView.vue +++ b/cwd-admin/src/views/CommentsView.vue @@ -251,7 +251,7 @@