This commit is contained in:
SunSeekerX
2026-01-21 11:55:28 +08:00
149 changed files with 15035 additions and 4017 deletions

View File

@@ -1,262 +1,336 @@
import axios from 'axios'
import { APP_CONFIG, getLoginUrl } from '@/config/app'
export const API_PREFIX = APP_CONFIG.apiPrefix
const axiosInstance = axios.create({
baseURL: APP_CONFIG.apiPrefix,
timeout: 30000,
headers: { 'Content-Type': 'application/json' }
})
axiosInstance.interceptors.request.use((config) => {
const token = localStorage.getItem('authToken')
if (token) config.headers['Authorization'] = `Bearer ${token}`
return config
})
axiosInstance.interceptors.response.use(
(response) => response.data,
(error) => {
if (error.response?.status === 401) {
const path = window.location.pathname + window.location.hash
if (!path.includes('/login') && !path.endsWith('/')) {
localStorage.removeItem('authToken')
window.location.href = getLoginUrl()
}
}
return Promise.reject(error)
}
)
// 通用请求函数 - 只会 resolve调用方无需 try-catch
const request = async (config) => {
try {
return await axiosInstance(config)
} catch (error) {
console.error('Request failed:', error)
const data = error.response?.data
if (data && typeof data.success !== 'undefined') return data
const status = error.response?.status
const messages = {
401: '未授权,请重新登录',
403: '无权限访问',
404: '请求的资源不存在',
500: '服务器内部错误'
}
return { success: false, message: messages[status] || error.message || '请求失败' }
}
}
const get = (url, config) => request({ method: 'get', url, ...config })
const post = (url, data, config) => request({ method: 'post', url, data, ...config })
const put = (url, data, config) => request({ method: 'put', url, data, ...config })
const patch = (url, data, config) => request({ method: 'patch', url, data, ...config })
const del = (url, config) => request({ method: 'delete', url, ...config })
import request from '@/utils/request'
// 模型
export const getModels = () => get('/apiStats/models')
export const getModelsByService = (service) => get('/apiStats/models', { params: { service } })
// API Key 测试
export const testClaudeApiKey = (data) => post('/apiStats/api-key/test', data)
export const testGeminiApiKey = (data) => post('/apiStats/api-key/test-gemini', data)
export const testOpenAIApiKey = (data) => post('/apiStats/api-key/test-openai', data)
export const getModelsApi = () => request({ url: '/apiStats/models', method: 'GET' })
// API Stats
export const getKeyId = (apiKey) => post('/apiStats/api/get-key-id', { apiKey })
export const getUserStats = (apiId) => post('/apiStats/api/user-stats', { apiId })
export const getUserModelStats = (apiId, period = 'daily') =>
post('/apiStats/api/user-model-stats', { apiId, period })
export const getBatchStats = (apiIds) => post('/apiStats/api/batch-stats', { apiIds })
export const getBatchModelStats = (apiIds, period = 'daily') =>
post('/apiStats/api/batch-model-stats', { apiIds, period })
export const getKeyIdApi = (apiKey) =>
request({ url: '/apiStats/api/get-key-id', method: 'POST', data: { apiKey } })
export const getUserStatsApi = (apiId) =>
request({ url: '/apiStats/api/user-stats', method: 'POST', data: { apiId } })
export const getUserModelStatsApi = (apiId, period = 'daily') =>
request({ url: '/apiStats/api/user-model-stats', method: 'POST', data: { apiId, period } })
export const getBatchStatsApi = (apiIds) =>
request({ url: '/apiStats/api/batch-stats', method: 'POST', data: { apiIds } })
export const getBatchModelStatsApi = (apiIds, period = 'daily') =>
request({ url: '/apiStats/api/batch-model-stats', method: 'POST', data: { apiIds, period } })
// 认证
export const login = (credentials) => post('/web/auth/login', credentials)
export const getAuthUser = () => get('/web/auth/user')
export const loginApi = (data) => request({ url: '/web/auth/login', method: 'POST', data })
export const getAuthUserApi = () => request({ url: '/web/auth/user', method: 'GET' })
export const changePasswordApi = (data) =>
request({ url: '/web/auth/change-password', method: 'POST', data })
// OEM 设置
export const getOemSettings = () => get('/admin/oem-settings')
export const updateOemSettings = (data) => put('/admin/oem-settings', data)
export const getOemSettingsApi = () => request({ url: '/admin/oem-settings', method: 'GET' })
export const updateOemSettingsApi = (data) =>
request({ url: '/admin/oem-settings', method: 'PUT', data })
// 服务倍率配置(公开接口)
export const getServiceRates = () => get('/apiStats/service-rates')
export const getServiceRatesApi = () => request({ url: '/apiStats/service-rates', method: 'GET' })
// 额度卡兑换(公开接口)
export const redeemCardByApiIdApi = (data) =>
request({ url: '/apiStats/api/redeem-card', method: 'POST', data })
export const getRedemptionHistoryByApiIdApi = (apiId, params = {}) =>
request({ url: '/apiStats/api/redemption-history', method: 'GET', params: { apiId, ...params } })
// 仪表板
export const getDashboard = () => get('/admin/dashboard')
export const getUsageCosts = (period) => get(`/admin/usage-costs?period=${period}`)
export const getUsageStats = (url) => get(url)
export const getDashboardApi = () => request({ url: '/admin/dashboard', method: 'GET' })
export const getUsageCostsApi = (period) =>
request({ url: `/admin/usage-costs?period=${period}`, method: 'GET' })
export const getUsageStatsApi = (url) => request({ url, method: 'GET' })
// 客户端
export const getSupportedClients = () => get('/admin/supported-clients')
export const getSupportedClientsApi = () =>
request({ url: '/admin/supported-clients', method: 'GET' })
// API Keys
export const getApiKeys = () => get('/admin/api-keys')
export const getApiKeysWithParams = (params) => get(`/admin/api-keys?${params}`)
export const createApiKey = (data) => post('/admin/api-keys', data)
export const updateApiKey = (id, data) => put(`/admin/api-keys/${id}`, data)
export const toggleApiKey = (id) => put(`/admin/api-keys/${id}/toggle`)
export const deleteApiKey = (id) => del(`/admin/api-keys/${id}`)
export const getApiKeyStats = (id, params) => get(`/admin/api-keys/${id}/stats`, { params })
export const getApiKeyTags = () => get('/admin/api-keys/tags')
export const getApiKeyUsedModels = () => get('/admin/api-keys/used-models')
export const getApiKeysBatchStats = (data) => post('/admin/api-keys/batch-stats', data)
export const getApiKeysBatchLastUsage = (data) => post('/admin/api-keys/batch-last-usage', data)
export const getDeletedApiKeys = () => get('/admin/api-keys/deleted')
export const getApiKeysCostSortStatus = () => get('/admin/api-keys/cost-sort-status')
export const restoreApiKey = (id) => post(`/admin/api-keys/${id}/restore`)
export const permanentDeleteApiKey = (id) => del(`/admin/api-keys/${id}/permanent`)
export const clearAllDeletedApiKeys = () => del('/admin/api-keys/deleted/clear-all')
export const batchDeleteApiKeys = (data) => del('/admin/api-keys/batch', { data })
export const updateApiKeyExpiration = (id, data) =>
request({ method: 'patch', url: `/admin/api-keys/${id}/expiration`, data })
export const getApiKeysApi = () => request({ url: '/admin/api-keys', method: 'GET' })
export const getApiKeysWithParamsApi = (params) =>
request({ url: `/admin/api-keys?${params}`, method: 'GET' })
export const createApiKeyApi = (data) => request({ url: '/admin/api-keys', method: 'POST', data })
export const updateApiKeyApi = (id, data) =>
request({ url: `/admin/api-keys/${id}`, method: 'PUT', data })
export const toggleApiKeyApi = (id) =>
request({ url: `/admin/api-keys/${id}/toggle`, method: 'PUT' })
export const deleteApiKeyApi = (id) => request({ url: `/admin/api-keys/${id}`, method: 'DELETE' })
export const getApiKeyStatsApi = (id, params) =>
request({ url: `/admin/api-keys/${id}/stats`, method: 'GET', params })
export const getApiKeyModelStatsApi = (id, params) =>
request({ url: `/admin/api-keys/${id}/model-stats`, method: 'GET', params })
export const getApiKeyTagsApi = () => request({ url: '/admin/api-keys/tags', method: 'GET' })
export const getApiKeyTagsDetailsApi = () =>
request({ url: '/admin/api-keys/tags/details', method: 'GET' })
export const createApiKeyTagApi = (name) =>
request({ url: '/admin/api-keys/tags', method: 'POST', data: { name } })
export const deleteApiKeyTagApi = (tagName) =>
request({ url: `/admin/api-keys/tags/${encodeURIComponent(tagName)}`, method: 'DELETE' })
export const renameApiKeyTagApi = (tagName, newName) =>
request({
url: `/admin/api-keys/tags/${encodeURIComponent(tagName)}`,
method: 'PUT',
data: { newName }
})
export const getApiKeyUsedModelsApi = () =>
request({ url: '/admin/api-keys/used-models', method: 'GET' })
export const getApiKeysBatchStatsApi = (data) =>
request({ url: '/admin/api-keys/batch-stats', method: 'POST', data })
export const getApiKeysBatchLastUsageApi = (data) =>
request({ url: '/admin/api-keys/batch-last-usage', method: 'POST', data })
export const getDeletedApiKeysApi = () => request({ url: '/admin/api-keys/deleted', method: 'GET' })
export const getApiKeysCostSortStatusApi = () =>
request({ url: '/admin/api-keys/cost-sort-status', method: 'GET' })
export const restoreApiKeyApi = (id) =>
request({ url: `/admin/api-keys/${id}/restore`, method: 'POST' })
export const permanentDeleteApiKeyApi = (id) =>
request({ url: `/admin/api-keys/${id}/permanent`, method: 'DELETE' })
export const clearAllDeletedApiKeysApi = () =>
request({ url: '/admin/api-keys/deleted/clear-all', method: 'DELETE' })
export const batchDeleteApiKeysApi = (data) =>
request({ url: '/admin/api-keys/batch', method: 'DELETE', data })
export const updateApiKeyExpirationApi = (id, data) =>
request({ url: `/admin/api-keys/${id}/expiration`, method: 'PATCH', data })
export const batchCreateApiKeysApi = (data) =>
request({ url: '/admin/api-keys/batch', method: 'POST', data })
export const batchUpdateApiKeysApi = (data) =>
request({ url: '/admin/api-keys/batch', method: 'PUT', data })
export const getApiKeyUsageRecordsApi = (id, params) =>
request({ url: `/admin/api-keys/${id}/usage-records`, method: 'GET', params })
// Claude 账户
export const getClaudeAccounts = () => get('/admin/claude-accounts')
export const createClaudeAccount = (data) => post('/admin/claude-accounts', data)
export const updateClaudeAccount = (id, data) => put(`/admin/claude-accounts/${id}`, data)
export const deleteClaudeAccount = (id) => del(`/admin/claude-accounts/${id}`)
export const refreshClaudeAccount = (id) => post(`/admin/claude-accounts/${id}/refresh`)
export const generateClaudeAuthUrl = (data) =>
post('/admin/claude-accounts/generate-auth-url', data)
export const exchangeClaudeCode = (data) => post('/admin/claude-accounts/exchange-code', data)
export const generateClaudeSetupTokenUrl = (data) =>
post('/admin/claude-accounts/generate-setup-token-url', data)
export const exchangeClaudeSetupToken = (data) =>
post('/admin/claude-accounts/exchange-setup-token', data)
export const claudeOAuthWithCookie = (data) =>
post('/admin/claude-accounts/oauth-with-cookie', data)
export const claudeSetupTokenWithCookie = (data) =>
post('/admin/claude-accounts/setup-token-with-cookie', data)
export const generateClaudeWorkosAuthUrl = (data) =>
post('/admin/claude-accounts/generate-workos-auth-url', data)
export const getClaudeAccountsApi = () => request({ url: '/admin/claude-accounts', method: 'GET' })
export const createClaudeAccountApi = (data) =>
request({ url: '/admin/claude-accounts', method: 'POST', data })
export const updateClaudeAccountApi = (id, data) =>
request({ url: `/admin/claude-accounts/${id}`, method: 'PUT', data })
export const refreshClaudeAccountApi = (id) =>
request({ url: `/admin/claude-accounts/${id}/refresh`, method: 'POST' })
export const generateClaudeAuthUrlApi = (data) =>
request({ url: '/admin/claude-accounts/generate-auth-url', method: 'POST', data })
export const exchangeClaudeCodeApi = (data) =>
request({ url: '/admin/claude-accounts/exchange-code', method: 'POST', data })
export const generateClaudeSetupTokenUrlApi = (data) =>
request({ url: '/admin/claude-accounts/generate-setup-token-url', method: 'POST', data })
export const exchangeClaudeSetupTokenApi = (data) =>
request({ url: '/admin/claude-accounts/exchange-setup-token', method: 'POST', data })
export const claudeOAuthWithCookieApi = (data) =>
request({ url: '/admin/claude-accounts/oauth-with-cookie', method: 'POST', data })
export const claudeSetupTokenWithCookieApi = (data) =>
request({ url: '/admin/claude-accounts/setup-token-with-cookie', method: 'POST', data })
// Claude Console 账户
export const getClaudeConsoleAccounts = () => get('/admin/claude-console-accounts')
export const createClaudeConsoleAccount = (data) => post('/admin/claude-console-accounts', data)
export const updateClaudeConsoleAccount = (id, data) =>
put(`/admin/claude-console-accounts/${id}`, data)
export const deleteClaudeConsoleAccount = (id) => del(`/admin/claude-console-accounts/${id}`)
export const getClaudeConsoleAccountsApi = () =>
request({ url: '/admin/claude-console-accounts', method: 'GET' })
export const createClaudeConsoleAccountApi = (data) =>
request({ url: '/admin/claude-console-accounts', method: 'POST', data })
export const updateClaudeConsoleAccountApi = (id, data) =>
request({ url: `/admin/claude-console-accounts/${id}`, method: 'PUT', data })
// Bedrock 账户
export const getBedrockAccounts = () => get('/admin/bedrock-accounts')
export const createBedrockAccount = (data) => post('/admin/bedrock-accounts', data)
export const updateBedrockAccount = (id, data) => put(`/admin/bedrock-accounts/${id}`, data)
export const deleteBedrockAccount = (id) => del(`/admin/bedrock-accounts/${id}`)
export const getBedrockAccountsApi = () =>
request({ url: '/admin/bedrock-accounts', method: 'GET' })
export const createBedrockAccountApi = (data) =>
request({ url: '/admin/bedrock-accounts', method: 'POST', data })
export const updateBedrockAccountApi = (id, data) =>
request({ url: `/admin/bedrock-accounts/${id}`, method: 'PUT', data })
// Gemini 账户
export const getGeminiAccounts = () => get('/admin/gemini-accounts')
export const createGeminiAccount = (data) => post('/admin/gemini-accounts', data)
export const updateGeminiAccount = (id, data) => put(`/admin/gemini-accounts/${id}`, data)
export const deleteGeminiAccount = (id) => del(`/admin/gemini-accounts/${id}`)
export const generateGeminiAuthUrl = (data) =>
post('/admin/gemini-accounts/generate-auth-url', data)
export const exchangeGeminiCode = (data) => post('/admin/gemini-accounts/exchange-code', data)
export const getGeminiAccountsApi = () => request({ url: '/admin/gemini-accounts', method: 'GET' })
export const createGeminiAccountApi = (data) =>
request({ url: '/admin/gemini-accounts', method: 'POST', data })
export const updateGeminiAccountApi = (id, data) =>
request({ url: `/admin/gemini-accounts/${id}`, method: 'PUT', data })
export const generateGeminiAuthUrlApi = (data) =>
request({ url: '/admin/gemini-accounts/generate-auth-url', method: 'POST', data })
export const exchangeGeminiCodeApi = (data) =>
request({ url: '/admin/gemini-accounts/exchange-code', method: 'POST', data })
// Gemini API 账户
export const createGeminiApiAccount = (data) => post('/admin/gemini-api-accounts', data)
export const updateGeminiApiAccount = (id, data) => put(`/admin/gemini-api-accounts/${id}`, data)
export const getGeminiApiAccountsApi = () =>
request({ url: '/admin/gemini-api-accounts', method: 'GET' })
export const createGeminiApiAccountApi = (data) =>
request({ url: '/admin/gemini-api-accounts', method: 'POST', data })
export const updateGeminiApiAccountApi = (id, data) =>
request({ url: `/admin/gemini-api-accounts/${id}`, method: 'PUT', data })
// OpenAI 账户
export const getOpenAIAccounts = () => get('/admin/openai-accounts')
export const createOpenAIAccount = (data) => post('/admin/openai-accounts', data)
export const updateOpenAIAccount = (id, data) => put(`/admin/openai-accounts/${id}`, data)
export const deleteOpenAIAccount = (id) => del(`/admin/openai-accounts/${id}`)
export const generateOpenAIAuthUrl = (data) =>
post('/admin/openai-accounts/generate-auth-url', data)
export const exchangeOpenAICode = (data) => post('/admin/openai-accounts/exchange-code', data)
export const getOpenAIAccountsApi = () => request({ url: '/admin/openai-accounts', method: 'GET' })
export const createOpenAIAccountApi = (data) =>
request({ url: '/admin/openai-accounts', method: 'POST', data })
export const updateOpenAIAccountApi = (id, data) =>
request({ url: `/admin/openai-accounts/${id}`, method: 'PUT', data })
export const generateOpenAIAuthUrlApi = (data) =>
request({ url: '/admin/openai-accounts/generate-auth-url', method: 'POST', data })
export const exchangeOpenAICodeApi = (data) =>
request({ url: '/admin/openai-accounts/exchange-code', method: 'POST', data })
// OpenAI Responses 账户
export const getOpenAIResponsesAccounts = () => get('/admin/openai-responses-accounts')
export const createOpenAIResponsesAccount = (data) => post('/admin/openai-responses-accounts', data)
export const updateOpenAIResponsesAccount = (id, data) =>
put(`/admin/openai-responses-accounts/${id}`, data)
export const deleteOpenAIResponsesAccount = (id) => del(`/admin/openai-responses-accounts/${id}`)
export const getOpenAIResponsesAccountsApi = () =>
request({ url: '/admin/openai-responses-accounts', method: 'GET' })
export const createOpenAIResponsesAccountApi = (data) =>
request({ url: '/admin/openai-responses-accounts', method: 'POST', data })
export const updateOpenAIResponsesAccountApi = (id, data) =>
request({ url: `/admin/openai-responses-accounts/${id}`, method: 'PUT', data })
// Azure OpenAI 账户
export const getAzureOpenAIAccounts = () => get('/admin/azure-openai-accounts')
export const createAzureOpenAIAccount = (data) => post('/admin/azure-openai-accounts', data)
export const updateAzureOpenAIAccount = (id, data) =>
put(`/admin/azure-openai-accounts/${id}`, data)
export const deleteAzureOpenAIAccount = (id) => del(`/admin/azure-openai-accounts/${id}`)
export const getAzureOpenAIAccountsApi = () =>
request({ url: '/admin/azure-openai-accounts', method: 'GET' })
export const createAzureOpenAIAccountApi = (data) =>
request({ url: '/admin/azure-openai-accounts', method: 'POST', data })
export const updateAzureOpenAIAccountApi = (id, data) =>
request({ url: `/admin/azure-openai-accounts/${id}`, method: 'PUT', data })
// Droid 账户
export const getDroidAccounts = () => get('/admin/droid-accounts')
export const createDroidAccount = (data) => post('/admin/droid-accounts', data)
export const updateDroidAccount = (id, data) => put(`/admin/droid-accounts/${id}`, data)
export const deleteDroidAccount = (id) => del(`/admin/droid-accounts/${id}`)
export const generateDroidAuthUrl = (data) => post('/admin/droid-accounts/generate-auth-url', data)
export const exchangeDroidCode = (data) => post('/admin/droid-accounts/exchange-code', data)
export const getDroidAccountsApi = () => request({ url: '/admin/droid-accounts', method: 'GET' })
export const createDroidAccountApi = (data) =>
request({ url: '/admin/droid-accounts', method: 'POST', data })
export const updateDroidAccountApi = (id, data) =>
request({ url: `/admin/droid-accounts/${id}`, method: 'PUT', data })
export const generateDroidAuthUrlApi = (data) =>
request({ url: '/admin/droid-accounts/generate-auth-url', method: 'POST', data })
export const exchangeDroidCodeApi = (data) =>
request({ url: '/admin/droid-accounts/exchange-code', method: 'POST', data })
export const getDroidAccountByIdApi = (id) =>
request({ url: `/admin/droid-accounts/${id}`, method: 'GET' })
// CCR 账户
export const getCcrAccounts = () => get('/admin/ccr-accounts')
export const createCcrAccount = (data) => post('/admin/ccr-accounts', data)
export const updateCcrAccount = (id, data) => put(`/admin/ccr-accounts/${id}`, data)
export const deleteCcrAccount = (id) => del(`/admin/ccr-accounts/${id}`)
// Gemini API 账户
export const getGeminiApiAccounts = () => get('/admin/gemini-api-accounts')
export const getCcrAccountsApi = () => request({ url: '/admin/ccr-accounts', method: 'GET' })
export const createCcrAccountApi = (data) =>
request({ url: '/admin/ccr-accounts', method: 'POST', data })
export const updateCcrAccountApi = (id, data) =>
request({ url: `/admin/ccr-accounts/${id}`, method: 'PUT', data })
// 账户通用操作
export const toggleAccountStatus = (endpoint) => put(endpoint)
export const deleteAccountByEndpoint = (endpoint) => del(endpoint)
export const testAccountByEndpoint = (endpoint) => post(endpoint)
export const updateAccountByEndpoint = (endpoint, data) => put(endpoint, data)
export const toggleAccountStatusApi = (endpoint) => request({ url: endpoint, method: 'PUT' })
export const deleteAccountByEndpointApi = (endpoint) => request({ url: endpoint, method: 'DELETE' })
export const testAccountByEndpointApi = (endpoint) => request({ url: endpoint, method: 'POST' })
export const updateAccountByEndpointApi = (endpoint, data) =>
request({ url: endpoint, method: 'PUT', data })
// 账户使用统计
export const getClaudeAccountsUsage = () => get('/admin/claude-accounts/usage')
export const getAccountsBindingCounts = () => get('/admin/accounts/binding-counts')
export const getAccountUsageHistory = (id, platform, days = 30) =>
get(`/admin/accounts/${id}/usage-history?platform=${platform}&days=${days}`)
export const getClaudeAccountsUsageApi = () =>
request({ url: '/admin/claude-accounts/usage', method: 'GET' })
export const getAccountsBindingCountsApi = () =>
request({ url: '/admin/accounts/binding-counts', method: 'GET' })
export const getAccountUsageHistoryApi = (id, platform, days = 30) =>
request({
url: `/admin/accounts/${id}/usage-history?platform=${platform}&days=${days}`,
method: 'GET'
})
export const getClaudeConsoleAccountUsageApi = (id) =>
request({ url: `/admin/claude-console-accounts/${id}/usage`, method: 'GET' })
export const getAccountUsageRecordsByIdApi = (id, params) =>
request({ url: `/admin/accounts/${id}/usage-records`, method: 'GET', params })
// 账户组
export const getAccountGroups = () => get('/admin/account-groups')
export const createAccountGroup = (data) => post('/admin/account-groups', data)
export const updateAccountGroup = (id, data) => put(`/admin/account-groups/${id}`, data)
export const deleteAccountGroup = (id) => del(`/admin/account-groups/${id}`)
export const getAccountGroupsApi = () => request({ url: '/admin/account-groups', method: 'GET' })
export const createAccountGroupApi = (data) =>
request({ url: '/admin/account-groups', method: 'POST', data })
export const updateAccountGroupApi = (id, data) =>
request({ url: `/admin/account-groups/${id}`, method: 'PUT', data })
export const deleteAccountGroupApi = (id) =>
request({ url: `/admin/account-groups/${id}`, method: 'DELETE' })
export const getAccountGroupMembersApi = (id) =>
request({ url: `/admin/account-groups/${id}/members`, method: 'GET' })
// 用户管理
export const getUsers = () => get('/admin/users')
export const createUser = (data) => post('/admin/users', data)
export const updateUser = (id, data) => put(`/admin/users/${id}`, data)
export const deleteUser = (id) => del(`/admin/users/${id}`)
export const updateUserRole = (id, data) => put(`/admin/users/${id}/role`, data)
export const getUserUsageStats = (id, params) => get(`/admin/users/${id}/usage-stats`, { params })
// 使用记录
export const getApiKeyUsageRecords = (id, params) =>
get(`/admin/api-keys/${id}/usage-records`, { params })
export const getAccountUsageRecords = (type, id, params) =>
get(`/admin/${type}-accounts/${id}/usage-records`, { params })
// 系统日志
export const getSystemLogs = (params) => get('/admin/logs', { params })
// 用户管理(管理员)
export const getUsersApi = () => request({ url: '/admin/users', method: 'GET' })
// 配额卡片
export const getQuotaCards = () => get('/admin/quota-cards')
export const createQuotaCard = (data) => post('/admin/quota-cards', data)
export const updateQuotaCard = (id, data) => put(`/admin/quota-cards/${id}`, data)
export const deleteQuotaCard = (id) => del(`/admin/quota-cards/${id}`)
export const redeemQuotaCard = (data) => post('/admin/quota-cards/redeem', data)
export const createQuotaCardApi = (data) =>
request({ url: '/admin/quota-cards', method: 'POST', data })
export const deleteQuotaCardApi = (id) =>
request({ url: `/admin/quota-cards/${id}`, method: 'DELETE' })
export const getQuotaCardsWithParamsApi = (params) =>
request({ url: '/admin/quota-cards', method: 'GET', params })
export const getQuotaCardsStatsApi = () =>
request({ url: '/admin/quota-cards/stats', method: 'GET' })
export const getRedemptionsApi = () => request({ url: '/admin/redemptions', method: 'GET' })
export const revokeRedemptionApi = (id, data) =>
request({ url: `/admin/redemptions/${id}/revoke`, method: 'POST', data })
export const getQuotaCardLimitsApi = () =>
request({ url: '/admin/quota-cards/limits', method: 'GET' })
export const updateQuotaCardLimitsApi = (data) =>
request({ url: '/admin/quota-cards/limits', method: 'PUT', data })
// 账户测试
export const testAccount = (type, id) => post(`/admin/${type}-accounts/${id}/test`)
export const getAccountTestHistory = (type, id) => get(`/admin/${type}-accounts/${id}/test-history`)
// 账户余额
export const getAccountBalanceApi = (id, params) =>
request({ url: `/admin/accounts/${id}/balance`, method: 'GET', params })
export const refreshAccountBalanceApi = (id, data) =>
request({ url: `/admin/accounts/${id}/balance/refresh`, method: 'POST', data })
export const getBalanceSummaryApi = () =>
request({ url: '/admin/accounts/balance/summary', method: 'GET' })
export const getBalanceByPlatformApi = (platform, params) =>
request({ url: `/admin/accounts/balance/platform/${platform}`, method: 'GET', params })
// 定时测试
export const getScheduledTests = () => get('/admin/scheduled-tests')
export const createScheduledTest = (data) => post('/admin/scheduled-tests', data)
export const updateScheduledTest = (id, data) => put(`/admin/scheduled-tests/${id}`, data)
export const deleteScheduledTest = (id) => del(`/admin/scheduled-tests/${id}`)
// 账户余额脚本
export const getAccountBalanceScriptApi = (id, platform) =>
request({ url: `/admin/accounts/${id}/balance/script?platform=${platform}`, method: 'GET' })
export const updateAccountBalanceScriptApi = (id, platform, data) =>
request({ url: `/admin/accounts/${id}/balance/script?platform=${platform}`, method: 'PUT', data })
export const testAccountBalanceScriptApi = (id, platform, data) =>
request({
url: `/admin/accounts/${id}/balance/script/test?platform=${platform}`,
method: 'POST',
data
})
// 统一 User-Agent
export const getUnifiedUserAgent = () => get('/admin/unified-user-agent')
// 默认余额脚本
export const getDefaultBalanceScriptApi = () =>
request({ url: '/admin/balance-scripts/default', method: 'GET' })
export const updateDefaultBalanceScriptApi = (data) =>
request({ url: '/admin/balance-scripts/default', method: 'PUT', data })
export const testDefaultBalanceScriptApi = (data) =>
request({ url: '/admin/balance-scripts/default/test', method: 'POST', data })
// 账户 API Keys 管理
export const getAccountApiKeys = (type, id) => get(`/admin/${type}-accounts/${id}/api-keys`)
export const updateAccountApiKeys = (type, id, data) =>
put(`/admin/${type}-accounts/${id}/api-keys`, data)
// 前台用户管理
export const getFrontUsersApi = (params) => request({ url: '/users', method: 'GET', params })
export const getFrontUsersStatsOverviewApi = () =>
request({ url: '/users/stats/overview', method: 'GET' })
export const getFrontUserByIdApi = (id) => request({ url: `/users/${id}`, method: 'GET' })
export const updateFrontUserStatusApi = (id, data) =>
request({ url: `/users/${id}/status`, method: 'PATCH', data })
export const disableFrontUserKeysApi = (id) =>
request({ url: `/users/${id}/disable-keys`, method: 'POST' })
export const getFrontUserUsageStatsApi = (id, params) =>
request({ url: `/users/${id}/usage-stats`, method: 'GET', params })
export const updateFrontUserRoleApi = (id, data) =>
request({ url: `/users/${id}/role`, method: 'PATCH', data })
export default { get, post, put, patch, del, request }
export { get, post, put, patch, del }
// Webhook 配置
export const getWebhookConfigApi = (config) =>
request({ url: '/admin/webhook/config', method: 'GET', ...config })
export const updateWebhookConfigApi = (data, config) =>
request({ url: '/admin/webhook/config', method: 'POST', data, ...config })
export const createWebhookPlatformApi = (data, config) =>
request({ url: '/admin/webhook/platforms', method: 'POST', data, ...config })
export const deleteWebhookPlatformApi = (id, config) =>
request({ url: `/admin/webhook/platforms/${id}`, method: 'DELETE', ...config })
export const updateWebhookPlatformApi = (id, data, config) =>
request({ url: `/admin/webhook/platforms/${id}`, method: 'PUT', data, ...config })
export const toggleWebhookPlatformApi = (id, config) =>
request({ url: `/admin/webhook/platforms/${id}/toggle`, method: 'POST', ...config })
export const testWebhookApi = (data, config) =>
request({ url: '/admin/webhook/test', method: 'POST', data, ...config })
export const testWebhookNotificationApi = (config) =>
request({ url: '/admin/webhook/test-notification', method: 'POST', ...config })
// Claude Relay 配置
export const getClaudeRelayConfigApi = (config) =>
request({ url: '/admin/claude-relay-config', method: 'GET', ...config })
export const updateClaudeRelayConfigApi = (data, config) =>
request({ url: '/admin/claude-relay-config', method: 'PUT', data, ...config })
// 服务倍率配置(管理端)
export const getAdminServiceRatesApi = (config) =>
request({ url: '/admin/service-rates', method: 'GET', ...config })
export const updateAdminServiceRatesApi = (data, config) =>
request({ url: '/admin/service-rates', method: 'PUT', data, ...config })
// 系统
export const checkUpdatesApi = () => request({ url: '/admin/check-updates', method: 'GET' })
export const getClaudeCodeVersionApi = () =>
request({ url: '/admin/claude-code-version', method: 'GET' })
export const clearClaudeCodeVersionApi = () =>
request({ url: '/admin/claude-code-version/clear', method: 'POST' })