mirror of
https://github.com/songquanpeng/one-api.git
synced 2025-09-20 02:26:38 +08:00
- Refactor constant definitions and organization - Clean up package level variables and functions - Introduce new `relaymode` and `apitype` packages for constant definitions - Refactor and simplify code in several packages including `openai`, `relay/channel/baidu`, `relay/util`, `relay/controller`, `relay/channeltype` - Add helper functions in `relay/channeltype` package to convert channel type constants to corresponding API type constants - Remove deprecated functions such as `ResponseText2Usage` from `relay/channel/openai/helper.go` - Modify code in `relay/util/validation.go` and related files to use new `validator.ValidateTextRequest` function - Rename `util` package to `relaymode` and update related imports in several packages
43 lines
1.5 KiB
Go
43 lines
1.5 KiB
Go
package billing
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"github.com/songquanpeng/one-api/common/logger"
|
|
"github.com/songquanpeng/one-api/model"
|
|
)
|
|
|
|
func ReturnPreConsumedQuota(ctx context.Context, preConsumedQuota int64, tokenId int) {
|
|
if preConsumedQuota != 0 {
|
|
go func(ctx context.Context) {
|
|
// return pre-consumed quota
|
|
err := model.PostConsumeTokenQuota(tokenId, -preConsumedQuota)
|
|
if err != nil {
|
|
logger.Error(ctx, "error return pre-consumed quota: "+err.Error())
|
|
}
|
|
}(ctx)
|
|
}
|
|
}
|
|
|
|
func PostConsumeQuota(ctx context.Context, tokenId int, quotaDelta int64, totalQuota int64, userId int, channelId int, modelRatio float64, groupRatio float64, modelName string, tokenName string) {
|
|
// quotaDelta is remaining quota to be consumed
|
|
err := model.PostConsumeTokenQuota(tokenId, quotaDelta)
|
|
if err != nil {
|
|
logger.SysError("error consuming token remain quota: " + err.Error())
|
|
}
|
|
err = model.CacheUpdateUserQuota(ctx, userId)
|
|
if err != nil {
|
|
logger.SysError("error update user quota cache: " + err.Error())
|
|
}
|
|
// totalQuota is total quota consumed
|
|
if totalQuota != 0 {
|
|
logContent := fmt.Sprintf("模型倍率 %.2f,分组倍率 %.2f", modelRatio, groupRatio)
|
|
model.RecordConsumeLog(ctx, userId, channelId, int(totalQuota), 0, modelName, tokenName, totalQuota, logContent)
|
|
model.UpdateUserUsedQuotaAndRequestCount(userId, totalQuota)
|
|
model.UpdateChannelUsedQuota(channelId, totalQuota)
|
|
}
|
|
if totalQuota <= 0 {
|
|
logger.Error(ctx, fmt.Sprintf("totalQuota consumed is %d, something is wrong", totalQuota))
|
|
}
|
|
}
|