import type { AdminUser, DashboardStats, AuditLog, } from '@/types/admin' import type { PaginatedResult, PaginationParams } from '@/types/api' import { api } from './http-client' import { MOCK_DASHBOARD_STATS, MOCK_AUDIT_LOGS } from './mock-data' // ── Auth ────────────────────────────────────────────── interface LoginResponse { accessToken: string refreshToken: string adminUser: AdminUser } export function loginAdmin(email: string, password: string): Promise { return api.post('/admin-api/auth/login', { email, password }) } interface TokenPair { accessToken: string refreshToken: string adminUser: AdminUser } export function refreshAdminToken(refreshToken: string): Promise { return api.post('/admin-api/auth/refresh', { refreshToken }) } export function logoutAdmin(refreshToken: string): Promise { return api.post('/admin-api/auth/logout', { refreshToken }) } export function getCurrentAdmin(): Promise { return api.get('/admin-api/auth/me') } // ── Dashboard ───────────────────────────────────────── export async function getDashboardStats(): Promise { try { return await api.get('/admin-api/dashboard/stats') } catch { if (import.meta.env.DEV) return MOCK_DASHBOARD_STATS throw new Error('获取仪表盘数据失败') } } // ── Admin Users ─────────────────────────────────────── export interface AdminUsersQuery extends PaginationParams { search?: string role?: string status?: string } export async function getAdminUsers( params: AdminUsersQuery, ): Promise> { try { return await api.get>( `/admin-api/admin-users?${new URLSearchParams(params as Record).toString()}`, ) } catch { if (import.meta.env.DEV) { return { items: [], total: 0, page: params.page ?? 1, limit: params.limit ?? 20, totalPages: 0, } } throw new Error('获取管理员列表失败') } } export function getAdminUserById(id: string): Promise { return api.get(`/admin-api/admin-users/${id}`) } export function createAdminUser(data: { email: string password: string displayName: string role: string }): Promise { return api.post('/admin-api/admin-users', data) } export function updateAdminUser( id: string, data: { role?: string; status?: string; displayName?: string }, ): Promise { return api.put(`/admin-api/admin-users/${id}`, data) } export function deleteAdminUser(id: string): Promise { return api.delete(`/admin-api/admin-users/${id}`) } // ── Audit Logs ──────────────────────────────────────── export interface AuditLogsQuery extends PaginationParams { adminUserId?: string action?: string startDate?: string endDate?: string } export async function getAuditLogs( params: AuditLogsQuery, ): Promise> { try { return await api.get>( `/admin-api/audit-logs?${new URLSearchParams(params as Record).toString()}`, ) } catch { if (import.meta.env.DEV) { return { items: MOCK_AUDIT_LOGS, total: MOCK_AUDIT_LOGS.length, page: params.page ?? 1, limit: params.limit ?? 20, totalPages: 1, } } throw new Error('获取审计日志失败') } } export function getAuditLogById(id: string): Promise { return api.get(`/admin-api/audit-logs/${id}`) }