mirror of
https://github.com/songquanpeng/one-api.git
synced 2025-11-14 20:23:46 +08:00
🐛 fix: 修复余额的问题
This commit is contained in:
30
providers/aigc2d/balance.go
Normal file
30
providers/aigc2d/balance.go
Normal file
@@ -0,0 +1,30 @@
|
||||
package aigc2d
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"one-api/common"
|
||||
"one-api/model"
|
||||
"one-api/providers/base"
|
||||
)
|
||||
|
||||
func (p *Aigc2dProvider) Balance(channel *model.Channel) (float64, error) {
|
||||
fullRequestURL := p.GetFullRequestURL("/dashboard/billing/credit_grants", "")
|
||||
headers := p.GetRequestHeaders()
|
||||
|
||||
client := common.NewClient()
|
||||
req, err := client.NewRequest("GET", fullRequestURL, common.WithHeader(headers))
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// 发送请求
|
||||
var response base.BalanceResponse
|
||||
_, errWithCode := common.SendRequest(req, &response, false)
|
||||
if errWithCode != nil {
|
||||
return 0, errors.New(errWithCode.OpenAIError.Message)
|
||||
}
|
||||
|
||||
channel.UpdateBalance(response.TotalAvailable)
|
||||
|
||||
return response.TotalAvailable, nil
|
||||
}
|
||||
20
providers/aigc2d/base.go
Normal file
20
providers/aigc2d/base.go
Normal file
@@ -0,0 +1,20 @@
|
||||
package aigc2d
|
||||
|
||||
import (
|
||||
"one-api/providers/base"
|
||||
"one-api/providers/openai"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type Aigc2dProviderFactory struct{}
|
||||
|
||||
func (f Aigc2dProviderFactory) Create(c *gin.Context) base.ProviderInterface {
|
||||
return &Aigc2dProvider{
|
||||
OpenAIProvider: openai.CreateOpenAIProvider(c, "https://api.aigc2d.com"),
|
||||
}
|
||||
}
|
||||
|
||||
type Aigc2dProvider struct {
|
||||
*openai.OpenAIProvider
|
||||
}
|
||||
@@ -4,10 +4,11 @@ import (
|
||||
"errors"
|
||||
"one-api/common"
|
||||
"one-api/model"
|
||||
"one-api/providers/base"
|
||||
)
|
||||
|
||||
func (p *Api2dProvider) Balance(channel *model.Channel) (float64, error) {
|
||||
fullRequestURL := "https://api.aigc2d.com/dashboard/billing/credit_grants"
|
||||
fullRequestURL := p.GetFullRequestURL("/dashboard/billing/credit_grants", "")
|
||||
headers := p.GetRequestHeaders()
|
||||
|
||||
client := common.NewClient()
|
||||
@@ -17,7 +18,7 @@ func (p *Api2dProvider) Balance(channel *model.Channel) (float64, error) {
|
||||
}
|
||||
|
||||
// 发送请求
|
||||
var response APGC2DGPTUsageResponse
|
||||
var response base.BalanceResponse
|
||||
_, errWithCode := common.SendRequest(req, &response, false)
|
||||
if errWithCode != nil {
|
||||
return 0, errors.New(errWithCode.OpenAIError.Message)
|
||||
|
||||
30
providers/api2gpt/balance.go
Normal file
30
providers/api2gpt/balance.go
Normal file
@@ -0,0 +1,30 @@
|
||||
package api2gpt
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"one-api/common"
|
||||
"one-api/model"
|
||||
"one-api/providers/base"
|
||||
)
|
||||
|
||||
func (p *Api2gptProvider) Balance(channel *model.Channel) (float64, error) {
|
||||
fullRequestURL := p.GetFullRequestURL("/dashboard/billing/credit_grants", "")
|
||||
headers := p.GetRequestHeaders()
|
||||
|
||||
client := common.NewClient()
|
||||
req, err := client.NewRequest("GET", fullRequestURL, common.WithHeader(headers))
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// 发送请求
|
||||
var response base.BalanceResponse
|
||||
_, errWithCode := common.SendRequest(req, &response, false)
|
||||
if errWithCode != nil {
|
||||
return 0, errors.New(errWithCode.OpenAIError.Message)
|
||||
}
|
||||
|
||||
channel.UpdateBalance(response.TotalAvailable)
|
||||
|
||||
return response.TotalRemaining, nil
|
||||
}
|
||||
20
providers/api2gpt/base.go
Normal file
20
providers/api2gpt/base.go
Normal file
@@ -0,0 +1,20 @@
|
||||
package api2gpt
|
||||
|
||||
import (
|
||||
"one-api/providers/base"
|
||||
"one-api/providers/openai"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type Api2gptProviderFactory struct{}
|
||||
|
||||
func (f Api2gptProviderFactory) Create(c *gin.Context) base.ProviderInterface {
|
||||
return &Api2gptProvider{
|
||||
OpenAIProvider: openai.CreateOpenAIProvider(c, "https://api.api2gpt.com"),
|
||||
}
|
||||
}
|
||||
|
||||
type Api2gptProvider struct {
|
||||
*openai.OpenAIProvider
|
||||
}
|
||||
@@ -75,7 +75,7 @@ type ImageVariationsInterface interface {
|
||||
|
||||
// 余额接口
|
||||
type BalanceInterface interface {
|
||||
BalanceAction(channel *model.Channel) (float64, error)
|
||||
Balance(channel *model.Channel) (float64, error)
|
||||
}
|
||||
|
||||
type ProviderResponseHandler interface {
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package api2d
|
||||
package base
|
||||
|
||||
type APGC2DGPTUsageResponse struct {
|
||||
//Grants interface{} `json:"grants"`
|
||||
type BalanceResponse struct {
|
||||
Object string `json:"object"`
|
||||
TotalAvailable float64 `json:"total_available"`
|
||||
TotalGranted float64 `json:"total_granted"`
|
||||
TotalUsed float64 `json:"total_used"`
|
||||
TotalRemaining float64 `json:"total_remaining"`
|
||||
TotalAvailable float64 `json:"total_available"`
|
||||
}
|
||||
@@ -2,9 +2,11 @@ package providers
|
||||
|
||||
import (
|
||||
"one-api/common"
|
||||
"one-api/providers/aigc2d"
|
||||
"one-api/providers/aiproxy"
|
||||
"one-api/providers/ali"
|
||||
"one-api/providers/api2d"
|
||||
"one-api/providers/api2gpt"
|
||||
"one-api/providers/azure"
|
||||
"one-api/providers/baidu"
|
||||
"one-api/providers/base"
|
||||
@@ -43,6 +45,9 @@ func init() {
|
||||
providerFactories[common.ChannelTypeAPI2D] = api2d.Api2dProviderFactory{}
|
||||
providerFactories[common.ChannelTypeCloseAI] = closeai.CloseaiProviderFactory{}
|
||||
providerFactories[common.ChannelTypeOpenAISB] = openaisb.OpenaiSBProviderFactory{}
|
||||
providerFactories[common.ChannelTypeAIGC2D] = aigc2d.Aigc2dProviderFactory{}
|
||||
providerFactories[common.ChannelTypeAPI2GPT] = api2gpt.Api2gptProviderFactory{}
|
||||
|
||||
}
|
||||
|
||||
// 获取供应商
|
||||
|
||||
Reference in New Issue
Block a user