diff --git a/controller/billing.go b/controller/billing.go index 2ef2d99c..79eae1e2 100644 --- a/controller/billing.go +++ b/controller/billing.go @@ -11,9 +11,11 @@ func GetSubscription(c *gin.Context) { var usedQuota int var err error var token *model.Token + var expiredTime int64 if common.DisplayTokenStatEnabled { tokenId := c.GetInt("token_id") token, err = model.GetTokenById(tokenId) + expiredTime = token.ExpiredTime remainQuota = token.RemainQuota usedQuota = token.UsedQuota } else { @@ -21,6 +23,9 @@ func GetSubscription(c *gin.Context) { remainQuota, err = model.GetUserQuota(userId) usedQuota, err = model.GetUserUsedQuota(userId) } + if expiredTime <= 0 { + expiredTime = 0 + } if err != nil { openAIError := OpenAIError{ Message: err.Error(), @@ -45,6 +50,7 @@ func GetSubscription(c *gin.Context) { SoftLimitUSD: amount, HardLimitUSD: amount, SystemHardLimitUSD: amount, + AccessUntil: expiredTime, } c.JSON(200, subscription) return diff --git a/controller/channel-billing.go b/controller/channel-billing.go index 31c9a133..894af426 100644 --- a/controller/channel-billing.go +++ b/controller/channel-billing.go @@ -22,6 +22,7 @@ type OpenAISubscriptionResponse struct { SoftLimitUSD float64 `json:"soft_limit_usd"` HardLimitUSD float64 `json:"hard_limit_usd"` SystemHardLimitUSD float64 `json:"system_hard_limit_usd"` + AccessUntil int64 `json:"access_until"` } type OpenAIUsageDailyCost struct { @@ -96,6 +97,9 @@ func GetResponseBody(method, url string, channel *model.Channel, headers http.He if err != nil { return nil, err } + if res.StatusCode != http.StatusOK { + return nil, fmt.Errorf("status code: %d", res.StatusCode) + } body, err := io.ReadAll(res.Body) if err != nil { return nil, err