mirror of
https://github.com/woodchen-ink/aimodels-prices.git
synced 2025-07-18 05:32:00 +08:00
60 lines
3.9 KiB
Go
60 lines
3.9 KiB
Go
package models
|
|
|
|
import (
|
|
"time"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type Price struct {
|
|
ID uint `json:"id" gorm:"primaryKey"`
|
|
Model string `json:"model" gorm:"not null;index:idx_model_channel"`
|
|
ModelType string `json:"model_type" gorm:"not null;index:idx_model_type"` // text2text, text2image, etc.
|
|
BillingType string `json:"billing_type" gorm:"not null"` // tokens or times
|
|
ChannelType uint `json:"channel_type" gorm:"not null;index:idx_model_channel"`
|
|
Currency string `json:"currency" gorm:"not null"` // USD or CNY
|
|
InputPrice float64 `json:"input_price" gorm:"not null"`
|
|
OutputPrice float64 `json:"output_price" gorm:"not null"`
|
|
InputAudioTokens *float64 `json:"input_audio_tokens,omitempty"` // 音频输入价格
|
|
OutputAudioTokens *float64 `json:"output_audio_tokens,omitempty"` // 音频输出价格
|
|
CachedTokens *float64 `json:"cached_tokens,omitempty"` // 缓存价格
|
|
CachedReadTokens *float64 `json:"cached_read_tokens,omitempty"` // 缓存读取价格
|
|
CachedWriteTokens *float64 `json:"cached_write_tokens,omitempty"` // 缓存写入价格
|
|
ReasoningTokens *float64 `json:"reasoning_tokens,omitempty"` // 推理价格
|
|
InputTextTokens *float64 `json:"input_text_tokens,omitempty"` // 输入文本价格
|
|
OutputTextTokens *float64 `json:"output_text_tokens,omitempty"` // 输出文本价格
|
|
InputImageTokens *float64 `json:"input_image_tokens,omitempty"` // 输入图片价格
|
|
OutputImageTokens *float64 `json:"output_image_tokens,omitempty"` // 输出图片价格
|
|
PriceSource string `json:"price_source" gorm:"not null"`
|
|
Status string `json:"status" gorm:"not null;default:pending;index:idx_status"` // pending, approved, rejected
|
|
CreatedAt time.Time `json:"created_at" gorm:"autoCreateTime;index:idx_created_at"`
|
|
UpdatedAt time.Time `json:"updated_at" gorm:"autoUpdateTime"`
|
|
CreatedBy string `json:"created_by" gorm:"not null"`
|
|
DeletedAt gorm.DeletedAt `json:"-" gorm:"index"`
|
|
// 临时字段,用于存储待审核的更新
|
|
TempModel *string `json:"temp_model,omitempty" gorm:"column:temp_model"`
|
|
TempModelType *string `json:"temp_model_type,omitempty" gorm:"column:temp_model_type"`
|
|
TempBillingType *string `json:"temp_billing_type,omitempty" gorm:"column:temp_billing_type"`
|
|
TempChannelType *uint `json:"temp_channel_type,omitempty" gorm:"column:temp_channel_type"`
|
|
TempCurrency *string `json:"temp_currency,omitempty" gorm:"column:temp_currency"`
|
|
TempInputPrice *float64 `json:"temp_input_price,omitempty" gorm:"column:temp_input_price"`
|
|
TempOutputPrice *float64 `json:"temp_output_price,omitempty" gorm:"column:temp_output_price"`
|
|
TempInputAudioTokens *float64 `json:"temp_input_audio_tokens,omitempty"`
|
|
TempOutputAudioTokens *float64 `json:"temp_output_audio_tokens,omitempty"`
|
|
TempCachedTokens *float64 `json:"temp_cached_tokens,omitempty"`
|
|
TempCachedReadTokens *float64 `json:"temp_cached_read_tokens,omitempty"`
|
|
TempCachedWriteTokens *float64 `json:"temp_cached_write_tokens,omitempty"`
|
|
TempReasoningTokens *float64 `json:"temp_reasoning_tokens,omitempty"`
|
|
TempInputTextTokens *float64 `json:"temp_input_text_tokens,omitempty"`
|
|
TempOutputTextTokens *float64 `json:"temp_output_text_tokens,omitempty"`
|
|
TempInputImageTokens *float64 `json:"temp_input_image_tokens,omitempty"`
|
|
TempOutputImageTokens *float64 `json:"temp_output_image_tokens,omitempty"`
|
|
TempPriceSource *string `json:"temp_price_source,omitempty" gorm:"column:temp_price_source"`
|
|
UpdatedBy *string `json:"updated_by,omitempty" gorm:"column:updated_by"`
|
|
}
|
|
|
|
// TableName 指定表名
|
|
func (Price) TableName() string {
|
|
return "price"
|
|
}
|