From 4bbcb00d13870db4f9da64e152f3202b66a318a4 Mon Sep 17 00:00:00 2001 From: tbphp Date: Fri, 9 May 2025 00:15:44 +0800 Subject: [PATCH 1/2] feat: update OpenRouter balance --- controller/channel-billing.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/controller/channel-billing.go b/controller/channel-billing.go index 41f8d8f7..015b4323 100644 --- a/controller/channel-billing.go +++ b/controller/channel-billing.go @@ -108,6 +108,13 @@ type DeepSeekUsageResponse struct { } `json:"balance_infos"` } +type OpenRouterResponse struct { + Data struct { + TotalCredits float64 `json:"total_credits"` + TotalUsage float64 `json:"total_usage"` + } `json:"data"` +} + // GetAuthHeader get auth header func GetAuthHeader(token string) http.Header { h := http.Header{} @@ -281,6 +288,22 @@ func updateChannelAIGC2DBalance(channel *model.Channel) (float64, error) { return response.TotalAvailable, nil } +func updateChannelOpenRouterBalance(channel *model.Channel) (float64, error) { + url := "https://openrouter.ai/api/v1/credits" + body, err := GetResponseBody("GET", url, channel, GetAuthHeader(channel.Key)) + if err != nil { + return 0, err + } + response := OpenRouterResponse{} + err = json.Unmarshal(body, &response) + if err != nil { + return 0, err + } + balance := response.Data.TotalCredits - response.Data.TotalUsage + channel.UpdateBalance(balance) + return balance, nil +} + func updateChannelBalance(channel *model.Channel) (float64, error) { baseURL := common.ChannelBaseURLs[channel.Type] if channel.GetBaseURL() == "" { @@ -307,6 +330,8 @@ func updateChannelBalance(channel *model.Channel) (float64, error) { return updateChannelSiliconFlowBalance(channel) case common.ChannelTypeDeepSeek: return updateChannelDeepSeekBalance(channel) + case common.ChannelTypeOpenRouter: + return updateChannelOpenRouterBalance(channel) default: return 0, errors.New("尚未实现") } From 7192437863b63fb6e7fc83faae4feffb5ac71e8c Mon Sep 17 00:00:00 2001 From: tbphp Date: Fri, 9 May 2025 00:20:26 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E5=91=BD=E5=90=8D?= =?UTF-8?q?=E8=A7=84=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/channel-billing.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/controller/channel-billing.go b/controller/channel-billing.go index 015b4323..2bda0fd2 100644 --- a/controller/channel-billing.go +++ b/controller/channel-billing.go @@ -108,7 +108,7 @@ type DeepSeekUsageResponse struct { } `json:"balance_infos"` } -type OpenRouterResponse struct { +type OpenRouterCreditResponse struct { Data struct { TotalCredits float64 `json:"total_credits"` TotalUsage float64 `json:"total_usage"` @@ -294,7 +294,7 @@ func updateChannelOpenRouterBalance(channel *model.Channel) (float64, error) { if err != nil { return 0, err } - response := OpenRouterResponse{} + response := OpenRouterCreditResponse{} err = json.Unmarshal(body, &response) if err != nil { return 0, err