Documentation
¶
Index ¶
- Constants
- Variables
- func AddLogToBatch(log *Log)
- func BatchDelModelChannels(params *BatchChannelsParams) (int64, error)
- func BatchDeleteChannel(ids []int) (int64, error)
- func BatchInsert[T any](db *gorm.DB, data []T) error
- func BatchInsertChannels(channels []Channel) error
- func BatchUpdateChannelsAzureApi(params *BatchChannelsParams) (int64, error)
- func CacheDecreaseUserQuota(id int, quota int) error
- func CacheDecreaseUserRealtimeQuota(id int, quota int) (int64, error)
- func CacheGetUserGroup(id int) (group string, err error)
- func CacheGetUserQuota(id int) (quota int, err error)
- func CacheGetUsername(id int) (username string, err error)
- func CacheIncreaseUserRealtimeQuota(id int, quota int) (int64, error)
- func CacheIsUserEnabled(userId int) (bool, error)
- func CacheUpdateUserQuota(id int) error
- func CacheUpdateUserRealtimeQuota(id int, quota int) (int64, error)
- func ChangeChannelsTagStatus(tag string, status int) error
- func ChangeUserGroupEnable(id int, enable bool) error
- func ChangeUserQuota(id int, quota int, isRecharge bool) (err error)
- func CheckAndUpgradeUserGroup(userId int, rechargeAmount int) error
- func CloseDB() error
- func CloseUnfinishedOrder() error
- func CountActivePrivateGroupInviteCodes(groupId int) (int64, error)
- func CountActivePrivateGroupMembers(groupId int) (int64, error)
- func CreateModelInfo(modelInfo *ModelInfo) error
- func CreateModelOwnedBy(modelOwnedBy *ModelOwnedBy) error
- func CreatePrivateGroup(ownerUserId int, groupSlug string) (*PrivateGroup, *PrivateGroupGrant, error)
- func DecreaseTokenQuota(id int, quota int) (err error)
- func DecreaseUserQuota(id int, quota int) (err error)
- func DeleteAllPrices(tx *gorm.DB) error
- func DeleteAllPricesNotLock(tx *gorm.DB) error
- func DeleteChannelTag(channelId int) error
- func DeleteChannelsTag(tag string, delDisabled bool) error
- func DeleteDisabledChannel() (int64, error)
- func DeleteModelInfo(id int) error
- func DeleteModelOwnedBy(id int) error
- func DeleteOldLog(targetTimestamp int64) (int64, error)
- func DeletePrices(tx *gorm.DB, models []string) error
- func DeletePricesByModelNameAndNotLock(tx *gorm.DB, models []string) error
- func DeletePrivateGroup(group *PrivateGroup) error
- func DeleteRedemptionById(id int) (err error)
- func DeleteTokenById(id int, userId int) (err error)
- func DeleteUserById(id int) (err error)
- func GetAllActivePrivateGroupSlugs() ([]string, error)
- func GetDefaultExtraRatio() string
- func GetExtraPriceIsPrompt(key string) bool
- func GetFieldsByID(model interface{}, fieldNames []string, id int, result interface{}) error
- func GetIncreaseTokens(tokens int, ratio float64) int
- func GetMaxUserId() int
- func GetRootUserEmail() (email string)
- func GetUserFields(id int, fields []string) (map[string]interface{}, error)
- func GetUserGroup(id int) (group string, err error)
- func GetUserIdByAffCode(affCode string) (int, error)
- func GetUserPrivateGroupDescriptions(userId int) (map[string]string, error)
- func GetUserQuota(id int) (quota int, err error)
- func GetUserUsedQuota(id int) (quota int, err error)
- func GetUserWebAuthnCredentials(userId int) []webauthn.Credential
- func GetUsernameById(id int) (username string)
- func HandleOldTokenMaxId()
- func HasPrivateGroupChannelReference(groupSlug string) (bool, error)
- func HasPrivateGroupTokenReference(groupSlug string) (bool, error)
- func HashPrivateGroupInviteCode(code string) string
- func IncreaseTokenQuota(id int, quota int) (err error)
- func IncreaseUserQuota(id int, quota int) (err error)
- func InitBatchUpdater()
- func InitDB() (err error)
- func InitModelInfo()
- func InitOptionMap()
- func InsertPrices(tx *gorm.DB, prices []*Price) error
- func InsertStatisticsMonth() error
- func InsertStatisticsMonthForDate(date time.Time) error
- func IsActivePrivateGroupSlug(groupSlug string) (bool, error)
- func IsAdmin(userId int) bool
- func IsEmailAlreadyTaken(email string) bool
- func IsFieldAlreadyTaken(field string, value any) bool
- func IsGitHubIdAlreadyTaken(githubId string) bool
- func IsGitHubIdNewAlreadyTaken(githubIdNew int) bool
- func IsGoogleIdAlreadyTaken(googleId string) bool
- func IsLarkIdAlreadyTaken(larkId string) bool
- func IsReliable(userId int) bool
- func IsStatisticsMonthGenerated(date time.Time) bool
- func IsTelegramCommandAlreadyTaken(command string, id int) bool
- func IsTelegramIdAlreadyTaken(telegramId int64) bool
- func IsUserEnabled(userId int) (bool, error)
- func IsUsernameAlreadyTaken(username string) bool
- func IsWeChatIdAlreadyTaken(wechatId string) bool
- func MarkOfflineTokilakeWorkerNodesBefore(cutoff int64) error
- func MjBulkUpdate(mjIds []string, params map[string]any) error
- func MjBulkUpdateByTaskIds(taskIDs []int, params map[string]any) error
- func NewModelOwnedBys()
- func NewPricing()
- func NormalizePrivateGroupInviteCode(code string) string
- func PostConsumeTokenQuotaWithInfo(tokenId int, userId int, unlimitedQuota bool, quota int) (err error)
- func PreConsumeTokenQuota(tokenId int, quota int) (err error)
- func PrivateGroupSlugExists(groupSlug string) (bool, error)
- func RecordConsumeLog(ctx context.Context, userId int, channelId int, promptTokens int, ...)
- func RecordExists(table interface{}, fieldName string, fieldValue interface{}, ...) bool
- func RecordLog(userId int, logType int, content string)
- func RecordQuotaLog(userId int, logType int, quota int, ip string, content string)
- func Redeem(key string, userId int, ip string) (quota int, err error)
- func RedeemPrivateGroupInviteCode(code string, userId int) (*PrivateGroup, *PrivateGroupGrant, *PrivateGroupInviteCode, bool, error)
- func ResetUserPasswordByEmail(email string, password string) error
- func RevokePrivateGroupGrant(groupId int, userId int) error
- func SaveWebAuthnCredential(userId int, credential *webauthn.Credential, alias string) error
- func SetupDB()
- func SumUsedQuota(startTimestamp int64, endTimestamp int64, modelName string, username string, ...) (quota int)
- func SyncOptions(frequency int)
- func TaskBulkUpdate(TaskIds []string, params map[string]any) error
- func TaskBulkUpdateByID(ids []int64, params map[string]any) error
- func TaskBulkUpdateByTaskIds(taskIDs []int64, params map[string]any) error
- func UpdateChannelStatusById(id int, status int)
- func UpdateChannelUsedQuota(id int, quota int)
- func UpdateChannelsTag(tag string, channel *Channel) error
- func UpdateChannelsTagPriority(tag string, value int) error
- func UpdateFieldsByID(model interface{}, id int, fields map[string]interface{}) error
- func UpdateModelInfo(modelInfo *ModelInfo) error
- func UpdateModelOwnedBy(modelOwnedBy *ModelOwnedBy) error
- func UpdateOption(key string, value string) error
- func UpdatePriceByPriceService() error
- func UpdatePrices(tx *gorm.DB, models []string, prices *Price) error
- func UpdatePrivateGroupInviteCodeStatus(code *PrivateGroupInviteCode, status int) error
- func UpdatePrivateGroupSlug(group *PrivateGroup, newSlug string) error
- func UpdateStatistics(updateType StatisticsUpdateType) error
- func UpdateUser(id int, fields map[string]interface{}) error
- func UpdateUserUsedQuotaAndRequestCount(id int, quota int)
- func UserGroupSymbolExists(symbol string) (bool, error)
- type AdminSearchTokensParams
- type BatchChannelsParams
- type BatchPrices
- type Channel
- func (c *Channel) AllowStream(modelName string) bool
- func (channel *Channel) Delete() error
- func (channel *Channel) GetBaseURL() string
- func (channel *Channel) GetCustomParameter() string
- func (channel *Channel) GetModelMapping() string
- func (channel *Channel) GetPriority() int64
- func (channel *Channel) Insert() error
- func (c *Channel) SetProxy()
- func (channel *Channel) StatusToStr() string
- func (channel *Channel) Update(overwrite bool) error
- func (channel *Channel) UpdateBalance(balance float64)
- func (channel *Channel) UpdateRaw(overwrite bool) error
- func (channel *Channel) UpdateResponseTime(responseTime int64)
- type ChannelChoice
- type ChannelStatistics
- type ChannelTag
- type ChannelTagCollection
- type ChannelsChooser
- func (cc *ChannelsChooser) ChangeStatus(channelId int, status bool)
- func (cc *ChannelsChooser) CleanupExpiredCooldowns()
- func (cc *ChannelsChooser) Disable(channelId int)
- func (cc *ChannelsChooser) Enable(channelId int)
- func (cc *ChannelsChooser) GetChannel(channelId int) *Channel
- func (cc *ChannelsChooser) GetGroupModels(group string) ([]string, error)
- func (cc *ChannelsChooser) GetModelsGroups() map[string]map[string]bool
- func (cc *ChannelsChooser) IsInCooldown(channelId int, modelName string) bool
- func (cc *ChannelsChooser) Load()
- func (cc *ChannelsChooser) Next(group, modelName string, filters ...ChannelsFilterFunc) (*Channel, error)
- func (cc *ChannelsChooser) SetCooldowns(channelId int, modelName string) bool
- type ChannelsFilterFunc
- type CurrencyType
- type DataResult
- func GetAllMJTasks(params *MJTaskQueryParams) (*DataResult[Midjourney], error)
- func GetAllTasks(params *TaskQueryParams) (*DataResult[Task], error)
- func GetAllUserMJTask(userId int, params *MJTaskQueryParams) (*DataResult[Midjourney], error)
- func GetAllUserTasks(userId int, params *TaskQueryParams) (*DataResult[Task], error)
- func GetChannelsList(params *SearchChannelsParams) (*DataResult[Channel], error)
- func GetLogsList(params *LogsListParams) (*DataResult[Log], error)
- func GetOrderList(params *SearchOrderParams) (*DataResult[Order], error)
- func GetPanymentList(params *SearchPaymentParams) (*DataResult[Payment], error)
- func GetRedemptionsList(params *GenericParams) (*DataResult[Redemption], error)
- func GetTelegramMenusList(params *GenericParams) (*DataResult[TelegramMenu], error)
- func GetTokensListByAdmin(params *AdminSearchTokensParams) (*DataResult[TokenWithOwner], error)
- func GetUserGroupsList(params *SearchUserGroupParams) (*DataResult[UserGroup], error)
- func GetUserInvoices(params *StatisticsMonthSearchParams) (*DataResult[StatisticsMonthNoModel], error)
- func GetUserLogsList(userId int, params *LogsListParams) (*DataResult[Log], error)
- func GetUserTokensList(userId int, params *GenericParams) (*DataResult[Token], error)
- func GetUsersList(params *GenericParams) (*DataResult[User], error)
- func PaginateAndOrder[T modelable](db *gorm.DB, params *PaginationParams, result *[]*T, ...) (*DataResult[T], error)
- type GenericParams
- type HeartbeatSetting
- type LimitModelSetting
- type LimitsConfig
- type LimitsIPSetting
- type Log
- type LogStatistic
- type LogStatisticGroupChannel
- type LogStatisticGroupModel
- type LogsListParams
- type MJTaskQueryParams
- type Midjourney
- type ModelInfo
- type ModelInfoResponse
- type ModelOwnedBy
- type ModelOwnedBys
- func (m *ModelOwnedBys) Get(id int) *ModelOwnedBy
- func (m *ModelOwnedBys) GetAll() map[int]*ModelOwnedBy
- func (m *ModelOwnedBys) GetIcon(id int) string
- func (m *ModelOwnedBys) GetName(id int) string
- func (m *ModelOwnedBys) Load() error
- func (m *ModelOwnedBys) SyncModelOwnedBy(modelOwnedBies []*ModelOwnedBy)
- type ModelType
- type ModelUsageByUser
- type MultiUserStatistic
- type Option
- type Order
- type OrderStatistics
- type OrderStatisticsGroup
- type OrderStatus
- type PaginationParams
- type Payment
- type PluginType
- type Price
- func (price *Price) Delete() error
- func (price *Price) FetchInputCurrencyPrice(rate float64) string
- func (price *Price) FetchOutputCurrencyPrice(rate float64) string
- func (price *Price) GetExtraRatio(key string) float64
- func (price *Price) GetInput() float64
- func (price *Price) GetOutput() float64
- func (price *Price) Insert() error
- func (price *Price) Update(modelName string) error
- type PriceUpdateMode
- type Pricing
- func (p *Pricing) AddPrice(price *Price) error
- func (p *Pricing) BatchDeletePrices(models []string) error
- func (p *Pricing) BatchSetPrices(batchPrices *BatchPrices, originalModels []string) error
- func (p *Pricing) DeletePrice(modelName string) error
- func (p *Pricing) GetAllPrices() map[string]*Price
- func (p *Pricing) GetAllPricesList() []*Price
- func (p *Pricing) GetPrice(modelName string) *Price
- func (p *Pricing) Init() error
- func (p *Pricing) SyncPriceOnlyUpdate(pricing []*Price) error
- func (p *Pricing) SyncPriceWithOverwrite(pricing []*Price) error
- func (p *Pricing) SyncPriceWithoutOverwrite(pricing []*Price) error
- func (p *Pricing) SyncPricing(pricing []*Price, mode string) error
- func (p *Pricing) UpdatePrice(modelName string, price *Price) error
- type PrivateGroup
- type PrivateGroupGrant
- type PrivateGroupInviteCode
- type PrivateGroupMember
- type PrivateGroupSummary
- type Redemption
- type RedemptionStatistics
- type RedemptionStatisticsGroup
- type SearchChannelsParams
- type SearchChannelsTagParams
- type SearchOrderParams
- type SearchPaymentParams
- type SearchUserGroupParams
- type Statistics
- type StatisticsMonth
- type StatisticsMonthDetailSearchParams
- type StatisticsMonthGeneratedHistory
- type StatisticsMonthModel
- type StatisticsMonthNoModel
- type StatisticsMonthSearchParams
- type StatisticsUpdateType
- type StatisticsUser
- type Task
- func GetAllUnFinishSyncTasks(limit int) []*Task
- func GetTaskActionByTaskIds(platform string, taskIds []string) (task []*Task, err error)
- func GetTaskByTaskId(platform string, userId int, taskId string) (task *Task, err error)
- func GetTaskByTaskIds(platform string, userId int, taskIds []string) (task []*Task, err error)
- func ListUserTasksByPlatform(userId int, platform string, status *TaskStatus, limit int) ([]*Task, error)
- type TaskQueryParams
- type TaskStatus
- type TelegramMenu
- type Token
- func CacheGetTokenByKey(key string) (*Token, error)
- func GetTokenById(id int) (*Token, error)
- func GetTokenByIds(id int, userId int) (*Token, error)
- func GetTokenByKey(key string) (*Token, error)
- func GetTokenByName(name string, userId int) (*Token, error)
- func GetTokenModel(key string) (token *Token, err error)
- func ValidateUserToken(key string) (token *Token, err error)
- type TokenSetting
- type TokenWithOwner
- type TokilakeWorkerNode
- func (node *TokilakeWorkerNode) GetHardwareInfo() map[string]any
- func (node *TokilakeWorkerNode) GetModels() []string
- func (node *TokilakeWorkerNode) Insert() error
- func (node *TokilakeWorkerNode) SetHardwareInfo(info map[string]any)
- func (node *TokilakeWorkerNode) SetModels(models []string)
- func (node *TokilakeWorkerNode) String() string
- func (node *TokilakeWorkerNode) TouchHeartbeat(status int) error
- func (node *TokilakeWorkerNode) Update() error
- type User
- func (user *User) Delete() error
- func (user *User) FillUserByEmail() error
- func (user *User) FillUserByGitHubId() error
- func (user *User) FillUserByGitHubIdNew() error
- func (user *User) FillUserByGoogleId() error
- func (user *User) FillUserById() error
- func (user *User) FillUserByLarkId() error
- func (user *User) FillUserByOidcId() error
- func (user *User) FillUserByUsername() error
- func (user *User) FillUserByWeChatId() error
- func (user *User) Insert(inviterId int) error
- func (user *User) Update(updatePassword bool) error
- func (user *User) ValidateAndFill() (err error)
- func (user *User) WebAuthnCredentials() []webauthn.Credential
- func (user *User) WebAuthnDisplayName() string
- func (user *User) WebAuthnID() []byte
- func (user *User) WebAuthnIcon() string
- func (user *User) WebAuthnName() string
- type UserGroup
- type UserGroupRatio
- func (cgrm *UserGroupRatio) GetAPILimiter(symbol string) limit.RateLimiter
- func (cgrm *UserGroupRatio) GetAPIRate(symbol string) int
- func (cgrm *UserGroupRatio) GetAll() map[string]*UserGroup
- func (cgrm *UserGroupRatio) GetBySymbol(symbol string) *UserGroup
- func (cgrm *UserGroupRatio) GetByTokenUserGroup(tokenGroup, userGroup string) *UserGroup
- func (cgrm *UserGroupRatio) GetPublicGroupList() []string
- func (cgrm *UserGroupRatio) Load()
- type UserGroupedStatistic
- type UserPrivateGroupGrant
- type UserStatisticsByPeriod
- type UserUpdates
- type WebAuthnCredential
Constants ¶
const ( LogTypeUnknown = iota LogTypeTopup LogTypeConsume LogTypeManage LogTypeSystem )
const ( TokensPriceType = "tokens" TimesPriceType = "times" DefaultPrice = 30.0 DollarRate = 0.002 RMBRate = 0.014 DefaultCacheRatios = 0.5 DefaultAudioRatio = 40 DefaultCachedWriteRatio = 1.25 DefaultCachedReadRatio = 0.1 )
const ( PrivateGroupStatusEnabled = 1 PrivateGroupGrantRoleOwner = "owner" PrivateGroupGrantRoleMember = "member" PrivateGroupGrantSourceCreate = "create" PrivateGroupGrantSourceInvite = "invite" PrivateGroupGrantSourceAdmin = "admin" PrivateGroupInviteCodeStatusEnabled = 1 PrivateGroupInviteCodeStatusDisabled = 2 )
const ( TaskPlatformSuno = "suno" TaskPlatformKling = "kling" TaskPlatformTokiameVideo = "tokiame_video" )
const ( TokilakeWorkerNodeStatusOnline = 1 TokilakeWorkerNodeStatusBusy = 2 TokilakeWorkerNodeStatusOffline = 3 )
const ( BatchUpdateTypeUserQuota = iota BatchUpdateTypeTokenQuota BatchUpdateTypeUsedQuota BatchUpdateTypeChannelUsedQuota BatchUpdateTypeRequestCount BatchUpdateTypeCount // if you add a new type, you need to add a new map and a new lock )
const ModelOwnedByReserveID = 1000
Variables ¶
var ( TokenCacheSeconds = 0 UserGroupCacheKey = "user_group:%d" UserTokensKey = "token:%s" UsernameCacheKey = "user_name:%d" UserQuotaCacheKey = "user_quota:%d" UserEnabledCacheKey = "user_enabled:%d" UserRealtimeQuotaKey = "user_realtime_quota:%d" UserRealtimeQuotaExpiration = 24 * time.Hour OldUserTokensCacheKey = "old_user_tokens_cache" )
var ( ErrTokenNotFound = errors.New("令牌不存在") ErrTokenExpired = errors.New("令牌已过期") ErrTokenQuotaExhausted = errors.New("令牌额度已用尽") ErrTokenInvalid = errors.New("无效的令牌") ErrTokenQuotaGet = errors.New("获取令牌额度失败") )
var ChannelGroup = ChannelsChooser{}
var DB *gorm.DB
var ExtraKeyIsPrompt = map[string]bool{ config.UsageExtraCache: true, config.UsageExtraCachedWrite: true, config.UsageExtraCachedRead: true, config.UsageExtraInputAudio: true, config.UsageExtraOutputAudio: false, config.UsageExtraReasoning: false, config.UsageExtraInputTextTokens: true, config.UsageExtraOutputTextTokens: false, config.UsageExtraInputImageTokens: true, config.UsageExtraOutputImageTokens: false, }
var GlobalUserGroupRatio = UserGroupRatio{}
var UnknownOwnedBy = "未知"
Functions ¶
func AddLogToBatch ¶
func AddLogToBatch(log *Log)
func BatchDelModelChannels ¶
func BatchDelModelChannels(params *BatchChannelsParams) (int64, error)
func BatchDeleteChannel ¶
func BatchInsertChannels ¶
func BatchUpdateChannelsAzureApi ¶
func BatchUpdateChannelsAzureApi(params *BatchChannelsParams) (int64, error)
func CacheDecreaseUserQuota ¶
func CacheGetUserGroup ¶
func CacheGetUserQuota ¶
func CacheGetUsername ¶
func CacheIsUserEnabled ¶
func CacheUpdateUserQuota ¶
func ChangeChannelsTagStatus ¶
func ChangeUserGroupEnable ¶
func CheckAndUpgradeUserGroup ¶
CheckAndUpgradeUserGroup checks if a user's cumulative recharge amount falls within any promotion group's range and upgrades the user to that group if a match is found. The cumulative recharge amount is calculated as Quota + UsedQuota + rechargeAmount.
func CreateModelInfo ¶
func CreateModelOwnedBy ¶
func CreateModelOwnedBy(modelOwnedBy *ModelOwnedBy) error
func CreatePrivateGroup ¶
func CreatePrivateGroup(ownerUserId int, groupSlug string) (*PrivateGroup, *PrivateGroupGrant, error)
func DecreaseTokenQuota ¶
func DecreaseUserQuota ¶
func DeleteAllPrices ¶
func DeleteChannelTag ¶
func DeleteChannelsTag ¶
func DeleteDisabledChannel ¶
func DeleteModelInfo ¶
func DeleteModelOwnedBy ¶
func DeleteOldLog ¶
func DeletePricesByModelNameAndNotLock ¶
只删除指定的未lock的数据
func DeletePrivateGroup ¶
func DeletePrivateGroup(group *PrivateGroup) error
func DeleteRedemptionById ¶
func DeleteTokenById ¶
func DeleteUserById ¶
func GetDefaultExtraRatio ¶
func GetDefaultExtraRatio() string
func GetExtraPriceIsPrompt ¶
func GetFieldsByID ¶
func GetIncreaseTokens ¶
func GetMaxUserId ¶
func GetMaxUserId() int
func GetRootUserEmail ¶
func GetRootUserEmail() (email string)
func GetUserGroup ¶
func GetUserIdByAffCode ¶
func GetUserQuota ¶
func GetUserUsedQuota ¶
func GetUserWebAuthnCredentials ¶
func GetUserWebAuthnCredentials(userId int) []webauthn.Credential
获取用户的WebAuthn凭据
func GetUsernameById ¶
func HandleOldTokenMaxId ¶
func HandleOldTokenMaxId()
func IncreaseTokenQuota ¶
func IncreaseUserQuota ¶
func InitBatchUpdater ¶
func InitBatchUpdater()
func InitModelInfo ¶
func InitModelInfo()
func InitOptionMap ¶
func InitOptionMap()
func InsertStatisticsMonthForDate ¶
InsertStatisticsMonthForDate 生成指定月份的月度账单
func IsEmailAlreadyTaken ¶
func IsFieldAlreadyTaken ¶
func IsGitHubIdAlreadyTaken ¶
func IsGoogleIdAlreadyTaken ¶
func IsLarkIdAlreadyTaken ¶
func IsReliable ¶
func IsStatisticsMonthGenerated ¶
IsStatisticsMonthGenerated 传入日期,判断是否已生成账单数据
func IsUserEnabled ¶
func IsUsernameAlreadyTaken ¶
func IsWeChatIdAlreadyTaken ¶
func NewModelOwnedBys ¶
func NewModelOwnedBys()
func PostConsumeTokenQuotaWithInfo ¶
func PostConsumeTokenQuotaWithInfo(tokenId int, userId int, unlimitedQuota bool, quota int) (err error)
PostConsumeTokenQuotaWithInfo 消费 token 配额,直接使用传入的 userId 和 unlimitedQuota,避免数据库查询
func PreConsumeTokenQuota ¶
func PrivateGroupSlugExists ¶
func RecordConsumeLog ¶
func RecordExists ¶
func RecordQuotaLog ¶
func RedeemPrivateGroupInviteCode ¶
func RedeemPrivateGroupInviteCode(code string, userId int) (*PrivateGroup, *PrivateGroupGrant, *PrivateGroupInviteCode, bool, error)
func RevokePrivateGroupGrant ¶
func SaveWebAuthnCredential ¶
func SaveWebAuthnCredential(userId int, credential *webauthn.Credential, alias string) error
保存WebAuthn凭据
func SumUsedQuota ¶
func SyncOptions ¶
func SyncOptions(frequency int)
func TaskBulkUpdateByTaskIds ¶
func UpdateChannelStatusById ¶
func UpdateChannelUsedQuota ¶
func UpdateChannelsTag ¶
func UpdateFieldsByID ¶
func UpdateModelInfo ¶
func UpdateModelOwnedBy ¶
func UpdateModelOwnedBy(modelOwnedBy *ModelOwnedBy) error
func UpdateOption ¶
func UpdatePriceByPriceService ¶
func UpdatePriceByPriceService() error
func UpdatePrivateGroupInviteCodeStatus ¶
func UpdatePrivateGroupInviteCodeStatus(code *PrivateGroupInviteCode, status int) error
func UpdatePrivateGroupSlug ¶
func UpdatePrivateGroupSlug(group *PrivateGroup, newSlug string) error
func UpdateStatistics ¶
func UpdateStatistics(updateType StatisticsUpdateType) error
func UpdateUser ¶
func UserGroupSymbolExists ¶
Types ¶
type AdminSearchTokensParams ¶
type AdminSearchTokensParams struct {
GenericParams
UserId int `form:"user_id"`
TokenId int `form:"token_id"`
}
AdminSearchTokensParams 管理员搜索令牌的参数
type BatchChannelsParams ¶
type BatchPrices ¶
type Channel ¶
type Channel struct {
Id int `json:"id"`
Type int `json:"type" form:"type" gorm:"default:0"`
Key string `json:"key" form:"key" gorm:"type:text"`
Status int `json:"status" form:"status" gorm:"default:1"`
Name string `json:"name" form:"name" gorm:"index"`
Weight *uint `json:"weight" gorm:"default:1"`
CreatedTime int64 `json:"created_time" gorm:"bigint"`
TestTime int64 `json:"test_time" gorm:"bigint"`
ResponseTime int `json:"response_time"` // in milliseconds
BaseURL *string `json:"base_url" gorm:"column:base_url;default:''"`
Other string `json:"other" form:"other"`
Balance float64 `json:"balance"` // in USD
BalanceUpdatedTime int64 `json:"balance_updated_time" gorm:"bigint"`
Models string `json:"models" form:"models"`
Group string `json:"group" form:"group" gorm:"type:varchar(32);default:'default'"`
Tag string `json:"tag" form:"tag" gorm:"type:varchar(32);default:''"`
UsedQuota int64 `json:"used_quota" gorm:"bigint;default:0"`
ModelMapping *string `json:"model_mapping" gorm:"type:text"`
ModelHeaders *string `json:"model_headers" gorm:"type:varchar(1024);default:''"`
CustomParameter *string `json:"custom_parameter" gorm:"type:varchar(1024);default:''"`
Priority *int64 `json:"priority" gorm:"bigint;default:0"`
Proxy *string `json:"proxy" gorm:"type:varchar(255);default:''"`
TestModel string `json:"test_model" form:"test_model" gorm:"type:varchar(50);default:''"`
OnlyChat bool `json:"only_chat" form:"only_chat" gorm:"default:false"`
PreCost int `json:"pre_cost" form:"pre_cost" gorm:"default:1"`
CompatibleResponse bool `json:"compatible_response" gorm:"default:false"`
AllowExtraBody bool `json:"allow_extra_body" form:"allow_extra_body" gorm:"default:false"`
DisabledStream *datatypes.JSONSlice[string] `json:"disabled_stream,omitempty" gorm:"type:json"`
Plugin *datatypes.JSONType[PluginType] `json:"plugin" form:"plugin" gorm:"type:json"`
DeletedAt gorm.DeletedAt `json:"-" gorm:"index"`
}
func GetAllChannels ¶
func GetChannelById ¶
func GetChannelsByTag ¶
func GetChannelsTagList ¶
func (*Channel) AllowStream ¶
func (*Channel) GetBaseURL ¶
func (*Channel) GetCustomParameter ¶
func (*Channel) GetModelMapping ¶
func (*Channel) GetPriority ¶
func (*Channel) StatusToStr ¶
func (*Channel) UpdateBalance ¶
func (*Channel) UpdateResponseTime ¶
type ChannelChoice ¶
type ChannelStatistics ¶
type ChannelStatistics struct {
TotalChannels int `json:"total_channels"`
Status int `json:"status"`
}
func GetStatisticsChannel ¶
func GetStatisticsChannel() (statistics []*ChannelStatistics, err error)
type ChannelTag ¶
func GetChannelsTagAllList ¶
func GetChannelsTagAllList() ([]*ChannelTag, error)
type ChannelTagCollection ¶
func GetChannelsTag ¶
func GetChannelsTag(tag string) (*ChannelTagCollection, error)
type ChannelsChooser ¶
type ChannelsChooser struct {
sync.RWMutex
Channels map[int]*ChannelChoice
Rule map[string]map[string][][]int // group -> model -> priority -> channelIds
Match []string
Cooldowns sync.Map
ModelGroup map[string]map[string]bool
}
func (*ChannelsChooser) ChangeStatus ¶
func (cc *ChannelsChooser) ChangeStatus(channelId int, status bool)
func (*ChannelsChooser) CleanupExpiredCooldowns ¶
func (cc *ChannelsChooser) CleanupExpiredCooldowns()
func (*ChannelsChooser) Disable ¶
func (cc *ChannelsChooser) Disable(channelId int)
func (*ChannelsChooser) Enable ¶
func (cc *ChannelsChooser) Enable(channelId int)
func (*ChannelsChooser) GetChannel ¶
func (cc *ChannelsChooser) GetChannel(channelId int) *Channel
func (*ChannelsChooser) GetGroupModels ¶
func (cc *ChannelsChooser) GetGroupModels(group string) ([]string, error)
func (*ChannelsChooser) GetModelsGroups ¶
func (cc *ChannelsChooser) GetModelsGroups() map[string]map[string]bool
func (*ChannelsChooser) IsInCooldown ¶
func (cc *ChannelsChooser) IsInCooldown(channelId int, modelName string) bool
func (*ChannelsChooser) Load ¶
func (cc *ChannelsChooser) Load()
func (*ChannelsChooser) Next ¶
func (cc *ChannelsChooser) Next(group, modelName string, filters ...ChannelsFilterFunc) (*Channel, error)
func (*ChannelsChooser) SetCooldowns ¶
func (cc *ChannelsChooser) SetCooldowns(channelId int, modelName string) bool
type ChannelsFilterFunc ¶
type ChannelsFilterFunc func(channelId int, choice *ChannelChoice) bool
func FilterChannelId ¶
func FilterChannelId(skipChannelIds []int) ChannelsFilterFunc
func FilterChannelTypes ¶
func FilterChannelTypes(channelTypes []int) ChannelsFilterFunc
func FilterDisabledStream ¶
func FilterDisabledStream(modelName string) ChannelsFilterFunc
func FilterOnlyChat ¶
func FilterOnlyChat() ChannelsFilterFunc
type CurrencyType ¶
type CurrencyType string
const ( CurrencyTypeUSD CurrencyType = "USD" CurrencyTypeCNY CurrencyType = "CNY" )
type DataResult ¶
type DataResult[T modelable] struct {
Data *[]*T `json:"data"`
Page int `json:"page"`
Size int `json:"size"`
TotalCount int64 `json:"total_count"`
}
func GetAllMJTasks ¶
func GetAllMJTasks(params *MJTaskQueryParams) (*DataResult[Midjourney], error)
func GetAllTasks ¶
func GetAllTasks(params *TaskQueryParams) (*DataResult[Task], error)
func GetAllUserMJTask ¶
func GetAllUserMJTask(userId int, params *MJTaskQueryParams) (*DataResult[Midjourney], error)
func GetAllUserTasks ¶
func GetAllUserTasks(userId int, params *TaskQueryParams) (*DataResult[Task], error)
func GetChannelsList ¶
func GetChannelsList(params *SearchChannelsParams) (*DataResult[Channel], error)
func GetLogsList ¶
func GetLogsList(params *LogsListParams) (*DataResult[Log], error)
func GetOrderList ¶
func GetOrderList(params *SearchOrderParams) (*DataResult[Order], error)
func GetPanymentList ¶
func GetPanymentList(params *SearchPaymentParams) (*DataResult[Payment], error)
func GetRedemptionsList ¶
func GetRedemptionsList(params *GenericParams) (*DataResult[Redemption], error)
func GetTelegramMenusList ¶
func GetTelegramMenusList(params *GenericParams) (*DataResult[TelegramMenu], error)
func GetTokensListByAdmin ¶
func GetTokensListByAdmin(params *AdminSearchTokensParams) (*DataResult[TokenWithOwner], error)
GetTokensListByAdmin 管理员查询令牌列表(可按用户ID或令牌ID查询)
func GetUserGroupsList ¶
func GetUserGroupsList(params *SearchUserGroupParams) (*DataResult[UserGroup], error)
func GetUserInvoices ¶
func GetUserInvoices(params *StatisticsMonthSearchParams) (*DataResult[StatisticsMonthNoModel], error)
GetUserInvoices 查询用户所有账单数据
func GetUserLogsList ¶
func GetUserLogsList(userId int, params *LogsListParams) (*DataResult[Log], error)
func GetUserTokensList ¶
func GetUserTokensList(userId int, params *GenericParams) (*DataResult[Token], error)
func GetUsersList ¶
func GetUsersList(params *GenericParams) (*DataResult[User], error)
func PaginateAndOrder ¶
func PaginateAndOrder[T modelable](db *gorm.DB, params *PaginationParams, result *[]*T, allowedOrderFields map[string]bool) (*DataResult[T], error)
type GenericParams ¶
type GenericParams struct {
PaginationParams
Keyword string `form:"keyword"`
}
type HeartbeatSetting ¶
type LimitModelSetting ¶
type LimitsConfig ¶
type LimitsConfig struct {
LimitModelSetting LimitModelSetting `json:"limit_model_setting,omitempty"`
LimitsIPSetting LimitsIPSetting `json:"limits_ip_setting,omitempty"`
}
type LimitsIPSetting ¶
type Log ¶
type Log struct {
Id int `json:"id"`
UserId int `json:"user_id" gorm:"index"`
CreatedAt int64 `json:"created_at" gorm:"bigint;index:idx_created_at_type"`
Type int `json:"type" gorm:"index:idx_created_at_type"`
Content string `json:"content"`
Username string `json:"username" gorm:"index:index_username_model_name,priority:2;default:''"`
TokenName string `json:"token_name" gorm:"index;default:''"`
ModelName string `json:"model_name" gorm:"index;index:index_username_model_name,priority:1;default:''"`
Quota int `json:"quota" gorm:"default:0"`
PromptTokens int `json:"prompt_tokens" gorm:"default:0"`
CompletionTokens int `json:"completion_tokens" gorm:"default:0"`
ChannelId int `json:"channel_id" gorm:"index"`
RequestTime int `json:"request_time" gorm:"default:0"`
IsStream bool `json:"is_stream" gorm:"default:false"`
SourceIp string `json:"source_ip" gorm:"default:''"`
Metadata datatypes.JSONType[map[string]any] `json:"metadata" gorm:"type:json"`
Channel *Channel `json:"channel" gorm:"foreignKey:Id;references:ChannelId"`
}
func SearchAllLogs ¶
type LogStatistic ¶
type LogStatisticGroupChannel ¶
type LogStatisticGroupChannel struct {
LogStatistic
Channel string `gorm:"column:channel"`
}
func GetChannelExpensesStatisticsByPeriod ¶
func GetChannelExpensesStatisticsByPeriod(startTime, endTime, groupType string, userID int) (LogStatistics []*LogStatisticGroupChannel, err error)
type LogStatisticGroupModel ¶
type LogStatisticGroupModel struct {
LogStatistic
ModelName string `gorm:"column:model_name"`
}
func GetUserModelStatisticsByPeriod ¶
func GetUserModelStatisticsByPeriod(userId int, startTime, endTime string) (LogStatistic []*LogStatisticGroupModel, err error)
type LogsListParams ¶
type LogsListParams struct {
PaginationParams
LogType int `form:"log_type"`
StartTimestamp int64 `form:"start_timestamp"`
EndTimestamp int64 `form:"end_timestamp"`
ModelName string `form:"model_name"`
Username string `form:"username"`
TokenName string `form:"token_name"`
ChannelId int `form:"channel_id"`
SourceIp string `form:"source_ip"`
}
type MJTaskQueryParams ¶
type MJTaskQueryParams struct {
ChannelID int `form:"channel_id"`
TokenID int `form:"token_id"`
MjID string `form:"mj_id"`
StartTimestamp int `form:"start_timestamp"`
EndTimestamp int `form:"end_timestamp"`
PaginationParams
}
TaskQueryParams 用于包含所有搜索条件的结构体,可以根据需求添加更多字段
type Midjourney ¶
type Midjourney struct {
Id int `json:"id"`
Code int `json:"code"`
UserId int `json:"user_id" gorm:"index"`
Action string `json:"action" gorm:"type:varchar(40);index"`
MjId string `json:"mj_id" gorm:"index"`
Prompt string `json:"prompt"`
PromptEn string `json:"prompt_en"`
Description string `json:"description"`
State string `json:"state"`
SubmitTime int64 `json:"submit_time" gorm:"index"`
StartTime int64 `json:"start_time" gorm:"index"`
FinishTime int64 `json:"finish_time" gorm:"index"`
ImageUrl string `json:"image_url"`
Status string `json:"status" gorm:"type:varchar(20);index"`
Progress string `json:"progress" gorm:"type:varchar(30);index"`
FailReason string `json:"fail_reason"`
ChannelId int `json:"channel_id"`
Quota int `json:"quota"`
Buttons string `json:"buttons"`
Properties string `json:"properties"`
Mode string `json:"mode,omitempty"`
TokenID int `json:"token_id" gorm:"default:0"`
}
func GetAllUnFinishTasks ¶
func GetAllUnFinishTasks() []*Midjourney
func GetByMJId ¶
func GetByMJId(userId int, mjId string) *Midjourney
func GetByMJIds ¶
func GetByMJIds(userId int, mjIds []string) []*Midjourney
func GetByOnlyMJId ¶
func GetByOnlyMJId(mjId string) *Midjourney
func (*Midjourney) Insert ¶
func (midjourney *Midjourney) Insert() error
func (*Midjourney) Update ¶
func (midjourney *Midjourney) Update() error
type ModelInfo ¶
type ModelInfo struct {
Id int `json:"id" gorm:"index"`
Model string `json:"model" gorm:"type:varchar(100);index"`
Name string `json:"name" gorm:"type:varchar(100)"`
Description string `json:"description" gorm:"type:text"`
ContextLength int `json:"context_length"`
MaxTokens int `json:"max_tokens"`
InputModalities string `json:"input_modalities" gorm:"type:text"`
OutputModalities string `json:"output_modalities" gorm:"type:text"`
Tags string `json:"tags" gorm:"type:text"`
SupportUrl string `json:"support_url" gorm:"type:text"`
CreatedAt int64 `json:"created_at" gorm:"autoCreateTime"`
UpdatedAt int64 `json:"updated_at" gorm:"autoUpdateTime"`
}
func GetAllModelInfo ¶
func GetModelInfo ¶
func GetModelInfoByModel ¶
func (*ModelInfo) ToResponse ¶
func (m *ModelInfo) ToResponse() *ModelInfoResponse
type ModelInfoResponse ¶
type ModelInfoResponse struct {
Model string `json:"model"`
Name string `json:"name"`
Description string `json:"description"`
ContextLength int `json:"context_length"`
MaxTokens int `json:"max_tokens"`
InputModalities []string `json:"input_modalities"`
OutputModalities []string `json:"output_modalities"`
Tags []string `json:"tags"`
SupportUrl []string `json:"support_url"`
CreatedAt int64 `json:"created_at"`
UpdatedAt int64 `json:"updated_at"`
}
type ModelOwnedBy ¶
type ModelOwnedBy struct {
Id int `json:"id" gorm:"index"`
Name string `json:"name" gorm:"type:varchar(100)"`
Icon string `json:"icon" gorm:"type:text"`
}
func GetAllModelOwnedBy ¶
func GetAllModelOwnedBy() ([]*ModelOwnedBy, error)
func GetDefaultModelOwnedBy ¶
func GetDefaultModelOwnedBy() []*ModelOwnedBy
func GetModelOwnedBy ¶
func GetModelOwnedBy(id int) (*ModelOwnedBy, error)
func (*ModelOwnedBy) TableName ¶
func (m *ModelOwnedBy) TableName() string
type ModelOwnedBys ¶
type ModelOwnedBys struct {
sync.RWMutex
ModelOwnedBy map[int]*ModelOwnedBy
}
var ModelOwnedBysInstance *ModelOwnedBys
func (*ModelOwnedBys) Get ¶
func (m *ModelOwnedBys) Get(id int) *ModelOwnedBy
func (*ModelOwnedBys) GetAll ¶
func (m *ModelOwnedBys) GetAll() map[int]*ModelOwnedBy
func (*ModelOwnedBys) GetIcon ¶
func (m *ModelOwnedBys) GetIcon(id int) string
func (*ModelOwnedBys) GetName ¶
func (m *ModelOwnedBys) GetName(id int) string
func (*ModelOwnedBys) Load ¶
func (m *ModelOwnedBys) Load() error
func (*ModelOwnedBys) SyncModelOwnedBy ¶
func (m *ModelOwnedBys) SyncModelOwnedBy(modelOwnedBies []*ModelOwnedBy)
type ModelUsageByUser ¶
type ModelUsageByUser struct {
Username string `gorm:"column:username" json:"username"`
ModelName string `gorm:"column:model_name" json:"model_name"`
RequestCount int64 `gorm:"column:request_count" json:"request_count"`
}
ModelUsageByUser 按用户和模型分组的使用统计
func GetModelUsageByUser ¶
func GetModelUsageByUser(usernames []string, startTime, endTime string) ([]*ModelUsageByUser, error)
GetModelUsageByUser 获取每个用户使用不同模型的调用次数
type MultiUserStatistic ¶
type MultiUserStatistic struct {
Username string `gorm:"column:username" json:"username"`
ModelName string `gorm:"column:model_name" json:"model_name"`
RequestCount int64 `gorm:"column:request_count" json:"request_count"`
Quota int64 `gorm:"column:quota" json:"quota"`
PromptTokens int64 `gorm:"column:prompt_tokens" json:"prompt_tokens"`
CompletionTokens int64 `gorm:"column:completion_tokens" json:"completion_tokens"`
RequestTime int64 `gorm:"column:request_time" json:"request_time"`
}
func GetMultiUserStatisticsByPeriod ¶
func GetMultiUserStatisticsByPeriod(usernames []string, startTime, endTime string) ([]*MultiUserStatistic, error)
GetMultiUserStatisticsByPeriod 获取多个用户在指定时间段内的统计数据
type Order ¶
type Order struct {
ID int `json:"id"`
UserId int `json:"user_id"`
GatewayId int `json:"gateway_id"`
TradeNo string `json:"trade_no" gorm:"type:varchar(50);uniqueIndex"`
GatewayNo string `json:"gateway_no" gorm:"type:varchar(100)"`
Amount int `json:"amount" gorm:"default:0"`
OrderAmount float64 `json:"order_amount" gorm:"type:decimal(10,2);default:0"`
OrderCurrency CurrencyType `json:"order_currency" gorm:"type:varchar(16)"`
Quota int `json:"quota" gorm:"type:int;default:0"`
Fee float64 `json:"fee" gorm:"type:decimal(10,2);default:0"`
Discount float64 `json:"discount" gorm:"type:decimal(10,2);default:0"`
Status OrderStatus `json:"status" gorm:"type:varchar(32)"`
CreatedAt int `json:"created_at"`
UpdatedAt int `json:"-"`
DeletedAt gorm.DeletedAt `json:"-" gorm:"index"`
}
func GetOrderByTradeNo ¶
type OrderStatistics ¶
type OrderStatistics struct {
Quota int64 `json:"quota"`
Money float64 `json:"money"`
OrderCurrency string `json:"order_currency"`
}
func GetStatisticsOrder ¶
func GetStatisticsOrder() (orderStatistics []*OrderStatistics, err error)
type OrderStatisticsGroup ¶
type OrderStatisticsGroup struct {
Date string `json:"date"`
OrderAmount float64 `json:"order_amount"`
}
func GetStatisticsOrderByPeriod ¶
func GetStatisticsOrderByPeriod(startTimestamp, endTimestamp int64) (orderStatistics []*OrderStatisticsGroup, err error)
type OrderStatus ¶
type OrderStatus string
const ( OrderStatusPending OrderStatus = "pending" OrderStatusSuccess OrderStatus = "success" OrderStatusFailed OrderStatus = "failed" OrderStatusClosed OrderStatus = "closed" )
type PaginationParams ¶
type Payment ¶
type Payment struct {
ID int `json:"id"`
Type string `json:"type" form:"type" gorm:"type:varchar(16)"`
UUID string `json:"uuid" form:"uuid" gorm:"type:char(32);uniqueIndex"`
Name string `json:"name" form:"name" gorm:"type:varchar(255); not null"`
Icon string `json:"icon" form:"icon" gorm:"type:varchar(300)"`
NotifyDomain string `json:"notify_domain" form:"notify_domain" gorm:"type:varchar(300)"`
FixedFee float64 `json:"fixed_fee" form:"fixed_fee" gorm:"type:decimal(10,2); default:0.00"`
PercentFee float64 `json:"percent_fee" form:"percent_fee" gorm:"type:decimal(10,2); default:0.00"`
Currency CurrencyType `json:"currency" form:"currency" gorm:"type:varchar(5)"`
Config string `json:"config" form:"config" gorm:"type:text"`
Sort int `json:"sort" form:"sort" gorm:"default:1"`
Enable *bool `json:"enable" form:"enable" gorm:"default:true"`
CreatedAt int64 `json:"created_at" gorm:"bigint"`
UpdatedAt int64 `json:"-" gorm:"bigint"`
DeletedAt gorm.DeletedAt `json:"-" gorm:"index"`
}
func GetPaymentByID ¶
func GetPaymentByUUID ¶
func GetUserPaymentList ¶
type PluginType ¶
type Price ¶
type Price struct {
Model string `json:"model" gorm:"type:varchar(100)" binding:"required"`
Type string `json:"type" gorm:"default:'tokens'" binding:"required"`
ChannelType int `json:"channel_type" gorm:"default:0" binding:"gte=0"`
Input float64 `json:"input" gorm:"default:0" binding:"gte=0"`
Output float64 `json:"output" gorm:"default:0" binding:"gte=0"`
Locked bool `json:"locked" gorm:"default:false"` // 如果模型为locked 则覆盖模式不会更新locked的模型价格
ExtraRatios *datatypes.JSONType[map[string]float64] `json:"extra_ratios,omitempty" gorm:"type:json"`
ModelInfo *ModelInfoResponse `json:"model_info,omitempty" gorm:"-"`
}
func GetAllPrices ¶
func GetDefaultPrice ¶
func GetDefaultPrice() []*Price
1 === $0.002 / 1K tokens 1 === ¥0.014 / 1k tokens
func GetOldPricesList ¶
func GetOldPricesList() []*Price
func GetPriceByPriceService ¶
GetPriceByPriceService 只插入系统没有的数据
func GetPricesList ¶
func (*Price) FetchInputCurrencyPrice ¶
func (*Price) FetchOutputCurrencyPrice ¶
func (*Price) GetExtraRatio ¶
type PriceUpdateMode ¶
type PriceUpdateMode string
const ( PriceUpdateModeSystem PriceUpdateMode = "system" PriceUpdateModeAdd PriceUpdateMode = "add" PriceUpdateModeOverwrite PriceUpdateMode = "overwrite" PriceUpdateModeUpdate PriceUpdateMode = "update" )
type Pricing ¶
type Pricing struct {
sync.RWMutex
Prices map[string]*Price `json:"models"`
Match []string `json:"-"`
}
Pricing is a struct that contains the pricing data
var PricingInstance *Pricing
PricingInstance is the Pricing instance
func (*Pricing) BatchDeletePrices ¶
BatchDeletePrices deletes the prices of multiple models
func (*Pricing) BatchSetPrices ¶
func (p *Pricing) BatchSetPrices(batchPrices *BatchPrices, originalModels []string) error
func (*Pricing) DeletePrice ¶
DeletePrice deletes a price from the Pricing instance
func (*Pricing) GetAllPrices ¶
func (*Pricing) GetAllPricesList ¶
func (*Pricing) SyncPriceOnlyUpdate ¶
SyncPriceOnlyUpdate 只更新系统现有的数据 不含lock的数据
func (*Pricing) SyncPriceWithOverwrite ¶
SyncPriceWithOverwrite 删除系统所有数据并插入所有查询到的新数据 不含lock的数据
func (*Pricing) SyncPriceWithoutOverwrite ¶
SyncPriceWithoutOverwrite 只插入系统没有的数据
func (*Pricing) SyncPricing ¶
SyncPricing syncs the pricing data
type PrivateGroup ¶
type PrivateGroup struct {
Id int `json:"id"`
OwnerUserId int `json:"owner_user_id" gorm:"index"`
GroupSlug string `json:"group_slug" gorm:"type:varchar(64);uniqueIndex"`
Status int `json:"status" gorm:"default:1;index"`
CreatedAt int64 `json:"created_at" gorm:"bigint"`
UpdatedAt int64 `json:"updated_at" gorm:"bigint"`
DeletedAt gorm.DeletedAt `json:"-" gorm:"index"`
}
func GetPrivateGroupById ¶
func GetPrivateGroupById(id int) (*PrivateGroup, error)
func GetPrivateGroupByIdAndOwner ¶
func GetPrivateGroupByIdAndOwner(id int, ownerUserId int) (*PrivateGroup, error)
func (*PrivateGroup) BeforeCreate ¶
func (g *PrivateGroup) BeforeCreate(tx *gorm.DB) error
func (*PrivateGroup) BeforeUpdate ¶
func (g *PrivateGroup) BeforeUpdate(tx *gorm.DB) error
type PrivateGroupGrant ¶
type PrivateGroupGrant struct {
Id int `json:"id"`
GroupId int `json:"group_id" gorm:"index;uniqueIndex:idx_private_group_user,priority:1"`
UserId int `json:"user_id" gorm:"index;uniqueIndex:idx_private_group_user,priority:2"`
Role string `json:"role" gorm:"type:varchar(16);default:'member'"`
Source string `json:"source" gorm:"type:varchar(16);default:'invite'"`
SourceRef string `json:"source_ref" gorm:"type:varchar(128);default:''"`
GrantedBy int `json:"granted_by" gorm:"index"`
ExpiresAt int64 `json:"expires_at" gorm:"bigint;default:0"`
RevokedAt int64 `json:"revoked_at" gorm:"bigint;default:0;index"`
CreatedAt int64 `json:"created_at" gorm:"bigint"`
UpdatedAt int64 `json:"updated_at" gorm:"bigint"`
}
func GetPrivateGroupGrant ¶
func GetPrivateGroupGrant(groupId int, userId int) (*PrivateGroupGrant, error)
func GrantPrivateGroupAccess ¶
func (*PrivateGroupGrant) BeforeCreate ¶
func (g *PrivateGroupGrant) BeforeCreate(tx *gorm.DB) error
func (*PrivateGroupGrant) BeforeUpdate ¶
func (g *PrivateGroupGrant) BeforeUpdate(tx *gorm.DB) error
type PrivateGroupInviteCode ¶
type PrivateGroupInviteCode struct {
Id int `json:"id"`
GroupId int `json:"group_id" gorm:"index"`
CodeHash string `json:"-" gorm:"type:varchar(64);uniqueIndex"`
CreatedBy int `json:"created_by" gorm:"index"`
Status int `json:"status" gorm:"default:1;index"`
MaxUses int `json:"max_uses" gorm:"default:1"`
UsedCount int `json:"used_count" gorm:"default:0"`
ExpiresAt int64 `json:"expires_at" gorm:"bigint;default:0"`
CreatedAt int64 `json:"created_at" gorm:"bigint"`
UpdatedAt int64 `json:"updated_at" gorm:"bigint"`
}
func GetPrivateGroupInviteCodeById ¶
func GetPrivateGroupInviteCodeById(id int) (*PrivateGroupInviteCode, error)
func GetPrivateGroupInviteCodes ¶
func GetPrivateGroupInviteCodes(groupId int) ([]*PrivateGroupInviteCode, error)
func (*PrivateGroupInviteCode) BeforeCreate ¶
func (c *PrivateGroupInviteCode) BeforeCreate(tx *gorm.DB) error
func (*PrivateGroupInviteCode) BeforeUpdate ¶
func (c *PrivateGroupInviteCode) BeforeUpdate(tx *gorm.DB) error
type PrivateGroupMember ¶
type PrivateGroupMember struct {
GroupId int `json:"group_id"`
UserId int `json:"user_id"`
Username string `json:"username"`
DisplayName string `json:"display_name"`
Role string `json:"role"`
Source string `json:"source"`
ExpiresAt int64 `json:"expires_at"`
RevokedAt int64 `json:"revoked_at"`
CreatedAt int64 `json:"created_at"`
}
func GetPrivateGroupMembers ¶
func GetPrivateGroupMembers(groupId int) ([]*PrivateGroupMember, error)
type PrivateGroupSummary ¶
type PrivateGroupSummary struct {
Id int `json:"id"`
GroupSlug string `json:"group_slug"`
Status int `json:"status"`
CreatedAt int64 `json:"created_at"`
UpdatedAt int64 `json:"updated_at"`
MemberCount int64 `json:"member_count"`
InviteCodeCount int64 `json:"invite_code_count"`
}
func GetAllPrivateGroups ¶
func GetAllPrivateGroups() ([]*PrivateGroupSummary, error)
func GetOwnedPrivateGroups ¶
func GetOwnedPrivateGroups(ownerUserId int) ([]*PrivateGroupSummary, error)
type Redemption ¶
type Redemption struct {
Id int `json:"id"`
UserId int `json:"user_id"`
Key string `json:"key" gorm:"type:char(32);uniqueIndex"`
Status int `json:"status" gorm:"default:1"`
Name string `json:"name" gorm:"index"`
Quota int `json:"quota" gorm:"default:100"`
CreatedTime int64 `json:"created_time" gorm:"bigint"`
RedeemedTime int64 `json:"redeemed_time" gorm:"bigint"`
Count int `json:"count" gorm:"-:all"` // only for api request
}
func GetRedemptionById ¶
func GetRedemptionById(id int) (*Redemption, error)
func (*Redemption) Delete ¶
func (redemption *Redemption) Delete() error
func (*Redemption) Insert ¶
func (redemption *Redemption) Insert() error
func (*Redemption) SelectUpdate ¶
func (redemption *Redemption) SelectUpdate() error
func (*Redemption) Update ¶
func (redemption *Redemption) Update() error
Update Make sure your token's fields is completed, because this will update non-zero values
type RedemptionStatistics ¶
type RedemptionStatistics struct {
Count int64 `json:"count"`
Quota int64 `json:"quota"`
Status int `json:"status"`
}
func GetStatisticsRedemption ¶
func GetStatisticsRedemption() (redemptionStatistics []*RedemptionStatistics, err error)
type RedemptionStatisticsGroup ¶
type RedemptionStatisticsGroup struct {
Date string `json:"date"`
Quota int64 `json:"quota"`
UserCount int64 `json:"user_count"`
}
func GetStatisticsRedemptionByPeriod ¶
func GetStatisticsRedemptionByPeriod(startTimestamp, endTimestamp int64) (redemptionStatistics []*RedemptionStatisticsGroup, err error)
type SearchChannelsParams ¶
type SearchChannelsParams struct {
Channel
PaginationParams
FilterTag int `json:"filter_tag" form:"filter_tag"`
}
type SearchChannelsTagParams ¶
type SearchChannelsTagParams struct {
Tag string `json:"tag" form:"tag"`
PaginationParams
}
type SearchOrderParams ¶
type SearchOrderParams struct {
UserId int `form:"user_id"`
GatewayId int `form:"gateway_id"`
TradeNo string `form:"trade_no"`
GatewayNo string `form:"gateway_no"`
Status string `form:"status"`
StartTimestamp int64 `form:"start_timestamp"`
EndTimestamp int64 `form:"end_timestamp"`
PaginationParams
}
type SearchPaymentParams ¶
type SearchPaymentParams struct {
Payment
PaginationParams
}
type SearchUserGroupParams ¶
type SearchUserGroupParams struct {
UserGroup
PaginationParams
}
type Statistics ¶
type Statistics struct {
Date time.Time `gorm:"primary_key;type:date" json:"date"`
UserId int `json:"user_id" gorm:"primary_key"`
ChannelId int `json:"channel_id" gorm:"primary_key"`
ModelName string `json:"model_name" gorm:"primary_key;type:varchar(255)"`
RequestCount int `json:"request_count"`
Quota int `json:"quota"`
PromptTokens int `json:"prompt_tokens"`
CompletionTokens int `json:"completion_tokens"`
RequestTime int `json:"request_time"`
}
type StatisticsMonth ¶
type StatisticsMonth struct {
Date time.Time `gorm:"primary_key;type:datetime" json:"date"`
UserId int `json:"user_id" gorm:"primary_key"`
ModelName string `json:"model_name" gorm:"primary_key;type:varchar(255)"`
RequestCount int `json:"request_count"`
Quota int `json:"quota"`
PromptTokens int `json:"prompt_tokens"`
CompletionTokens int `json:"completion_tokens"`
RequestTime int `json:"request_time"`
}
type StatisticsMonthModel ¶
type StatisticsMonthModel struct {
Date string `gorm:"column:date" json:"date"` //账单时间
ModelName string `json:"model_name" gorm:"column:model_name"` //模型名称
RequestCount int `gorm:"column:request_count" json:"request_count"` //请求总数
Quota int `gorm:"column:quota" json:"quota"` //消费金额
PromptTokens int `gorm:"column:prompt_tokens" json:"prompt_tokens"` //输入TOKEN
CompletionTokens int `gorm:"column:completion_tokens" json:"completion_tokens"` //输出TOKEN
RequestTime int `gorm:"column:request_time" json:"request_time"` //请求时长
}
func GetUserInvoiceDetail ¶
func GetUserInvoiceDetail(params *StatisticsMonthDetailSearchParams) ([]*StatisticsMonthModel, error)
GetUserInvoiceDetail 查询指定月份账单详情
type StatisticsMonthNoModel ¶
type StatisticsMonthNoModel struct {
Date string `gorm:"column:date" json:"date"` //账单时间
RequestCount int `gorm:"column:request_count" json:"request_count"` //请求总数
Quota int `gorm:"column:quota" json:"quota"` //消费金额
PromptTokens int `gorm:"column:prompt_tokens" json:"prompt_tokens"` //输入TOKEN
CompletionTokens int `gorm:"column:completion_tokens" json:"completion_tokens"` //输出TOKEN
RequestTime int `gorm:"column:request_time" json:"request_time"` //请求时长
}
StatisticsMonthNoModel 表示按月份统计的模型数据结构,用于存储请求数量、配额和令牌等信息。
type StatisticsMonthSearchParams ¶
type StatisticsMonthSearchParams struct {
UserId int `json:"-"`
Date time.Time `json:"date"`
PaginationParams
}
type StatisticsUpdateType ¶
type StatisticsUpdateType int
const ( StatisticsUpdateTypeToDay StatisticsUpdateType = 1 StatisticsUpdateTypeYesterday StatisticsUpdateType = 2 StatisticsUpdateTypeALL StatisticsUpdateType = 3 )
type StatisticsUser ¶
type StatisticsUser struct {
TotalQuota int64 `json:"total_quota"`
TotalUsedQuota int64 `json:"total_used_quota"`
TotalUser int64 `json:"total_user"`
TotalInviterUser int64 `json:"total_inviter_user"`
}
func GetStatisticsUser ¶
func GetStatisticsUser() (statisticsUser *StatisticsUser, err error)
type Task ¶
type Task struct {
ID int64 `json:"id" gorm:"primary_key;AUTO_INCREMENT"`
CreatedAt int64 `json:"created_at" gorm:"index"`
UpdatedAt int64 `json:"updated_at"`
TaskID string `json:"task_id" gorm:"type:varchar(50);index"` // 第三方id,不一定有/ song id\ Task id
Platform string `json:"platform" gorm:"type:varchar(30);index"` // 平台
UserId int `json:"user_id" gorm:"index"`
ChannelId int `json:"channel_id" gorm:"index"`
Quota int `json:"quota"`
Action string `json:"action" gorm:"type:varchar(40);index"` // 任务类型, song, lyrics, description-mode
Status TaskStatus `json:"status" gorm:"type:varchar(20);index"` // 任务状态
FailReason string `json:"fail_reason"`
SubmitTime int64 `json:"submit_time" gorm:"index"`
StartTime int64 `json:"start_time" gorm:"index"`
FinishTime int64 `json:"finish_time" gorm:"index"`
Progress int `json:"progress"`
Properties datatypes.JSON `json:"properties" gorm:"type:json"`
Data datatypes.JSON `json:"data" gorm:"type:json"`
NotifyHook string `json:"notify_hook"`
TokenID int `json:"token_id" gorm:"default:0"`
}
func GetAllUnFinishSyncTasks ¶
func GetTaskActionByTaskIds ¶
func GetTaskByTaskId ¶
func GetTaskByTaskIds ¶
func ListUserTasksByPlatform ¶
type TaskQueryParams ¶
type TaskQueryParams struct {
PaginationParams
Platform string `form:"platform"`
ChannelID string `form:"channel_id"`
TaskID string `form:"task_id"`
UserID string `form:"user_id"`
Action string `form:"action"`
Status string `form:"status"`
StartTimestamp int64 `form:"start_timestamp"`
EndTimestamp int64 `form:"end_timestamp"`
UserIDs []int `form:"user_ids"`
TokenID int `form:"token_id"`
}
type TaskStatus ¶
type TaskStatus string
const ( TaskStatusNotStart TaskStatus = "NOT_START" TaskStatusSubmitted TaskStatus = "SUBMITTED" TaskStatusQueued TaskStatus = "QUEUED" TaskStatusInProgress TaskStatus = "IN_PROGRESS" TaskStatusFailure TaskStatus = "FAILURE" TaskStatusSuccess TaskStatus = "SUCCESS" TaskStatusUnknown TaskStatus = "UNKNOWN" )
type TelegramMenu ¶
type TelegramMenu struct {
Id int `json:"id"`
Command string `json:"command" gorm:"type:varchar(32);uniqueIndex"`
Description string `json:"description" gorm:"type:varchar(255);default:''"`
ParseMode string `json:"parse_mode" gorm:"type:varchar(255);default:'MarkdownV2'"`
ReplyMessage string `json:"reply_message"`
}
func GetTelegramMenuByCommand ¶
func GetTelegramMenuByCommand(command string) (*TelegramMenu, error)
根据command查询菜单
func GetTelegramMenuById ¶
func GetTelegramMenuById(id int) (*TelegramMenu, error)
func GetTelegramMenus ¶
func GetTelegramMenus() ([]*TelegramMenu, error)
查询菜单列表 只查询command和description
func (*TelegramMenu) Delete ¶
func (menu *TelegramMenu) Delete() error
func (*TelegramMenu) Insert ¶
func (menu *TelegramMenu) Insert() error
func (*TelegramMenu) Update ¶
func (menu *TelegramMenu) Update() error
type Token ¶
type Token struct {
Id int `json:"id"`
UserId int `json:"user_id"`
Key string `json:"key" gorm:"type:varchar(59);uniqueIndex"`
Status int `json:"status" gorm:"default:1"`
Name string `json:"name" gorm:"index" `
CreatedTime int64 `json:"created_time" gorm:"bigint"`
AccessedTime int64 `json:"accessed_time" gorm:"bigint"`
ExpiredTime int64 `json:"expired_time" gorm:"bigint;default:-1"` // -1 means never expired
RemainQuota int `json:"remain_quota" gorm:"default:0"`
UnlimitedQuota bool `json:"unlimited_quota" gorm:"default:false"`
UsedQuota int `json:"used_quota" gorm:"default:0"` // used quota
Group string `json:"group" gorm:"default:''"`
BackupGroup string `json:"backup_group" gorm:"default:''"`
DeletedAt gorm.DeletedAt `json:"-" gorm:"index"`
Setting database.JSONType[TokenSetting] `json:"setting" form:"setting" gorm:"type:json"`
}
func CacheGetTokenByKey ¶
func GetTokenById ¶
func GetTokenByKey ¶
func GetTokenModel ¶
func ValidateUserToken ¶
func (*Token) AfterCreate ¶
添加 AfterCreate 钩子方法
func (*Token) SelectUpdate ¶
func (*Token) Update ¶
Update Make sure your token's fields is completed, because this will update non-zero values
func (*Token) UpdateByAdmin ¶
UpdateByAdmin 管理员更新token,支持更新user_id字段
type TokenSetting ¶
type TokenSetting struct {
Heartbeat HeartbeatSetting `json:"heartbeat,omitempty"`
Limits LimitsConfig `json:"limits,omitempty"`
BillingTag *string `json:"billing_tag,omitempty"` // 费用标签,用于按分组统计费用,仅可信内部员工和管理员可见
}
type TokenWithOwner ¶
type TokenWithOwner struct {
Token
OwnerName string `json:"owner_name"` // 用户名称(优先显示 display_name,其次 username)
}
TokenWithOwner 包含令牌信息和所属用户信息
type TokilakeWorkerNode ¶
type TokilakeWorkerNode struct {
Id int `json:"id"`
ProviderId int `json:"provider_id" gorm:"index"`
Namespace string `json:"namespace" gorm:"type:varchar(255);uniqueIndex"`
NodeName string `json:"node_name" gorm:"type:varchar(255)"`
Status int `json:"status" gorm:"default:3;index"`
Models string `json:"models" gorm:"type:text"`
HardwareInfo string `json:"hardware_info" gorm:"type:text"`
LastHeartbeat int64 `json:"last_heartbeat" gorm:"bigint;index"`
ChannelId int `json:"channel_id" gorm:"uniqueIndex"`
CreatedAt int64 `json:"created_at" gorm:"bigint"`
UpdatedAt int64 `json:"updated_at" gorm:"bigint"`
}
func GetOnlineTokilakeWorkerNodes ¶
func GetOnlineTokilakeWorkerNodes() ([]*TokilakeWorkerNode, error)
func GetTokilakeWorkerNodeByChannelId ¶
func GetTokilakeWorkerNodeByChannelId(channelId int) (*TokilakeWorkerNode, error)
func GetTokilakeWorkerNodeByNamespace ¶
func GetTokilakeWorkerNodeByNamespace(namespace string) (*TokilakeWorkerNode, error)
func (*TokilakeWorkerNode) GetHardwareInfo ¶
func (node *TokilakeWorkerNode) GetHardwareInfo() map[string]any
func (*TokilakeWorkerNode) GetModels ¶
func (node *TokilakeWorkerNode) GetModels() []string
func (*TokilakeWorkerNode) Insert ¶
func (node *TokilakeWorkerNode) Insert() error
func (*TokilakeWorkerNode) SetHardwareInfo ¶
func (node *TokilakeWorkerNode) SetHardwareInfo(info map[string]any)
func (*TokilakeWorkerNode) SetModels ¶
func (node *TokilakeWorkerNode) SetModels(models []string)
func (*TokilakeWorkerNode) String ¶
func (node *TokilakeWorkerNode) String() string
func (*TokilakeWorkerNode) TouchHeartbeat ¶
func (node *TokilakeWorkerNode) TouchHeartbeat(status int) error
func (*TokilakeWorkerNode) Update ¶
func (node *TokilakeWorkerNode) Update() error
type User ¶
type User struct {
Id int `json:"id"`
Username string `json:"username" gorm:"unique;index" validate:"max=12"`
Password string `json:"password" gorm:"not null;" validate:"min=8,max=20"`
DisplayName string `json:"display_name" gorm:"index" validate:"max=20"`
Role int `json:"role" gorm:"type:int;default:1"` // admin, common
Status int `json:"status" gorm:"type:int;default:1"` // enabled, disabled
Email string `json:"email" gorm:"index" validate:"max=50"`
AvatarUrl string `json:"avatar_url" gorm:"type:varchar(500);column:avatar_url;default:''"`
OidcId string `json:"oidc_id" gorm:"column:oidc_id;index"`
GoogleId string `json:"google_id" gorm:"column:google_id;index"`
GitHubId string `json:"github_id" gorm:"column:github_id;index"`
GitHubIdNew int `json:"github_id_new" gorm:"column:github_id_new;index"`
WeChatId string `json:"wechat_id" gorm:"column:wechat_id;index"`
TelegramId int64 `json:"telegram_id" gorm:"bigint,column:telegram_id;default:0;"`
LarkId string `json:"lark_id" gorm:"column:lark_id;index"`
VerificationCode string `json:"verification_code" gorm:"-:all"` // this field is only for Email verification, don't save it to database!
AccessToken string `json:"access_token" gorm:"type:char(32);column:access_token;uniqueIndex"` // this token is for system management
Quota int `json:"quota" gorm:"type:int;default:0"`
UsedQuota int `json:"used_quota" gorm:"type:int;default:0;column:used_quota"` // used quota
RequestCount int `json:"request_count" gorm:"type:int;default:0;"` // request number
Group string `json:"group" gorm:"type:varchar(32);default:'default'"`
AffCode string `json:"aff_code" gorm:"type:varchar(32);column:aff_code;uniqueIndex"`
AffCount int `json:"aff_count" gorm:"type:int;default:0;column:aff_count"`
AffQuota int `json:"aff_quota" gorm:"type:int;default:0;column:aff_quota"`
AffHistoryQuota int `json:"aff_history_quota" gorm:"type:int;default:0;column:aff_history"`
InviterId int `json:"inviter_id" gorm:"type:int;column:inviter_id;index"`
LastLoginTime int64 `json:"last_login_time" gorm:"bigint;default:0"`
LastLoginIp string `json:"last_login_ip" gorm:"type:varchar(128);default:''"`
CreatedTime int64 `json:"created_time" gorm:"bigint"`
DeletedAt gorm.DeletedAt `json:"-" gorm:"index"`
}
User if you add sensitive fields, don't forget to clean them in setupLogin function. Otherwise, the sensitive information will be saved on local storage in plain text!
func GetUserByTelegramId ¶
func GetUserByWebAuthnCredentialId ¶
GetUserByWebAuthnCredentialId 通过WebAuthn凭据ID获取用户
func ValidateAccessToken ¶
func (*User) FillUserByEmail ¶
func (*User) FillUserByGitHubId ¶
func (*User) FillUserByGitHubIdNew ¶
func (*User) FillUserByGoogleId ¶
func (*User) FillUserById ¶
func (*User) FillUserByLarkId ¶
func (*User) FillUserByOidcId ¶
func (*User) FillUserByUsername ¶
func (*User) FillUserByWeChatId ¶
func (*User) ValidateAndFill ¶
ValidateAndFill check password & user status
func (*User) WebAuthnCredentials ¶
func (user *User) WebAuthnCredentials() []webauthn.Credential
func (*User) WebAuthnDisplayName ¶
func (*User) WebAuthnIcon ¶
func (*User) WebAuthnName ¶
type UserGroup ¶
type UserGroup struct {
Id int `json:"id"`
Symbol string `json:"symbol" gorm:"type:varchar(50);uniqueIndex"`
Name string `json:"name" gorm:"type:varchar(50)"`
Ratio float64 `json:"ratio" gorm:"type:decimal(10,2); default:1"` // 倍率
APIRate int `json:"api_rate" gorm:"default:600"` // 每分组允许的请求数
Public bool `json:"public" form:"public" gorm:"default:false"` // 是否为公开分组,如果是,则可以被用户在令牌中选择
Promotion bool `json:"promotion" form:"promotion" gorm:"default:false"` // 是否是自动升级用户组, 如果是则用户充值金额满足条件自动升级
Min int `json:"min" form:"min" gorm:"default:0"` // 晋级条件最小值
Max int `json:"max" form:"max" gorm:"default:0"` // 晋级条件最大值
Enable *bool `json:"enable" form:"enable" gorm:"default:true"` // 是否启用
}
func GetUserGroupsAll ¶
func GetUserGroupsById ¶
type UserGroupRatio ¶
type UserGroupRatio struct {
sync.RWMutex
UserGroup map[string]*UserGroup
APILimiter map[string]limit.RateLimiter
PublicGroup []string
}
func (*UserGroupRatio) GetAPILimiter ¶
func (cgrm *UserGroupRatio) GetAPILimiter(symbol string) limit.RateLimiter
func (*UserGroupRatio) GetAPIRate ¶
func (cgrm *UserGroupRatio) GetAPIRate(symbol string) int
func (*UserGroupRatio) GetAll ¶
func (cgrm *UserGroupRatio) GetAll() map[string]*UserGroup
func (*UserGroupRatio) GetBySymbol ¶
func (cgrm *UserGroupRatio) GetBySymbol(symbol string) *UserGroup
func (*UserGroupRatio) GetByTokenUserGroup ¶
func (cgrm *UserGroupRatio) GetByTokenUserGroup(tokenGroup, userGroup string) *UserGroup
func (*UserGroupRatio) GetPublicGroupList ¶
func (cgrm *UserGroupRatio) GetPublicGroupList() []string
func (*UserGroupRatio) Load ¶
func (cgrm *UserGroupRatio) Load()
type UserGroupedStatistic ¶
type UserGroupedStatistic struct {
Username string `gorm:"column:username" json:"username"`
RequestCount int64 `gorm:"column:request_count" json:"request_count"`
Quota int64 `gorm:"column:quota" json:"quota"`
PromptTokens int64 `gorm:"column:prompt_tokens" json:"prompt_tokens"`
CompletionTokens int64 `gorm:"column:completion_tokens" json:"completion_tokens"`
RequestTime int64 `gorm:"column:request_time" json:"request_time"`
}
UserGroupedStatistic 按用户分组的统计数据(不按模型分组)
func GetUserGroupedStatisticsByPeriod ¶
func GetUserGroupedStatisticsByPeriod(usernames []string, startTime, endTime string) ([]*UserGroupedStatistic, error)
GetUserGroupedStatisticsByPeriod 获取按用户分组的统计数据(不按模型分组)
type UserPrivateGroupGrant ¶
type UserPrivateGroupGrant struct {
GroupId int `json:"group_id"`
GroupSlug string `json:"group_slug"`
Role string `json:"role"`
Source string `json:"source"`
ExpiresAt int64 `json:"expires_at"`
RevokedAt int64 `json:"revoked_at"`
GrantedBy int `json:"granted_by"`
CreatedAt int64 `json:"created_at"`
Models []string `json:"models" gorm:"-"`
}
func GetUserPrivateGroupGrantDetails ¶
func GetUserPrivateGroupGrantDetails(userId int) ([]*UserPrivateGroupGrant, error)
type UserStatisticsByPeriod ¶
type UserStatisticsByPeriod struct {
Date string `json:"date"`
UserCount int64 `json:"user_count"`
InviterUserCount int64 `json:"inviter_user_count"`
}
func GetUserStatisticsByPeriod ¶
func GetUserStatisticsByPeriod(startTimestamp, endTimestamp int64) (statistics []*UserStatisticsByPeriod, err error)
type UserUpdates ¶
type UserUpdates func(*User)
type WebAuthnCredential ¶
type WebAuthnCredential struct {
Id int `json:"id" gorm:"primaryKey"`
UserId int `json:"user_id" gorm:"index"`
CredentialId []byte `json:"credential_id" gorm:"unique;size:255"`
PublicKey []byte `json:"public_key"`
AttestationType string `json:"attestation_type"`
Alias string `json:"alias" gorm:"type:varchar(255);default:''"`
// Persist essential authenticator state and flags used during login validation
BackupEligible bool `json:"backup_eligible" gorm:"column:backup_eligible;default:false"`
BackupState bool `json:"backup_state" gorm:"column:backup_state;default:false"`
Authenticator webauthn.Authenticator `json:"authenticator" gorm:"embedded"`
CreatedTime int64 `json:"created_time"`
}
WebAuthnCredential 表示WebAuthn凭据
func (WebAuthnCredential) TableName ¶
func (WebAuthnCredential) TableName() string
Source Files
¶
- balancer.go
- cache.go
- channel.go
- channel_tag.go
- common.go
- log.go
- main.go
- midjourney.go
- migrate.go
- model_info.go
- model_ownedby.go
- option.go
- order.go
- payment.go
- price.go
- pricing.go
- private_group.go
- redemption.go
- statistics.go
- statistics_month.go
- task.go
- telegram_menu.go
- token.go
- tokilake_worker_node.go
- user.go
- user_group.go
- utils.go