import { apiClient } from '@/shared/api/client' import type { ApiResponse, PaginatedResult } from '@/shared/types/types' import type { RealnameStatusValue, RiskStatus, UserStatus } from '@/shared/types/status' export interface AdminUserItem { id: number phone: string nickname: string realname_status: RealnameStatusValue risk_status: RiskStatus credit_score: number deposit_free_quota_cent: number deposit_free_used_cent: number deposit_free_remaining_cent: number status: UserStatus order_count: number listing_count: number dispute_count: number last_login_at?: string created_at: string updated_at: string } export interface AdminUserQuery { keyword?: string status?: '' | UserStatus } export async function fetchAdminUsers(page = 1, pageSize = 20, query: AdminUserQuery = {}) { const params: Record = { page, page_size: pageSize } if (query.keyword) params.keyword = query.keyword if (query.status) params.status = query.status const { data } = await apiClient.get>>( '/admin/users', { params, } ) return data.data } export async function freezeAdminUser(id: number, reason: string) { const { data } = await apiClient.post>(`/admin/users/${id}/freeze`, { reason, }) return data.data } export async function unfreezeAdminUser(id: number) { const { data } = await apiClient.post>(`/admin/users/${id}/unfreeze`) return data.data } export async function setAdminUserDepositFreeQuota(id: number, amountCent: number) { const { data } = await apiClient.post>( `/admin/users/${id}/deposit-free-quota`, { amount_cent: amountCent } ) return data.data } export async function revokeAdminUserRealname(id: number, reason: string) { const { data } = await apiClient.post>( `/admin/users/${id}/revoke-realname`, { reason } ) return data.data }