package promo import ( "time" "gorm.io/gorm" ) const ( RuleTypeNewUser = "new_user" RuleTypeInactiveUser = "inactive_user" RuleTypeCampaign = "campaign" ) type Rule struct { Id int64 `gorm:"primaryKey"` Name string `gorm:"type:varchar(100);not null;default:'';comment:Rule Name"` Type string `gorm:"type:varchar(32);not null;default:'';comment:Rule Type"` Params string `gorm:"type:json;not null;comment:Rule Params"` Priority int64 `gorm:"type:int;not null;default:0;comment:Priority"` Enabled bool `gorm:"type:tinyint(1);not null;default:1;comment:Enabled"` StartTime *time.Time `gorm:"default:null;comment:Start Time"` EndTime *time.Time `gorm:"default:null;comment:End Time"` CreatedAt time.Time `gorm:"<-:create;comment:Create Time"` UpdatedAt time.Time `gorm:"comment:Update Time"` DeletedAt gorm.DeletedAt `gorm:"index;comment:Delete Time"` } func (Rule) TableName() string { return "promo_rule" } type SubscribePromo struct { Id int64 `gorm:"primaryKey"` SubscribeId int64 `gorm:"type:bigint unsigned;not null;comment:Subscribe ID"` Quantity int64 `gorm:"type:int;not null;default:0;comment:购买数量"` PromoRuleId int64 `gorm:"type:bigint unsigned;not null;comment:Promo Rule ID"` PromoPrice int64 `gorm:"type:bigint;not null;default:0;comment:Promo Price"` CreatedAt time.Time `gorm:"<-:create;comment:Create Time"` UpdatedAt time.Time `gorm:"comment:Update Time"` } func (SubscribePromo) TableName() string { return "subscribe_promo" } type Usage struct { Id int64 `gorm:"primaryKey"` UserId int64 `gorm:"type:bigint unsigned;not null;comment:User ID"` PromoRuleId int64 `gorm:"type:bigint unsigned;not null;comment:Promo Rule ID"` SubscribeId int64 `gorm:"type:bigint unsigned;not null;comment:Subscribe ID"` OrderNo string `gorm:"type:varchar(255);not null;default:'';comment:Order No"` PromoPrice int64 `gorm:"type:bigint;not null;default:0;comment:Promo Price"` CreatedAt time.Time `gorm:"<-:create;comment:Create Time"` } func (Usage) TableName() string { return "promo_usage" }