增加站内信未读提醒和后台通知中心+txt 校验

This commit is contained in:
yml2213
2026-06-19 15:24:15 +08:00
parent 8d5094a8d0
commit a4cdc3e806
30 changed files with 1836 additions and 53 deletions
@@ -0,0 +1,56 @@
import { apiClient } from '@/shared/api/client'
import type { ApiResponse, PaginatedResult } from '@/shared/types/types'
export type AdminNotificationType = 'system' | 'chat' | (string & {})
export interface AdminNotification {
id: number
admin_user_id: number
type: AdminNotificationType
title: string
content: string
is_read: boolean
created_at: string
updated_at: string
}
export interface AdminNotificationQuery {
read?: 'unread'
page?: number
page_size?: number
}
export async function fetchAdminNotifications(query: AdminNotificationQuery = {}) {
const params = Object.fromEntries(
Object.entries(query).filter(([, value]) => value !== '' && value !== undefined)
)
const { data } = await apiClient.get<ApiResponse<PaginatedResult<AdminNotification>>>(
'/admin/notifications',
{ params }
)
return data.data
}
export async function fetchAdminNotificationUnreadCount() {
const { data } = await apiClient.get<ApiResponse<{ unread_count: number }>>(
'/admin/notifications/unread-count',
{
silent: true,
}
)
return data.data.unread_count
}
export async function markAdminNotificationRead(id: number) {
const { data } = await apiClient.post<ApiResponse<{ read: boolean }>>(
`/admin/notifications/${id}/read`
)
return data.data
}
export async function markAllAdminNotificationsRead() {
const { data } = await apiClient.put<ApiResponse<{ read_count: number }>>(
'/admin/notifications/read-all'
)
return data.data
}