2025-03-09 18:31:16 +08:00
|
|
|
|
package operation_setting
|
|
|
|
|
|
|
2025-10-11 15:30:09 +08:00
|
|
|
|
import "github.com/QuantumNous/new-api/setting/config"
|
2025-03-09 18:31:16 +08:00
|
|
|
|
|
2025-09-29 23:23:31 +08:00
|
|
|
|
// 额度展示类型
|
|
|
|
|
|
const (
|
|
|
|
|
|
QuotaDisplayTypeUSD = "USD"
|
|
|
|
|
|
QuotaDisplayTypeCNY = "CNY"
|
|
|
|
|
|
QuotaDisplayTypeTokens = "TOKENS"
|
|
|
|
|
|
QuotaDisplayTypeCustom = "CUSTOM"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
2025-03-09 18:31:16 +08:00
|
|
|
|
type GeneralSetting struct {
|
2025-04-14 19:40:23 +08:00
|
|
|
|
DocsLink string `json:"docs_link"`
|
|
|
|
|
|
PingIntervalEnabled bool `json:"ping_interval_enabled"`
|
|
|
|
|
|
PingIntervalSeconds int `json:"ping_interval_seconds"`
|
2025-09-29 23:23:31 +08:00
|
|
|
|
// 当前站点额度展示类型:USD / CNY / TOKENS
|
|
|
|
|
|
QuotaDisplayType string `json:"quota_display_type"`
|
|
|
|
|
|
// 自定义货币符号,用于 CUSTOM 展示类型
|
|
|
|
|
|
CustomCurrencySymbol string `json:"custom_currency_symbol"`
|
|
|
|
|
|
// 自定义货币与美元汇率(1 USD = X Custom)
|
|
|
|
|
|
CustomCurrencyExchangeRate float64 `json:"custom_currency_exchange_rate"`
|
2025-03-09 18:31:16 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 默认配置
|
|
|
|
|
|
var generalSetting = GeneralSetting{
|
2025-09-29 23:23:31 +08:00
|
|
|
|
DocsLink: "https://docs.newapi.pro",
|
|
|
|
|
|
PingIntervalEnabled: false,
|
|
|
|
|
|
PingIntervalSeconds: 60,
|
|
|
|
|
|
QuotaDisplayType: QuotaDisplayTypeUSD,
|
|
|
|
|
|
CustomCurrencySymbol: "¤",
|
|
|
|
|
|
CustomCurrencyExchangeRate: 1.0,
|
2025-03-09 18:31:16 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
|
|
// 注册到全局配置管理器
|
|
|
|
|
|
config.GlobalConfig.Register("general_setting", &generalSetting)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func GetGeneralSetting() *GeneralSetting {
|
|
|
|
|
|
return &generalSetting
|
|
|
|
|
|
}
|
2025-09-29 23:23:31 +08:00
|
|
|
|
|
|
|
|
|
|
// IsCurrencyDisplay 是否以货币形式展示(美元或人民币)
|
|
|
|
|
|
func IsCurrencyDisplay() bool {
|
|
|
|
|
|
return generalSetting.QuotaDisplayType != QuotaDisplayTypeTokens
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// IsCNYDisplay 是否以人民币展示
|
|
|
|
|
|
func IsCNYDisplay() bool {
|
|
|
|
|
|
return generalSetting.QuotaDisplayType == QuotaDisplayTypeCNY
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// GetQuotaDisplayType 返回额度展示类型
|
|
|
|
|
|
func GetQuotaDisplayType() string {
|
|
|
|
|
|
return generalSetting.QuotaDisplayType
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// GetCurrencySymbol 返回当前展示类型对应符号
|
|
|
|
|
|
func GetCurrencySymbol() string {
|
|
|
|
|
|
switch generalSetting.QuotaDisplayType {
|
|
|
|
|
|
case QuotaDisplayTypeUSD:
|
|
|
|
|
|
return "$"
|
|
|
|
|
|
case QuotaDisplayTypeCNY:
|
|
|
|
|
|
return "¥"
|
|
|
|
|
|
case QuotaDisplayTypeCustom:
|
|
|
|
|
|
if generalSetting.CustomCurrencySymbol != "" {
|
|
|
|
|
|
return generalSetting.CustomCurrencySymbol
|
|
|
|
|
|
}
|
|
|
|
|
|
return "¤"
|
|
|
|
|
|
default:
|
|
|
|
|
|
return ""
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// GetUsdToCurrencyRate 返回 1 USD = X <currency> 的 X(TOKENS 不适用)
|
|
|
|
|
|
func GetUsdToCurrencyRate(usdToCny float64) float64 {
|
|
|
|
|
|
switch generalSetting.QuotaDisplayType {
|
|
|
|
|
|
case QuotaDisplayTypeUSD:
|
|
|
|
|
|
return 1
|
|
|
|
|
|
case QuotaDisplayTypeCNY:
|
|
|
|
|
|
return usdToCny
|
|
|
|
|
|
case QuotaDisplayTypeCustom:
|
|
|
|
|
|
if generalSetting.CustomCurrencyExchangeRate > 0 {
|
|
|
|
|
|
return generalSetting.CustomCurrencyExchangeRate
|
|
|
|
|
|
}
|
|
|
|
|
|
return 1
|
|
|
|
|
|
default:
|
|
|
|
|
|
return 1
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|