package model import "time" // ActivityInstance 活动数据模型 type ActivityInstance struct { Model Local Mode ActivityInstanceMode `gorm:"column:mode;type:tinyint(1);default:1;comment:活动模式" json:"mode"` Image ActivityInstanceBasic Amount float64 `gorm:"column:amount;type:decimal(10,2);default:0;comment:活动收费金额" json:"amount"` Content string `gorm:"column:title;type:text;comment:活动详情" json:"content"` MaxNumber int `gorm:"column:max_number;type:int(6);default:0;comment:报名限制人数,0不做限制" json:"max_number"` Status ActivityInstanceStatus `gorm:"column:status;type:tinyint(1);default:1;comment:活动状态(1:显示,2:隐藏)" json:"status"` ModelDeleted ModelAt } // ActivityInstanceBasic 活动基本信息 type ActivityInstanceBasic struct { Title string `gorm:"column:title;type:varchar(50);default:'';comment:活动名称" json:"title"` BeginAt time.Time `gorm:"column:begin_at;type:datetime;not null;comment:活动开始" json:"begin_at"` FinishAt time.Time `gorm:"column:finish_at;type:datetime;not null;comment:活动结束时间" json:"finish_at"` JoinDeadline time.Time `gorm:"column:join_deadline;type:datetime;not null;comment:报名截止时间" json:"join_deadline"` } // ActivityInstanceMode 活动类型 type ActivityInstanceMode int const ( // ActivityInstanceModeForOrdinary 普通活动 ActivityInstanceModeForOrdinary ActivityInstanceMode = iota + 1 // ActivityInstanceModeForCharge 收费活动 ActivityInstanceModeForCharge ) // ActivityInstanceStatus 活动状态 type ActivityInstanceStatus int const ( // ActivityInstanceStatusForShow 状态显示 ActivityInstanceStatusForShow ActivityInstanceStatus = iota + 1 // ActivityInstanceStatusForHidden 状态隐藏 ActivityInstanceStatusForHidden ) func (m *ActivityInstanceBasic) IsOngoing() bool { now := time.Now() return m.BeginAt.Before(now) && m.FinishAt.After(now) } func (m *ActivityInstanceBasic) IsCanJoin() bool { return m.JoinDeadline.After(time.Now()) } func (m *ActivityInstance) TableName() string { return "activity_instance" } func NewActivityInstance() *ActivityInstance { return &ActivityInstance{} }