2026-01-06 16:15:24 +08:00

41 lines
1.8 KiB
Go

package redemption
import (
"time"
"gorm.io/gorm"
)
type RedemptionCode struct {
Id int64 `gorm:"primaryKey"`
Code string `gorm:"type:varchar(255);not null;unique;comment:Redemption Code"`
TotalCount int64 `gorm:"type:int;not null;default:0;comment:Total Redemption Count"`
UsedCount int64 `gorm:"type:int;not null;default:0;comment:Used Redemption Count"`
SubscribePlan int64 `gorm:"type:bigint;not null;default:0;comment:Subscribe Plan"`
UnitTime string `gorm:"type:varchar(50);not null;default:'month';comment:Unit Time: day, month, quarter, half_year, year"`
Quantity int64 `gorm:"type:int;not null;default:1;comment:Quantity"`
Status int64 `gorm:"type:tinyint;not null;default:1;comment:Status: 1=enabled, 0=disabled"`
CreatedAt time.Time `gorm:"<-:create;comment:Create Time"`
UpdatedAt time.Time `gorm:"comment:Update Time"`
DeletedAt gorm.DeletedAt `gorm:"index;comment:Delete Time"`
}
type RedemptionRecord struct {
Id int64 `gorm:"primaryKey"`
RedemptionCodeId int64 `gorm:"type:bigint;not null;default:0;comment:Redemption Code Id;index"`
UserId int64 `gorm:"type:bigint;not null;default:0;comment:User Id;index"`
SubscribeId int64 `gorm:"type:bigint;not null;default:0;comment:Subscribe Id"`
UnitTime string `gorm:"type:varchar(50);not null;default:'month';comment:Unit Time"`
Quantity int64 `gorm:"type:int;not null;default:1;comment:Quantity"`
RedeemedAt time.Time `gorm:"<-:create;comment:Redeemed Time"`
CreatedAt time.Time `gorm:"<-:create;comment:Create Time"`
}
func (RedemptionCode) TableName() string {
return "redemption_code"
}
func (RedemptionRecord) TableName() string {
return "redemption_record"
}