From 9af558286bc48207c6919de4bdb30d13b4428385 Mon Sep 17 00:00:00 2001 From: richarjiang Date: Thu, 10 Sep 2026 19:23:08 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=B8=85=E7=90=86=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=B8=AD=E5=BF=83=20fetchDashboardStats=20=E4=B8=8E=20GET=20/a?= =?UTF-8?q?dmin/stats=20=E5=B7=B2=E6=97=A0=E7=94=A8=E7=9A=84=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/app/src/pages/admin/stores/admin.ts | 15 +---------- packages/server/src/admin/admin.controller.ts | 27 +------------------ 2 files changed, 2 insertions(+), 40 deletions(-) diff --git a/packages/app/src/pages/admin/stores/admin.ts b/packages/app/src/pages/admin/stores/admin.ts index 181f455..6d34c3a 100644 --- a/packages/app/src/pages/admin/stores/admin.ts +++ b/packages/app/src/pages/admin/stores/admin.ts @@ -54,12 +54,6 @@ function normalizePaginatedData( } } -export interface AdminStats { - todayBookings: number - totalOrders: number - totalBookings: number -} - export type MemberSummary = AdminMemberSummary export interface UserMembership { @@ -264,12 +258,7 @@ export const useAdminStore = defineStore('admin', () => { await fetchSchedulePreview(dto.date) } - // ── Dashboard stats ────────────────────────────────────────────── - async function fetchDashboardStats(): Promise { - return get('/admin/stats') - } - - // ── Teaching analytics ───────────────────────────────────────── +// ── Teaching analytics ───────────────────────────────────────── async function fetchTeachingAnalytics(month: string): Promise { return get('/admin/teaching-analytics', { month }) } @@ -315,7 +304,5 @@ export const useAdminStore = defineStore('admin', () => { fetchSchedulePreview, previewScheduleByDate, publishDaySlots, - // Stats - fetchDashboardStats, } }) diff --git a/packages/server/src/admin/admin.controller.ts b/packages/server/src/admin/admin.controller.ts index 51e7a91..6135193 100644 --- a/packages/server/src/admin/admin.controller.ts +++ b/packages/server/src/admin/admin.controller.ts @@ -4,40 +4,15 @@ import { JwtAuthGuard } from '../auth/jwt-auth.guard' import { Roles } from '../auth/roles.decorator' import { RolesGuard } from '../auth/roles.guard' import { UserRole } from '@mp-pilates/shared' -import { PrismaService } from '../prisma/prisma.service' - -interface AdminStats { - todayBookings: number - totalOrders: number - totalBookings: number -} @Controller('admin') @UseGuards(JwtAuthGuard, RolesGuard) @Roles(UserRole.ADMIN) export class AdminController { - constructor(private readonly prisma: PrismaService, private readonly analytics: TeachingAnalyticsService) {} + constructor(private readonly analytics: TeachingAnalyticsService) {} @Get('teaching-analytics') getTeachingAnalytics(@Query('month') month: string) { return this.analytics.getMonthly(month) } - - @Get('stats') - async getStats(): Promise { - const today = new Date() - today.setUTCHours(0, 0, 0, 0) - - const [todayBookings, totalOrders, totalBookings] = await Promise.all([ - this.prisma.booking.count({ - where: { - timeSlot: { date: today }, - }, - }), - this.prisma.order.count(), - this.prisma.booking.count(), - ]) - - return { todayBookings, totalOrders, totalBookings } - } } \ No newline at end of file