e27b2320b4
Co-authored-by: multica-agent <github@multica.ai>
54 lines
2.1 KiB
Go
54 lines
2.1 KiB
Go
package promo
|
|
|
|
import (
|
|
"time"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type Rule struct {
|
|
Id int64 `gorm:"primaryKey"`
|
|
Name string `gorm:"type:varchar(100);not null;default:'';comment:Promo Rule Name"`
|
|
Type string `gorm:"type:varchar(32);not null;default:'';comment:Promo 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:"not null;index:idx_subscribe_qty_rule,unique;comment:Subscribe ID"`
|
|
Quantity int64 `gorm:"not null;default:0;index:idx_subscribe_qty_rule,unique;comment:Quantity"`
|
|
PromoRuleId int64 `gorm:"not null;index:idx_subscribe_qty_rule,unique;index:idx_promo_rule_id;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:"not null;index:idx_user_rule;comment:User ID"`
|
|
PromoRuleId int64 `gorm:"not null;index:idx_user_rule;comment:Promo Rule ID"`
|
|
SubscribeId int64 `gorm:"not null;comment:Subscribe ID"`
|
|
OrderNo string `gorm:"type:varchar(255);not null;default:'';index:idx_order_no;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"
|
|
}
|