general_setting.go 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package operation_setting
  2. import "github.com/QuantumNous/new-api/setting/config"
  3. // 额度展示类型
  4. const (
  5. QuotaDisplayTypeUSD = "USD"
  6. QuotaDisplayTypeCNY = "CNY"
  7. QuotaDisplayTypeTokens = "TOKENS"
  8. QuotaDisplayTypeCustom = "CUSTOM"
  9. )
  10. type GeneralSetting struct {
  11. DocsLink string `json:"docs_link"`
  12. PingIntervalEnabled bool `json:"ping_interval_enabled"`
  13. PingIntervalSeconds int `json:"ping_interval_seconds"`
  14. // 当前站点额度展示类型:USD / CNY / TOKENS
  15. QuotaDisplayType string `json:"quota_display_type"`
  16. // 自定义货币符号,用于 CUSTOM 展示类型
  17. CustomCurrencySymbol string `json:"custom_currency_symbol"`
  18. // 自定义货币与美元汇率(1 USD = X Custom)
  19. CustomCurrencyExchangeRate float64 `json:"custom_currency_exchange_rate"`
  20. }
  21. // 默认配置
  22. var generalSetting = GeneralSetting{
  23. DocsLink: "https://docs.newapi.pro",
  24. PingIntervalEnabled: false,
  25. PingIntervalSeconds: 60,
  26. QuotaDisplayType: QuotaDisplayTypeUSD,
  27. CustomCurrencySymbol: "¤",
  28. CustomCurrencyExchangeRate: 1.0,
  29. }
  30. func init() {
  31. // 注册到全局配置管理器
  32. config.GlobalConfig.Register("general_setting", &generalSetting)
  33. }
  34. func GetGeneralSetting() *GeneralSetting {
  35. return &generalSetting
  36. }
  37. // IsCurrencyDisplay 是否以货币形式展示(美元或人民币)
  38. func IsCurrencyDisplay() bool {
  39. return generalSetting.QuotaDisplayType != QuotaDisplayTypeTokens
  40. }
  41. // IsCNYDisplay 是否以人民币展示
  42. func IsCNYDisplay() bool {
  43. return generalSetting.QuotaDisplayType == QuotaDisplayTypeCNY
  44. }
  45. // GetQuotaDisplayType 返回额度展示类型
  46. func GetQuotaDisplayType() string {
  47. return generalSetting.QuotaDisplayType
  48. }
  49. // GetCurrencySymbol 返回当前展示类型对应符号
  50. func GetCurrencySymbol() string {
  51. switch generalSetting.QuotaDisplayType {
  52. case QuotaDisplayTypeUSD:
  53. return "$"
  54. case QuotaDisplayTypeCNY:
  55. return "¥"
  56. case QuotaDisplayTypeCustom:
  57. if generalSetting.CustomCurrencySymbol != "" {
  58. return generalSetting.CustomCurrencySymbol
  59. }
  60. return "¤"
  61. default:
  62. return ""
  63. }
  64. }
  65. // GetUsdToCurrencyRate 返回 1 USD = X <currency> 的 X(TOKENS 不适用)
  66. func GetUsdToCurrencyRate(usdToCny float64) float64 {
  67. switch generalSetting.QuotaDisplayType {
  68. case QuotaDisplayTypeUSD:
  69. return 1
  70. case QuotaDisplayTypeCNY:
  71. return usdToCny
  72. case QuotaDisplayTypeCustom:
  73. if generalSetting.CustomCurrencyExchangeRate > 0 {
  74. return generalSetting.CustomCurrencyExchangeRate
  75. }
  76. return 1
  77. default:
  78. return 1
  79. }
  80. }