170 lines
6.2 KiB
TypeScript
170 lines
6.2 KiB
TypeScript
import { apiGet, apiGetBlob, apiPost } from '@/lib/http'
|
|
import type {
|
|
AdminAgisoObservedShopItem,
|
|
AdminAgisoShopConfigItem,
|
|
AdminAuditLogItem,
|
|
AdminInventoryItemListItem,
|
|
AdminTaskActionResponse,
|
|
AdminDashboardSummary,
|
|
AdminLoginResponse,
|
|
AdminOrderDetail,
|
|
AdminOrderListItem,
|
|
AdminPagination,
|
|
AdminSessionSummary,
|
|
AdminTaskDetail,
|
|
AdminTaskListItem,
|
|
AdminUserListItem,
|
|
AdminWebhookEventDetail,
|
|
AdminWebhookEventListItem,
|
|
AdminWebhookReplayResponse,
|
|
} from '@/types/admin'
|
|
|
|
export function loginAdmin(payload: { username: string; password: string }) {
|
|
return apiPost<AdminLoginResponse>('/api/v1/admin/auth/login', payload)
|
|
}
|
|
|
|
export function fetchAdminSession() {
|
|
return apiGet<AdminSessionSummary>('/api/v1/admin/auth/session')
|
|
}
|
|
|
|
export function logoutAdmin() {
|
|
return apiPost<{ success: boolean }>('/api/v1/admin/auth/logout', {})
|
|
}
|
|
|
|
export function fetchAdminDashboardSummary() {
|
|
return apiGet<AdminDashboardSummary>('/api/v1/admin/dashboard/summary')
|
|
}
|
|
|
|
export function fetchAdminUsers(params?: Record<string, unknown>) {
|
|
return apiGet<{ items: AdminUserListItem[]; pagination: AdminPagination }>('/api/v1/admin/users', params)
|
|
}
|
|
|
|
export function createAdminUser(payload: { username: string; password: string; role: string; status?: string }) {
|
|
return apiPost<{ user: AdminUserListItem }>('/api/v1/admin/users', payload)
|
|
}
|
|
|
|
export function updateAdminUserRole(userId: number | string, payload: { role: string }) {
|
|
return apiPost<{ user: AdminUserListItem }>(`/api/v1/admin/users/${userId}/role`, payload)
|
|
}
|
|
|
|
export function updateAdminUserStatus(userId: number | string, payload: { status: string }) {
|
|
return apiPost<{ user: AdminUserListItem }>(`/api/v1/admin/users/${userId}/status`, payload)
|
|
}
|
|
|
|
export function resetAdminUserPassword(userId: number | string, payload: { password: string }) {
|
|
return apiPost<{ user: AdminUserListItem }>(`/api/v1/admin/users/${userId}/reset-password`, payload)
|
|
}
|
|
|
|
export function fetchAdminAuditLogs(params?: Record<string, unknown>) {
|
|
return apiGet<{ items: AdminAuditLogItem[]; pagination: AdminPagination }>('/api/v1/admin/audit-logs', params)
|
|
}
|
|
|
|
export function fetchAdminAgisoShopConfigs() {
|
|
return apiGet<{
|
|
filePath: string
|
|
shops: AdminAgisoShopConfigItem[]
|
|
observedShops: AdminAgisoObservedShopItem[]
|
|
}>('/api/v1/admin/platform-config/agiso-shops')
|
|
}
|
|
|
|
export function saveAdminAgisoShopConfigs(payload: { shops: Array<Record<string, unknown>> }) {
|
|
return apiPost<{
|
|
filePath: string
|
|
shops: AdminAgisoShopConfigItem[]
|
|
}>('/api/v1/admin/platform-config/agiso-shops', payload)
|
|
}
|
|
|
|
export function fetchAdminOrders(params?: Record<string, unknown>) {
|
|
return apiGet<{ items: AdminOrderListItem[]; pagination: AdminPagination }>('/api/v1/admin/orders', params)
|
|
}
|
|
|
|
export function fetchAdminOrderDetail(orderId: number | string) {
|
|
return apiGet<AdminOrderDetail>(`/api/v1/admin/orders/${orderId}`)
|
|
}
|
|
|
|
export function fetchAdminTasks(params?: Record<string, unknown>) {
|
|
return apiGet<{ items: AdminTaskListItem[]; pagination: AdminPagination }>('/api/v1/admin/tasks', params)
|
|
}
|
|
|
|
export function fetchAdminTaskDetail(taskId: number | string) {
|
|
return apiGet<AdminTaskDetail>(`/api/v1/admin/tasks/${taskId}`)
|
|
}
|
|
|
|
export function fetchAdminTaskScreenshot(taskId: number | string) {
|
|
return apiGetBlob(`/api/v1/admin/tasks/${taskId}/screenshot`)
|
|
}
|
|
|
|
export function retryAdminTask(taskId: number | string) {
|
|
return apiPost<AdminTaskActionResponse>(`/api/v1/admin/tasks/${taskId}/retry`, {})
|
|
}
|
|
|
|
export function releaseAdminTaskInventory(taskId: number | string) {
|
|
return apiPost<AdminTaskActionResponse>(`/api/v1/admin/tasks/${taskId}/release-inventory`, {})
|
|
}
|
|
|
|
export function releaseAdminTaskInventoryBinding(taskId: number | string, bindingId: number | string) {
|
|
return apiPost<AdminTaskActionResponse>(`/api/v1/admin/tasks/${taskId}/inventory-bindings/${bindingId}/release`, {})
|
|
}
|
|
|
|
export function regenerateAdminTaskClaimLink(taskId: number | string) {
|
|
return apiPost<AdminTaskActionResponse>(
|
|
`/api/v1/admin/tasks/${taskId}/regenerate-claim-link`,
|
|
{},
|
|
)
|
|
}
|
|
|
|
export function closeAdminTask(taskId: number | string) {
|
|
return apiPost<AdminTaskActionResponse>(`/api/v1/admin/tasks/${taskId}/close`, {})
|
|
}
|
|
|
|
export function markAdminTaskManualReview(taskId: number | string) {
|
|
return apiPost<AdminTaskActionResponse>(`/api/v1/admin/tasks/${taskId}/mark-manual-review`, {})
|
|
}
|
|
|
|
export function completeAdminTaskManualDispatch(
|
|
taskId: number | string,
|
|
payload: {
|
|
outcome: 'delivered' | 'failed'
|
|
resultMessage?: string
|
|
deliveryReference?: string
|
|
deliveredCredential?: string
|
|
},
|
|
) {
|
|
return apiPost<AdminTaskActionResponse>(`/api/v1/admin/tasks/${taskId}/complete-manual-dispatch`, payload)
|
|
}
|
|
|
|
export function fetchAdminInventoryItems(params?: Record<string, unknown>) {
|
|
return apiGet<{ items: AdminInventoryItemListItem[]; pagination: AdminPagination }>('/api/v1/admin/inventory', params)
|
|
}
|
|
|
|
export function importAdminInventoryItems(payload: Record<string, unknown>) {
|
|
return apiPost<{ total: number; created: number; duplicated: number }>('/api/v1/admin/inventory/import', payload)
|
|
}
|
|
|
|
export function createAdminInventoryItem(payload: Record<string, unknown>) {
|
|
return apiPost<{ inventoryItem: AdminInventoryItemListItem | null }>('/api/v1/admin/inventory', payload)
|
|
}
|
|
|
|
export function releaseAdminInventoryItem(inventoryItemId: number | string) {
|
|
return apiPost<{ inventoryItem: AdminInventoryItemListItem | null }>(`/api/v1/admin/inventory/${inventoryItemId}/release`, {})
|
|
}
|
|
|
|
export function invalidateAdminInventoryItem(inventoryItemId: number | string, payload?: Record<string, unknown>) {
|
|
return apiPost<{ inventoryItem: AdminInventoryItemListItem | null }>(`/api/v1/admin/inventory/${inventoryItemId}/invalidate`, payload || {})
|
|
}
|
|
|
|
export function fetchAdminWebhookEvents(params?: Record<string, unknown>) {
|
|
return apiGet<{ items: AdminWebhookEventListItem[]; pagination: AdminPagination }>(
|
|
'/api/v1/admin/webhook-events',
|
|
params,
|
|
)
|
|
}
|
|
|
|
export function fetchAdminWebhookEventDetail(eventId: number | string) {
|
|
return apiGet<AdminWebhookEventDetail>(`/api/v1/admin/webhook-events/${eventId}`)
|
|
}
|
|
|
|
export function replayAdminWebhookEvent(eventId: number | string) {
|
|
return apiPost<AdminWebhookReplayResponse>(`/api/v1/admin/webhook-events/${eventId}/replay`, {})
|
|
}
|