diff --git a/src/routes/admin.js b/src/routes/admin.js index a72479c7..397c77fe 100644 --- a/src/routes/admin.js +++ b/src/routes/admin.js @@ -1548,7 +1548,7 @@ router.post('/claude-console-accounts', authenticateAdmin, async (req, res) => { priority: priority || 50, supportedModels: supportedModels || [], userAgent, - rateLimitDuration: rateLimitDuration || 60, + rateLimitDuration: (rateLimitDuration !== undefined && rateLimitDuration !== null) ? rateLimitDuration : 60, proxy, accountType: accountType || 'shared' }) @@ -4628,7 +4628,7 @@ router.post('/openai-accounts', authenticateAdmin, async (req, res) => { description: description || '', accountType: accountType || 'shared', priority: priority || 50, - rateLimitDuration: rateLimitDuration || 60, + rateLimitDuration: (rateLimitDuration !== undefined && rateLimitDuration !== null) ? rateLimitDuration : 60, openaiOauth: openaiOauth || {}, accountInfo: accountInfo || {}, proxy: proxy?.enabled diff --git a/src/services/claudeConsoleAccountService.js b/src/services/claudeConsoleAccountService.js index e7385bdd..67d1a23c 100644 --- a/src/services/claudeConsoleAccountService.js +++ b/src/services/claudeConsoleAccountService.js @@ -123,7 +123,7 @@ class ClaudeConsoleAccountService { priority: parseInt(accountData.priority) || 50, supportedModels: JSON.parse(accountData.supportedModels || '[]'), userAgent: accountData.userAgent, - rateLimitDuration: parseInt(accountData.rateLimitDuration) || 60, + rateLimitDuration: (Number.isNaN(parseInt(accountData.rateLimitDuration)) ? 60 : parseInt(accountData.rateLimitDuration)), isActive: accountData.isActive === 'true', proxy: accountData.proxy ? JSON.parse(accountData.proxy) : null, accountType: accountData.accountType || 'shared', @@ -172,7 +172,10 @@ class ClaudeConsoleAccountService { accountData.supportedModels = parsedModels accountData.priority = parseInt(accountData.priority) || 50 - accountData.rateLimitDuration = parseInt(accountData.rateLimitDuration) || 60 + { + const _parsedDuration = parseInt(accountData.rateLimitDuration) + accountData.rateLimitDuration = Number.isNaN(_parsedDuration) ? 60 : _parsedDuration + } accountData.isActive = accountData.isActive === 'true' accountData.schedulable = accountData.schedulable !== 'false' // 默认为true @@ -370,7 +373,7 @@ class ClaudeConsoleAccountService { const minutesSinceRateLimit = (now - rateLimitedAt) / (1000 * 60) // 使用账户配置的限流时间 - const rateLimitDuration = account.rateLimitDuration || 60 + const rateLimitDuration = (typeof account.rateLimitDuration === 'number' && !Number.isNaN(account.rateLimitDuration)) ? account.rateLimitDuration : 60 if (minutesSinceRateLimit >= rateLimitDuration) { await this.removeAccountRateLimit(accountId) @@ -510,7 +513,8 @@ class ClaudeConsoleAccountService { const rateLimitedAt = new Date(accountData.rateLimitedAt) const now = new Date() const minutesSinceRateLimit = Math.floor((now - rateLimitedAt) / (1000 * 60)) - const rateLimitDuration = parseInt(accountData.rateLimitDuration) || 60 + const __parsedDuration = parseInt(accountData.rateLimitDuration) + const rateLimitDuration = Number.isNaN(__parsedDuration) ? 60 : __parsedDuration const minutesRemaining = Math.max(0, rateLimitDuration - minutesSinceRateLimit) return { diff --git a/src/services/openaiAccountService.js b/src/services/openaiAccountService.js index 6d242da1..06a6b919 100644 --- a/src/services/openaiAccountService.js +++ b/src/services/openaiAccountService.js @@ -146,7 +146,7 @@ async function createAccount(accountData) { accountType: accountData.accountType || 'shared', groupId: accountData.groupId || null, priority: accountData.priority || 50, - rateLimitDuration: accountData.rateLimitDuration || 60, + rateLimitDuration: (accountData.rateLimitDuration !== undefined && accountData.rateLimitDuration !== null) ? accountData.rateLimitDuration : 60, // OAuth相关字段(加密存储) idToken: encrypt(oauthData.idToken || ''), accessToken: encrypt(oauthData.accessToken || ''),