package model import ( "blazing/cool" ) // todo 还需要做一个记录任务奖励的表 const TableNameTask = "task" // Task mapped from table type Task struct { *cool.Model PlayerID uint64 `gorm:"not null;index:idx_task_by_player_id;comment:'所属玩家ID'" json:"player_id"` TaskID uint32 `gorm:"not null;comment:'任务ID'" json:"task_id"` Data string `gorm:"type:text;not null;comment:'全部数据'" json:"data"` } // TaskInfo 单个任务的详细信息,包含任务步骤状态和整体状态 type TaskInfo struct { // TaskInfo 任务步骤信息,对应Java的@ArraySerialize(FIXED_LENGTH=20)注解 // struc:"[20]byte" 确保二进制序列化时固定20字节长度,json标签指定JSON字段名 //TaskID uint32 `json:"task_id"` //区分是每日任务还是常规任务,常规为0,每日为1 Info []uint32 `struc:"[20]byte" json:"task_info"` //LastResetTime time.Time `gorm:"not null;comment:'上次重置时间(UTC)'" json:"last_reset_time"` //这里是每天重置 // Status 任务整体状态:0-未接受,1-已接受,2-已完成未领取,3-已完成已领取 // json标签指定JSON字段名,与业务状态说明保持一致 //Status byte `json:"status"` } // TableName PlayerInfo's table name func (*Task) TableName() string { return TableNameTask } // GroupName PlayerInfo's table group func (*Task) GroupName() string { return "default" } func (t *Task) GetData() string { return t.Data } func (t *Task) SetData(t1 string) { t.Data = t1 } // NewPlayerInfo create a new PlayerInfo func NewTask() *Task { return &Task{ Model: cool.NewModel(), } } // init 创建表 func init() { cool.CreateTable(&Task{}) }