Files
cas_tt_cloud_backend/app/common/model/activity_instance.go
2021-12-03 14:18:06 +08:00

63 lines
2.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package model
import "time"
// ActivityInstance 活动数据模型
type ActivityInstance struct {
Model
Local
Identity int `gorm:"column:identity;type:tinyint(3);default:0;comment:身份来源" json:"-"`
Mode ActivityInstanceMode `gorm:"column:mode;type:tinyint(1);default:1;comment:活动模式" json:"mode"`
ActivityInstanceBasic
Content string `gorm:"column:title;type:text;default:'';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{}
}