gomod引用
This commit is contained in:
@@ -1,5 +1,10 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"cid/consts"
|
||||
"errors"
|
||||
)
|
||||
|
||||
// BaseConfig 基础配置结构
|
||||
type BaseConfig struct {
|
||||
// 优先级和权重
|
||||
@@ -18,6 +23,17 @@ type BaseConfig struct {
|
||||
Remark string `bson:"remark" json:"remark"` // 备注
|
||||
}
|
||||
|
||||
// Validate 基础配置验证
|
||||
func (c *BaseConfig) Validate() error {
|
||||
if c.Priority < 0 {
|
||||
return errors.New(consts.ErrInvalidConfiguration)
|
||||
}
|
||||
if c.Weight < 0 || c.Weight > 1 {
|
||||
return errors.New(consts.ErrInvalidConfiguration)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// BiddingConfig 竞价配置
|
||||
type BiddingConfig struct {
|
||||
// 竞价类型
|
||||
@@ -31,32 +47,51 @@ type BiddingConfig struct {
|
||||
BidIncrement int64 `bson:"bidIncrement" json:"bidIncrement"` // 出价增量(分)
|
||||
|
||||
// 自动优化
|
||||
AutoOptimization bool `bson:"autoOptimization" json:"autoOptimization"` // 是否自动优化
|
||||
TargetCPA int64 `bson:"targetCPA" json:"targetCPA"` // 目标CPA(分)
|
||||
TargetROAS float64 `bson:"targetROAS" json:"targetROAS"` // 目标ROAS
|
||||
ConversionValue int64 `bson:"conversionValue" json:"conversionValue"` // 转化价值
|
||||
AttributionWindow string `bson:"attributionWindow" json:"attributionWindow"` // 归因窗口
|
||||
OptimizationGoal string `bson:"optimizationGoal" json:"optimizationGoal"` // 优化目标:impressions、clicks、conversions、revenue等
|
||||
AutoOptimization bool `bson:"autoOptimization" json:"autoOptimization"` // 是否自动优化
|
||||
TargetCPA int64 `bson:"targetCPA" json:"targetCPA"` // 目标CPA(分)
|
||||
TargetROAS float64 `bson:"targetROAS" json:"targetROAS"` // 目标ROAS
|
||||
OptimizationGoal string `bson:"optimizationGoal" json:"optimizationGoal"` // 优化目标:impressions、clicks、conversions、revenue等
|
||||
}
|
||||
|
||||
// Validate 竞价配置验证
|
||||
func (c *BiddingConfig) Validate() error {
|
||||
if c.MinBidAmount < 0 || c.MaxBidAmount < 0 || c.DefaultBidAmount < 0 {
|
||||
return errors.New(consts.ErrInvalidConfiguration)
|
||||
}
|
||||
if c.MinBidAmount > c.MaxBidAmount {
|
||||
return errors.New(consts.ErrInvalidConfiguration)
|
||||
}
|
||||
if c.TargetROAS < 0 {
|
||||
return errors.New(consts.ErrInvalidConfiguration)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// BudgetConfig 预算配置
|
||||
type BudgetConfig struct {
|
||||
// 预算设置
|
||||
TotalBudget int64 `bson:"totalBudget" json:"totalBudget"` // 总预算(分)
|
||||
DailyBudget int64 `bson:"dailyBudget" json:"dailyBudget"` // 日预算(分)
|
||||
HourlyBudget int64 `bson:"hourlyBudget" json:"hourlyBudget"` // 小时预算(分)
|
||||
TotalBudget int64 `bson:"totalBudget" json:"totalBudget"` // 总预算(分)
|
||||
DailyBudget int64 `bson:"dailyBudget" json:"dailyBudget"` // 日预算(分)
|
||||
|
||||
// 投放节奏
|
||||
PaceType string `bson:"paceType" json:"paceType"` // 投放节奏:even、accelerated、standard
|
||||
IsBudgetPacing bool `bson:"isBudgetPacing" json:"isBudgetPacing"` // 是否预算匀速投放
|
||||
|
||||
// 时间配置
|
||||
StartDate int64 `bson:"startDate" json:"startDate"` // 开始投放时间
|
||||
EndDate int64 `bson:"endDate" json:"endDate"` // 结束投放时间
|
||||
TimeSlots []string `bson:"timeSlots" json:"timeSlots"` // 投放时间段
|
||||
DaysOfWeek []int `bson:"daysOfWeek" json:"daysOfWeek"` // 投放日期(0-6,0表示周日)
|
||||
Timezone string `bson:"timezone" json:"timezone"` // 时区
|
||||
IsTimeLimited bool `bson:"isTimeLimited" json:"isTimeLimited"` // 是否限时投放
|
||||
StartDate int64 `bson:"startDate" json:"startDate"` // 开始投放时间
|
||||
EndDate int64 `bson:"endDate" json:"endDate"` // 结束投放时间
|
||||
Timezone string `bson:"timezone" json:"timezone"` // 时区
|
||||
}
|
||||
|
||||
// Validate 预算配置验证
|
||||
func (c *BudgetConfig) Validate() error {
|
||||
if c.TotalBudget < 0 || c.DailyBudget < 0 {
|
||||
return errors.New(consts.ErrInvalidConfiguration)
|
||||
}
|
||||
if c.StartDate > c.EndDate {
|
||||
return errors.New(consts.ErrInvalidConfiguration)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// APIConfig API配置
|
||||
@@ -75,8 +110,21 @@ type APIConfig struct {
|
||||
Headers string `bson:"headers" json:"headers"` // 请求头配置(JSON字符串)
|
||||
|
||||
// 限流配置
|
||||
RateLimit int64 `bson:"rateLimit" json:"rateLimit"` // 速率限制
|
||||
MaxRequestsPerHour int64 `bson:"maxRequestsPerHour" json:"maxRequestsPerHour"` // 每小时最大请求数
|
||||
RateLimit int64 `bson:"rateLimit" json:"rateLimit"` // 速率限制
|
||||
}
|
||||
|
||||
// Validate API配置验证
|
||||
func (c *APIConfig) Validate() error {
|
||||
if c.Timeout <= 0 {
|
||||
return errors.New(consts.ErrInvalidConfiguration)
|
||||
}
|
||||
if c.RetryCount < 0 {
|
||||
return errors.New(consts.ErrInvalidConfiguration)
|
||||
}
|
||||
if c.RateLimit <= 0 {
|
||||
return errors.New(consts.ErrInvalidConfiguration)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// CreativeConfig 创意配置
|
||||
@@ -87,15 +135,25 @@ type CreativeConfig struct {
|
||||
ExcludedCreatives []string `bson:"excludedCreatives" json:"excludedCreatives"` // 排除的创意列表
|
||||
|
||||
// 技术要求
|
||||
MaxFileSize int64 `bson:"maxFileSize" json:"maxFileSize"` // 最大文件大小(bytes)
|
||||
MaxDuration int64 `bson:"maxDuration" json:"maxDuration"` // 最大时长(秒)
|
||||
SupportedMimeTypes []string `bson:"supportedMimeTypes" json:"supportedMimeTypes"` // 支持的MIME类型
|
||||
MaxFileSize int64 `bson:"maxFileSize" json:"maxFileSize"` // 最大文件大小(bytes)
|
||||
MaxDuration int64 `bson:"maxDuration" json:"maxDuration"` // 最大时长(秒)
|
||||
|
||||
// 支持的格式
|
||||
SupportedFormats []string `bson:"supportedFormats" json:"supportedFormats"` // 支持的格式
|
||||
SupportedSizes []string `bson:"supportedSizes" json:"supportedSizes"` // 支持的尺寸
|
||||
}
|
||||
|
||||
// Validate 创意配置验证
|
||||
func (c *CreativeConfig) Validate() error {
|
||||
if c.MaxFileSize <= 0 {
|
||||
return errors.New(consts.ErrInvalidConfiguration)
|
||||
}
|
||||
if c.MaxDuration <= 0 {
|
||||
return errors.New(consts.ErrInvalidConfiguration)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// PaymentConfig 支付配置
|
||||
type PaymentConfig struct {
|
||||
// 计费模式
|
||||
@@ -109,10 +167,26 @@ type PaymentConfig struct {
|
||||
Currency string `bson:"currency" json:"currency"` // 货币单位
|
||||
|
||||
// 收入分成
|
||||
RevShareRate float64 `bson:"revShareRate" json:"revShareRate"` // 收入分成比例(0-1)
|
||||
MinPayment int64 `bson:"minPayment" json:"minPayment"` // 最小支付金额(分)
|
||||
TaxInclusive bool `bson:"taxInclusive" json:"taxInclusive"` // 是否含税
|
||||
EarlyPaymentDiscount float64 `bson:"earlyPaymentDiscount" json:"earlyPaymentDiscount"` // 提前付款折扣
|
||||
RevShareRate float64 `bson:"revShareRate" json:"revShareRate"` // 收入分成比例(0-1)
|
||||
MinPayment int64 `bson:"minPayment" json:"minPayment"` // 最小支付金额(分)
|
||||
TaxInclusive bool `bson:"taxInclusive" json:"taxInclusive"` // 是否含税
|
||||
}
|
||||
|
||||
// Validate 支付配置验证
|
||||
func (c *PaymentConfig) Validate() error {
|
||||
if c.CommissionRate < 0 || c.CommissionRate > 1 {
|
||||
return errors.New(consts.ErrInvalidConfiguration)
|
||||
}
|
||||
if c.RevShareRate < 0 || c.RevShareRate > 1 {
|
||||
return errors.New(consts.ErrInvalidConfiguration)
|
||||
}
|
||||
if c.MinimumBudget < 0 {
|
||||
return errors.New(consts.ErrInvalidConfiguration)
|
||||
}
|
||||
if c.MinPayment < 0 {
|
||||
return errors.New(consts.ErrInvalidConfiguration)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// FrequencyCapConfig 频次控制配置
|
||||
|
||||
Reference in New Issue
Block a user