Qwen2API-A / src /utils /setting.js
github-actions[bot]
Sync from GitHub Viciy2023/Qwen2API-A@ae093476e9bc5b0a599620b5925df3a20057038e
f120063
const accountManager = require('./account')
const { logger } = require('./logger')
/**
* 账户设置工具
* 提供账户的保存和删除功能,使用统一的账户管理器
*/
/**
* 保存账户信息
* @param {string} email - 邮箱地址
* @param {string} password - 密码
* @param {string} token - 访问令牌
* @param {number} expires - 过期时间戳
* @returns {Promise<boolean>} 保存是否成功
*/
const saveAccounts = async (email, password, token, expires) => {
try {
// 参数验证
if (!email || !password) {
logger.error('保存账户失败: 邮箱和密码不能为空', 'SETTING')
return false
}
// 使用账户管理器的统一方法
const success = await accountManager.addAccount(email, password)
if (success) {
logger.success(`账户 ${email} 保存成功`, 'SETTING')
return true
} else {
logger.error(`账户 ${email} 保存失败`, 'SETTING')
return false
}
} catch (error) {
logger.error(`保存账户 ${email} 时发生错误`, 'SETTING', '', error)
return false
}
}
/**
* 删除账户
* @param {string} email - 邮箱地址
* @returns {Promise<boolean>} 删除是否成功
*/
const deleteAccount = async (email) => {
try {
// 参数验证
if (!email) {
logger.error('删除账户失败: 邮箱不能为空', 'SETTING')
return false
}
// 使用账户管理器的统一方法
const success = await accountManager.removeAccount(email)
if (success) {
logger.success(`账户 ${email} 删除成功`, 'SETTING')
return true
} else {
logger.error(`账户 ${email} 删除失败`, 'SETTING')
return false
}
} catch (error) {
logger.error(`删除账户 ${email} 时发生错误`, 'SETTING', '', error)
return false
}
}
/**
* 获取所有账户信息
* @returns {Array} 账户列表
*/
const getAllAccounts = () => {
try {
return accountManager.getAllAccountKeys()
} catch (error) {
logger.error('获取账户列表时发生错误', 'SETTING', '', error)
return []
}
}
/**
* 获取账户健康状态
* @returns {Object} 健康状态统计
*/
const getAccountHealth = () => {
try {
return accountManager.getHealthStats()
} catch (error) {
logger.error('获取账户健康状态时发生错误', 'SETTING', '', error)
return {
accounts: { total: 0, valid: 0, expired: 0, expiringSoon: 0, invalid: 0 },
rotation: { total: 0, available: 0, inCooldown: 0 },
initialized: false
}
}
}
/**
* 手动刷新账户令牌
* @param {string} email - 邮箱地址
* @returns {Promise<boolean>} 刷新是否成功
*/
const refreshAccountToken = async (email) => {
try {
if (!email) {
logger.error('刷新令牌失败: 邮箱不能为空', 'SETTING')
return false
}
const success = await accountManager.refreshAccountToken(email)
if (success) {
logger.success(`账户 ${email} 令牌刷新成功`, 'SETTING')
return true
} else {
logger.error(`账户 ${email} 令牌刷新失败`, 'SETTING')
return false
}
} catch (error) {
logger.error(`刷新账户 ${email} 令牌时发生错误`, 'SETTING', '', error)
return false
}
}
module.exports = {
saveAccounts,
deleteAccount,
getAllAccounts,
getAccountHealth,
refreshAccountToken
}