mirror of
				https://github.com/linux-do/new-api.git
				synced 2025-11-04 05:13:41 +08:00 
			
		
		
		
	feat: 前端不显示敏感信息
This commit is contained in:
		@@ -9,15 +9,6 @@ import (
 | 
			
		||||
	"github.com/google/uuid"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Pay Settings
 | 
			
		||||
 | 
			
		||||
var PayAddress = ""
 | 
			
		||||
var CustomCallbackAddress = ""
 | 
			
		||||
var EpayId = ""
 | 
			
		||||
var EpayKey = ""
 | 
			
		||||
var Price = 7.3
 | 
			
		||||
var MinTopUp = 1
 | 
			
		||||
 | 
			
		||||
var StartTime = time.Now().Unix() // unit: second
 | 
			
		||||
var Version = "v0.0.0"            // this hard coding will be replaced automatically when building, no need to manually change
 | 
			
		||||
var SystemName = "New API"
 | 
			
		||||
 
 | 
			
		||||
@@ -14,91 +14,91 @@ import (
 | 
			
		||||
// 1 === ¥0.014 / 1k tokens
 | 
			
		||||
var DefaultModelRatio = map[string]float64{
 | 
			
		||||
	//"midjourney":                50,
 | 
			
		||||
	"gpt-4-gizmo-*":             15,
 | 
			
		||||
	"gpt-4":                     15,
 | 
			
		||||
	"gpt-4-0314":                15,
 | 
			
		||||
	"gpt-4-0613":                15,
 | 
			
		||||
	"gpt-4-32k":                 30,
 | 
			
		||||
	"gpt-4-32k-0314":            30,
 | 
			
		||||
	"gpt-4-32k-0613":            30,
 | 
			
		||||
	"gpt-4-1106-preview":        5,    // $0.01 / 1K tokens
 | 
			
		||||
	"gpt-4-0125-preview":        5,    // $0.01 / 1K tokens
 | 
			
		||||
	"gpt-4-turbo-preview":       5,    // $0.01 / 1K tokens
 | 
			
		||||
	"gpt-4-vision-preview":      5,    // $0.01 / 1K tokens
 | 
			
		||||
	"gpt-4-1106-vision-preview": 5,    // $0.01 / 1K tokens
 | 
			
		||||
	"gpt-4-turbo":               5,    // $0.01 / 1K tokens
 | 
			
		||||
	"gpt-3.5-turbo":             0.25, // $0.0015 / 1K tokens
 | 
			
		||||
	"gpt-3.5-turbo-0301":        0.75,
 | 
			
		||||
	"gpt-3.5-turbo-0613":        0.75,
 | 
			
		||||
	"gpt-3.5-turbo-16k":         1.5, // $0.003 / 1K tokens
 | 
			
		||||
	"gpt-3.5-turbo-16k-0613":    1.5,
 | 
			
		||||
	"gpt-3.5-turbo-instruct":    0.75, // $0.0015 / 1K tokens
 | 
			
		||||
	"gpt-3.5-turbo-1106":        0.5,  // $0.001 / 1K tokens
 | 
			
		||||
	"gpt-3.5-turbo-0125":        0.25,
 | 
			
		||||
	"babbage-002":               0.2, // $0.0004 / 1K tokens
 | 
			
		||||
	"davinci-002":               1,   // $0.002 / 1K tokens
 | 
			
		||||
	"text-ada-001":              0.2,
 | 
			
		||||
	"text-babbage-001":          0.25,
 | 
			
		||||
	"text-curie-001":            1,
 | 
			
		||||
	"text-davinci-002":          10,
 | 
			
		||||
	"text-davinci-003":          10,
 | 
			
		||||
	"text-davinci-edit-001":     10,
 | 
			
		||||
	"code-davinci-edit-001":     10,
 | 
			
		||||
	"whisper-1":                 15,  // $0.006 / minute -> $0.006 / 150 words -> $0.006 / 200 tokens -> $0.03 / 1k tokens
 | 
			
		||||
	"tts-1":                     7.5, // 1k characters -> $0.015
 | 
			
		||||
	"tts-1-1106":                7.5, // 1k characters -> $0.015
 | 
			
		||||
	"tts-1-hd":                  15,  // 1k characters -> $0.03
 | 
			
		||||
	"tts-1-hd-1106":             15,  // 1k characters -> $0.03
 | 
			
		||||
	"davinci":                   10,
 | 
			
		||||
	"curie":                     10,
 | 
			
		||||
	"babbage":                   10,
 | 
			
		||||
	"ada":                       10,
 | 
			
		||||
	"text-embedding-3-small":    0.01,
 | 
			
		||||
	"text-embedding-3-large":    0.065,
 | 
			
		||||
	"text-embedding-ada-002":    0.05,
 | 
			
		||||
	"text-search-ada-doc-001":   10,
 | 
			
		||||
	"text-moderation-stable":    0.1,
 | 
			
		||||
	"text-moderation-latest":    0.1,
 | 
			
		||||
	"dall-e-2":                  8,
 | 
			
		||||
	"dall-e-3":                  16,
 | 
			
		||||
	"claude-instant-1":          0.4,    // $0.8 / 1M tokens
 | 
			
		||||
	"claude-2.0":                4,      // $8 / 1M tokens
 | 
			
		||||
	"claude-2.1":                4,      // $8 / 1M tokens
 | 
			
		||||
	"claude-3-haiku-20240307":   0.125,  // $0.25 / 1M tokens
 | 
			
		||||
	"claude-3-sonnet-20240229":  1.5,    // $3 / 1M tokens
 | 
			
		||||
	"claude-3-opus-20240229":    7.5,    // $15 / 1M tokens
 | 
			
		||||
	"ERNIE-Bot":                 0.8572, // ¥0.012 / 1k tokens
 | 
			
		||||
	"ERNIE-Bot-turbo":           0.5715, // ¥0.008 / 1k tokens
 | 
			
		||||
	"ERNIE-Bot-4":               8.572,  // ¥0.12 / 1k tokens
 | 
			
		||||
	"Embedding-V1":              0.1429, // ¥0.002 / 1k tokens
 | 
			
		||||
	"PaLM-2":                    1,
 | 
			
		||||
	"gemini-pro":                1, // $0.00025 / 1k characters -> $0.001 / 1k tokens
 | 
			
		||||
	"gemini-pro-vision":         1, // $0.00025 / 1k characters -> $0.001 / 1k tokens
 | 
			
		||||
	"gemini-1.0-pro-vision-001": 1,
 | 
			
		||||
	"gemini-1.0-pro-001":        1,
 | 
			
		||||
	"gemini-1.5-pro-latest":     1,
 | 
			
		||||
	"gemini-1.0-pro-latest":     1,
 | 
			
		||||
	"gemini-1.0-pro-vision-latest":   1,
 | 
			
		||||
	"gemini-ultra":              1,
 | 
			
		||||
	"chatglm_turbo":             0.3572, // ¥0.005 / 1k tokens
 | 
			
		||||
	"chatglm_pro":               0.7143, // ¥0.01 / 1k tokens
 | 
			
		||||
	"chatglm_std":               0.3572, // ¥0.005 / 1k tokens
 | 
			
		||||
	"chatglm_lite":              0.1429, // ¥0.002 / 1k tokens
 | 
			
		||||
	"glm-4":                     7.143,  // ¥0.1 / 1k tokens
 | 
			
		||||
	"glm-4v":                    7.143,  // ¥0.1 / 1k tokens
 | 
			
		||||
	"glm-3-turbo":               0.3572,
 | 
			
		||||
	"qwen-turbo":                0.8572, // ¥0.012 / 1k tokens
 | 
			
		||||
	"qwen-plus":                 10,     // ¥0.14 / 1k tokens
 | 
			
		||||
	"text-embedding-v1":         0.05,   // ¥0.0007 / 1k tokens
 | 
			
		||||
	"SparkDesk-v1.1":            1.2858, // ¥0.018 / 1k tokens
 | 
			
		||||
	"SparkDesk-v2.1":            1.2858, // ¥0.018 / 1k tokens
 | 
			
		||||
	"SparkDesk-v3.1":            1.2858, // ¥0.018 / 1k tokens
 | 
			
		||||
	"SparkDesk-v3.5":            1.2858, // ¥0.018 / 1k tokens
 | 
			
		||||
	"360GPT_S2_V9":              0.8572, // ¥0.012 / 1k tokens
 | 
			
		||||
	"embedding-bert-512-v1":     0.0715, // ¥0.001 / 1k tokens
 | 
			
		||||
	"embedding_s1_v1":           0.0715, // ¥0.001 / 1k tokens
 | 
			
		||||
	"semantic_similarity_s1_v1": 0.0715, // ¥0.001 / 1k tokens
 | 
			
		||||
	"hunyuan":                   7.143,  // ¥0.1 / 1k tokens  // https://cloud.tencent.com/document/product/1729/97731#e0e6be58-60c8-469f-bdeb-6c264ce3b4d0
 | 
			
		||||
	"gpt-4-gizmo-*":                15,
 | 
			
		||||
	"gpt-4":                        15,
 | 
			
		||||
	"gpt-4-0314":                   15,
 | 
			
		||||
	"gpt-4-0613":                   15,
 | 
			
		||||
	"gpt-4-32k":                    30,
 | 
			
		||||
	"gpt-4-32k-0314":               30,
 | 
			
		||||
	"gpt-4-32k-0613":               30,
 | 
			
		||||
	"gpt-4-1106-preview":           5,    // $0.01 / 1K tokens
 | 
			
		||||
	"gpt-4-0125-preview":           5,    // $0.01 / 1K tokens
 | 
			
		||||
	"gpt-4-turbo-preview":          5,    // $0.01 / 1K tokens
 | 
			
		||||
	"gpt-4-vision-preview":         5,    // $0.01 / 1K tokens
 | 
			
		||||
	"gpt-4-1106-vision-preview":    5,    // $0.01 / 1K tokens
 | 
			
		||||
	"gpt-4-turbo":                  5,    // $0.01 / 1K tokens
 | 
			
		||||
	"gpt-3.5-turbo":                0.25, // $0.0015 / 1K tokens
 | 
			
		||||
	"gpt-3.5-turbo-0301":           0.75,
 | 
			
		||||
	"gpt-3.5-turbo-0613":           0.75,
 | 
			
		||||
	"gpt-3.5-turbo-16k":            1.5, // $0.003 / 1K tokens
 | 
			
		||||
	"gpt-3.5-turbo-16k-0613":       1.5,
 | 
			
		||||
	"gpt-3.5-turbo-instruct":       0.75, // $0.0015 / 1K tokens
 | 
			
		||||
	"gpt-3.5-turbo-1106":           0.5,  // $0.001 / 1K tokens
 | 
			
		||||
	"gpt-3.5-turbo-0125":           0.25,
 | 
			
		||||
	"babbage-002":                  0.2, // $0.0004 / 1K tokens
 | 
			
		||||
	"davinci-002":                  1,   // $0.002 / 1K tokens
 | 
			
		||||
	"text-ada-001":                 0.2,
 | 
			
		||||
	"text-babbage-001":             0.25,
 | 
			
		||||
	"text-curie-001":               1,
 | 
			
		||||
	"text-davinci-002":             10,
 | 
			
		||||
	"text-davinci-003":             10,
 | 
			
		||||
	"text-davinci-edit-001":        10,
 | 
			
		||||
	"code-davinci-edit-001":        10,
 | 
			
		||||
	"whisper-1":                    15,  // $0.006 / minute -> $0.006 / 150 words -> $0.006 / 200 tokens -> $0.03 / 1k tokens
 | 
			
		||||
	"tts-1":                        7.5, // 1k characters -> $0.015
 | 
			
		||||
	"tts-1-1106":                   7.5, // 1k characters -> $0.015
 | 
			
		||||
	"tts-1-hd":                     15,  // 1k characters -> $0.03
 | 
			
		||||
	"tts-1-hd-1106":                15,  // 1k characters -> $0.03
 | 
			
		||||
	"davinci":                      10,
 | 
			
		||||
	"curie":                        10,
 | 
			
		||||
	"babbage":                      10,
 | 
			
		||||
	"ada":                          10,
 | 
			
		||||
	"text-embedding-3-small":       0.01,
 | 
			
		||||
	"text-embedding-3-large":       0.065,
 | 
			
		||||
	"text-embedding-ada-002":       0.05,
 | 
			
		||||
	"text-search-ada-doc-001":      10,
 | 
			
		||||
	"text-moderation-stable":       0.1,
 | 
			
		||||
	"text-moderation-latest":       0.1,
 | 
			
		||||
	"dall-e-2":                     8,
 | 
			
		||||
	"dall-e-3":                     16,
 | 
			
		||||
	"claude-instant-1":             0.4,    // $0.8 / 1M tokens
 | 
			
		||||
	"claude-2.0":                   4,      // $8 / 1M tokens
 | 
			
		||||
	"claude-2.1":                   4,      // $8 / 1M tokens
 | 
			
		||||
	"claude-3-haiku-20240307":      0.125,  // $0.25 / 1M tokens
 | 
			
		||||
	"claude-3-sonnet-20240229":     1.5,    // $3 / 1M tokens
 | 
			
		||||
	"claude-3-opus-20240229":       7.5,    // $15 / 1M tokens
 | 
			
		||||
	"ERNIE-Bot":                    0.8572, // ¥0.012 / 1k tokens
 | 
			
		||||
	"ERNIE-Bot-turbo":              0.5715, // ¥0.008 / 1k tokens
 | 
			
		||||
	"ERNIE-Bot-4":                  8.572,  // ¥0.12 / 1k tokens
 | 
			
		||||
	"Embedding-V1":                 0.1429, // ¥0.002 / 1k tokens
 | 
			
		||||
	"PaLM-2":                       1,
 | 
			
		||||
	"gemini-pro":                   1, // $0.00025 / 1k characters -> $0.001 / 1k tokens
 | 
			
		||||
	"gemini-pro-vision":            1, // $0.00025 / 1k characters -> $0.001 / 1k tokens
 | 
			
		||||
	"gemini-1.0-pro-vision-001":    1,
 | 
			
		||||
	"gemini-1.0-pro-001":           1,
 | 
			
		||||
	"gemini-1.5-pro-latest":        1,
 | 
			
		||||
	"gemini-1.0-pro-latest":        1,
 | 
			
		||||
	"gemini-1.0-pro-vision-latest": 1,
 | 
			
		||||
	"gemini-ultra":                 1,
 | 
			
		||||
	"chatglm_turbo":                0.3572, // ¥0.005 / 1k tokens
 | 
			
		||||
	"chatglm_pro":                  0.7143, // ¥0.01 / 1k tokens
 | 
			
		||||
	"chatglm_std":                  0.3572, // ¥0.005 / 1k tokens
 | 
			
		||||
	"chatglm_lite":                 0.1429, // ¥0.002 / 1k tokens
 | 
			
		||||
	"glm-4":                        7.143,  // ¥0.1 / 1k tokens
 | 
			
		||||
	"glm-4v":                       7.143,  // ¥0.1 / 1k tokens
 | 
			
		||||
	"glm-3-turbo":                  0.3572,
 | 
			
		||||
	"qwen-turbo":                   0.8572, // ¥0.012 / 1k tokens
 | 
			
		||||
	"qwen-plus":                    10,     // ¥0.14 / 1k tokens
 | 
			
		||||
	"text-embedding-v1":            0.05,   // ¥0.0007 / 1k tokens
 | 
			
		||||
	"SparkDesk-v1.1":               1.2858, // ¥0.018 / 1k tokens
 | 
			
		||||
	"SparkDesk-v2.1":               1.2858, // ¥0.018 / 1k tokens
 | 
			
		||||
	"SparkDesk-v3.1":               1.2858, // ¥0.018 / 1k tokens
 | 
			
		||||
	"SparkDesk-v3.5":               1.2858, // ¥0.018 / 1k tokens
 | 
			
		||||
	"360GPT_S2_V9":                 0.8572, // ¥0.012 / 1k tokens
 | 
			
		||||
	"embedding-bert-512-v1":        0.0715, // ¥0.001 / 1k tokens
 | 
			
		||||
	"embedding_s1_v1":              0.0715, // ¥0.001 / 1k tokens
 | 
			
		||||
	"semantic_similarity_s1_v1":    0.0715, // ¥0.001 / 1k tokens
 | 
			
		||||
	"hunyuan":                      7.143,  // ¥0.1 / 1k tokens  // https://cloud.tencent.com/document/product/1729/97731#e0e6be58-60c8-469f-bdeb-6c264ce3b4d0
 | 
			
		||||
	// https://platform.lingyiwanwu.com/docs#-计费单元
 | 
			
		||||
	// 已经按照 7.2 来换算美元价格
 | 
			
		||||
	"yi-34b-chat-0205": 0.018,
 | 
			
		||||
@@ -205,7 +205,7 @@ func GetCompletionRatio(name string) float64 {
 | 
			
		||||
		return 4.0 / 3.0
 | 
			
		||||
	}
 | 
			
		||||
	if strings.HasPrefix(name, "gpt-4") {
 | 
			
		||||
		if strings.HasPrefix(name, "gpt-4-turbo")|| strings.HasSuffix(name, "preview") {
 | 
			
		||||
		if strings.HasPrefix(name, "gpt-4-turbo") || strings.HasSuffix(name, "preview") {
 | 
			
		||||
			return 3
 | 
			
		||||
		}
 | 
			
		||||
		return 2
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								constant/payment.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								constant/payment.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
package constant
 | 
			
		||||
 | 
			
		||||
var PayAddress = ""
 | 
			
		||||
var CustomCallbackAddress = ""
 | 
			
		||||
var EpayId = ""
 | 
			
		||||
var EpayKey = ""
 | 
			
		||||
var Price = 7.3
 | 
			
		||||
var MinTopUp = 1
 | 
			
		||||
@@ -46,8 +46,8 @@ func GetStatus(c *gin.Context) {
 | 
			
		||||
			"wechat_qrcode":            common.WeChatAccountQRCodeImageURL,
 | 
			
		||||
			"wechat_login":             common.WeChatAuthEnabled,
 | 
			
		||||
			"server_address":           common.ServerAddress,
 | 
			
		||||
			"price":                    common.Price,
 | 
			
		||||
			"min_topup":                common.MinTopUp,
 | 
			
		||||
			"price":                    constant.Price,
 | 
			
		||||
			"min_topup":                constant.MinTopUp,
 | 
			
		||||
			"turnstile_check":          common.TurnstileCheckEnabled,
 | 
			
		||||
			"turnstile_site_key":       common.TurnstileSiteKey,
 | 
			
		||||
			"top_up_link":              common.TopUpLink,
 | 
			
		||||
@@ -60,7 +60,7 @@ func GetStatus(c *gin.Context) {
 | 
			
		||||
			"enable_data_export":       common.DataExportEnabled,
 | 
			
		||||
			"data_export_default_time": common.DataExportDefaultTime,
 | 
			
		||||
			"default_collapse_sidebar": common.DefaultCollapseSidebar,
 | 
			
		||||
			"enable_online_topup":      common.PayAddress != "" && common.EpayId != "" && common.EpayKey != "",
 | 
			
		||||
			"enable_online_topup":      constant.PayAddress != "" && constant.EpayId != "" && constant.EpayKey != "",
 | 
			
		||||
			"mj_notify_enabled":        constant.MjNotifyEnabled,
 | 
			
		||||
		},
 | 
			
		||||
	})
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@ func GetOptions(c *gin.Context) {
 | 
			
		||||
	var options []*model.Option
 | 
			
		||||
	common.OptionMapRWMutex.Lock()
 | 
			
		||||
	for k, v := range common.OptionMap {
 | 
			
		||||
		if strings.HasSuffix(k, "Token") || strings.HasSuffix(k, "Secret") {
 | 
			
		||||
		if strings.HasSuffix(k, "Token") || strings.HasSuffix(k, "Secret") || strings.HasSuffix(k, "Key") {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		options = append(options, &model.Option{
 | 
			
		||||
 
 | 
			
		||||
@@ -5,6 +5,7 @@ import (
 | 
			
		||||
	"github.com/Calcium-Ion/go-epay/epay"
 | 
			
		||||
	"github.com/gin-gonic/gin"
 | 
			
		||||
	"github.com/samber/lo"
 | 
			
		||||
	"one-api/constant"
 | 
			
		||||
 | 
			
		||||
	"log"
 | 
			
		||||
	"net/url"
 | 
			
		||||
@@ -28,13 +29,13 @@ type AmountRequest struct {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetEpayClient() *epay.Client {
 | 
			
		||||
	if common.PayAddress == "" || common.EpayId == "" || common.EpayKey == "" {
 | 
			
		||||
	if constant.PayAddress == "" || constant.EpayId == "" || constant.EpayKey == "" {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
	withUrl, err := epay.NewClient(&epay.Config{
 | 
			
		||||
		PartnerID: common.EpayId,
 | 
			
		||||
		Key:       common.EpayKey,
 | 
			
		||||
	}, common.PayAddress)
 | 
			
		||||
		PartnerID: constant.EpayId,
 | 
			
		||||
		Key:       constant.EpayKey,
 | 
			
		||||
	}, constant.PayAddress)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
@@ -50,12 +51,12 @@ func getPayMoney(amount float64, user model.User) float64 {
 | 
			
		||||
	if topupGroupRatio == 0 {
 | 
			
		||||
		topupGroupRatio = 1
 | 
			
		||||
	}
 | 
			
		||||
	payMoney := amount * common.Price * topupGroupRatio
 | 
			
		||||
	payMoney := amount * constant.Price * topupGroupRatio
 | 
			
		||||
	return payMoney
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func getMinTopup() int {
 | 
			
		||||
	minTopup := common.MinTopUp
 | 
			
		||||
	minTopup := constant.MinTopUp
 | 
			
		||||
	if !common.DisplayInCurrencyEnabled {
 | 
			
		||||
		minTopup = minTopup * int(common.QuotaPerUnit)
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -63,8 +63,8 @@ func InitOptionMap() {
 | 
			
		||||
	common.OptionMap["CustomCallbackAddress"] = ""
 | 
			
		||||
	common.OptionMap["EpayId"] = ""
 | 
			
		||||
	common.OptionMap["EpayKey"] = ""
 | 
			
		||||
	common.OptionMap["Price"] = strconv.FormatFloat(common.Price, 'f', -1, 64)
 | 
			
		||||
	common.OptionMap["MinTopUp"] = strconv.Itoa(common.MinTopUp)
 | 
			
		||||
	common.OptionMap["Price"] = strconv.FormatFloat(constant.Price, 'f', -1, 64)
 | 
			
		||||
	common.OptionMap["MinTopUp"] = strconv.Itoa(constant.MinTopUp)
 | 
			
		||||
	common.OptionMap["TopupGroupRatio"] = common.TopupGroupRatio2JSONString()
 | 
			
		||||
	common.OptionMap["GitHubClientId"] = ""
 | 
			
		||||
	common.OptionMap["GitHubClientSecret"] = ""
 | 
			
		||||
@@ -227,17 +227,17 @@ func updateOptionMap(key string, value string) (err error) {
 | 
			
		||||
	case "ServerAddress":
 | 
			
		||||
		common.ServerAddress = value
 | 
			
		||||
	case "PayAddress":
 | 
			
		||||
		common.PayAddress = value
 | 
			
		||||
		constant.PayAddress = value
 | 
			
		||||
	case "CustomCallbackAddress":
 | 
			
		||||
		common.CustomCallbackAddress = value
 | 
			
		||||
		constant.CustomCallbackAddress = value
 | 
			
		||||
	case "EpayId":
 | 
			
		||||
		common.EpayId = value
 | 
			
		||||
		constant.EpayId = value
 | 
			
		||||
	case "EpayKey":
 | 
			
		||||
		common.EpayKey = value
 | 
			
		||||
		constant.EpayKey = value
 | 
			
		||||
	case "Price":
 | 
			
		||||
		common.Price, _ = strconv.ParseFloat(value, 64)
 | 
			
		||||
		constant.Price, _ = strconv.ParseFloat(value, 64)
 | 
			
		||||
	case "MinTopUp":
 | 
			
		||||
		common.MinTopUp, _ = strconv.Atoi(value)
 | 
			
		||||
		constant.MinTopUp, _ = strconv.Atoi(value)
 | 
			
		||||
	case "TopupGroupRatio":
 | 
			
		||||
		err = common.UpdateTopupGroupRatioByJSONString(value)
 | 
			
		||||
	case "GitHubClientId":
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,13 @@
 | 
			
		||||
package service
 | 
			
		||||
 | 
			
		||||
import "one-api/common"
 | 
			
		||||
import (
 | 
			
		||||
	"one-api/common"
 | 
			
		||||
	"one-api/constant"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func GetCallbackAddress() string {
 | 
			
		||||
	if common.CustomCallbackAddress == "" {
 | 
			
		||||
	if constant.CustomCallbackAddress == "" {
 | 
			
		||||
		return common.ServerAddress
 | 
			
		||||
	}
 | 
			
		||||
	return common.CustomCallbackAddress
 | 
			
		||||
	return constant.CustomCallbackAddress
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -312,7 +312,9 @@ const SystemSetting = () => {
 | 
			
		||||
    <Grid columns={1}>
 | 
			
		||||
      <Grid.Column>
 | 
			
		||||
        <Form loading={loading} inverted={isDark}>
 | 
			
		||||
          <Header as='h3' inverted={isDark}>通用设置</Header>
 | 
			
		||||
          <Header as='h3' inverted={isDark}>
 | 
			
		||||
            通用设置
 | 
			
		||||
          </Header>
 | 
			
		||||
          <Form.Group widths='equal'>
 | 
			
		||||
            <Form.Input
 | 
			
		||||
              label='服务器地址'
 | 
			
		||||
@@ -346,7 +348,7 @@ const SystemSetting = () => {
 | 
			
		||||
            />
 | 
			
		||||
            <Form.Input
 | 
			
		||||
              label='易支付商户密钥'
 | 
			
		||||
              placeholder='例如:dejhfueqhujasjmndbjkqaw'
 | 
			
		||||
              placeholder='敏感信息不会发送到前端显示'
 | 
			
		||||
              value={inputs.EpayKey}
 | 
			
		||||
              name='EpayKey'
 | 
			
		||||
              onChange={handleInputChange}
 | 
			
		||||
@@ -390,7 +392,9 @@ const SystemSetting = () => {
 | 
			
		||||
          </Form.Group>
 | 
			
		||||
          <Form.Button onClick={submitPayAddress}>更新支付设置</Form.Button>
 | 
			
		||||
          <Divider />
 | 
			
		||||
          <Header as='h3' inverted={isDark}>配置登录注册</Header>
 | 
			
		||||
          <Header as='h3' inverted={isDark}>
 | 
			
		||||
            配置登录注册
 | 
			
		||||
          </Header>
 | 
			
		||||
          <Form.Group inline>
 | 
			
		||||
            <Form.Checkbox
 | 
			
		||||
              checked={inputs.PasswordLoginEnabled === 'true'}
 | 
			
		||||
@@ -684,7 +688,9 @@ const SystemSetting = () => {
 | 
			
		||||
            保存 WeChat Server 设置
 | 
			
		||||
          </Form.Button>
 | 
			
		||||
          <Divider />
 | 
			
		||||
          <Header as='h3' inverted={isDark}>配置 Telegram 登录</Header>
 | 
			
		||||
          <Header as='h3' inverted={isDark}>
 | 
			
		||||
            配置 Telegram 登录
 | 
			
		||||
          </Header>
 | 
			
		||||
          <Form.Group inline>
 | 
			
		||||
            <Form.Input
 | 
			
		||||
              label='Telegram Bot Token'
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user