优化客服会话筛选

This commit is contained in:
yml
2026-06-18 01:08:54 +08:00
parent 272b2cb71e
commit 7dc7368367
8 changed files with 567 additions and 98 deletions
+31 -6
View File
@@ -18,6 +18,11 @@ export interface ChatConversation {
id: number
order_id: number | null
listing_id?: number | null
latest_order_id?: number | null
latest_order_no?: string
latest_order_status?: string
latest_handoff_status?: string
latest_refund_status?: string
type: string
title: string
status: string
@@ -26,11 +31,29 @@ export interface ChatConversation {
last_message_id?: number
last_message_preview: string
last_message_at?: string
last_sender_type?: 'user' | 'admin' | 'system'
last_sender_id?: number
last_sender_role?: string
unread_count: number
created_at: string
updated_at: string
}
export interface AdminChatCounts {
ownership?: Record<string, number>
stages?: Record<string, number>
}
export interface AdminChatQuery {
filter?: string
stage?: string
keyword?: string
}
export type AdminChatResult = PaginatedResult<ChatConversation> & {
counts?: AdminChatCounts
}
export interface ChatMessage {
id: number
conversation_id: number
@@ -102,13 +125,15 @@ export async function markChatRead(id: number) {
return data.data
}
export async function fetchAdminChats(page = 1, pageSize = 50, filter = 'all') {
const { data } = await apiClient.get<ApiResponse<PaginatedResult<ChatConversation>>>(
'/admin/chats',
{
params: { page, page_size: pageSize, filter },
}
export async function fetchAdminChats(page = 1, pageSize = 50, query: AdminChatQuery = {}) {
const params = Object.fromEntries(
Object.entries({ page, page_size: pageSize, ...query }).filter(
([, value]) => value !== '' && value !== undefined
)
)
const { data } = await apiClient.get<ApiResponse<AdminChatResult>>('/admin/chats', {
params,
})
return data.data
}