package message import ( logger "eta/eta_mini_ht_api/common/component/log" "eta/eta_mini_ht_api/models" "gorm.io/gorm" "time" ) type StatusType string type SourceType string type MetaType string const ( UserNoticeType MetaType = "USER_NOTICE" SysUserNoticeType MetaType = "SYS_USER_NOTICE" InitStatusType StatusType = "INIT" PendingStatusType StatusType = "PENDING" FinishStatusType StatusType = "FINISH" FailedStatusType StatusType = "FAILED" ReportSourceType SourceType = "REPORT" VideoSourceType SourceType = "VIDEO" AudioSourceType SourceType = "AUDIO" RefundSourceType SourceType = "REFUND" ) // MetaInfo 表示 meta_infos 表的模型 type MetaInfo struct { Id int `gorm:"primaryKey;autoIncrement;column:id"` Meta string `gorm:"column:meta"` From string `gorm:"column:from"` To string `gorm:"column:to"` SourceType SourceType `gorm:"column:source_type;type:enum('REPORT','VIDEO','AUDIO','REFUND')"` MetaType MetaType `gorm:"column:meta_type;type:enum('USER_NOTICE')"` Status StatusType `gorm:"column:status;type:enum('INIT','PENDING','FINISH','FAILED')"` CreatedTime time.Time UpdatedTime time.Time } type MetaData struct { SourceId int `json:"reportId"` AuthorId int `json:"AuthorId"` AuthorName string `json:"authorName"` PublishedTime string `json:"publishedTime"` } type RefundMetaData struct { RealName string `json:"realName,omitempty"` ProductOrderNo string `json:"productOrderNo,omitempty"` Result string `json:"result,omitempty"` } func (mt *MetaInfo) BeforeCreate(_ *gorm.DB) (err error) { mt.CreatedTime = time.Now() mt.Status = InitStatusType return nil } func CreateMetaInfo(metaInfo MetaInfo) (err error) { db := models.Main() return db.Create(&metaInfo).Error } func GetInitMetaInfos() (list []MetaInfo) { db := models.Main() err := db.Where("status = ?", InitStatusType).Order("id asc").Limit(100).Find(&list).Error if err != nil { logger.Error("获取meta数据失败:%v", err) return []MetaInfo{} } return list } func PendingMetaInfo(id int) bool { return updateStatus(id, PendingStatusType) } func FinishMetaInfo(id int) bool { return updateStatus(id, FinishStatusType) } func FailedMetaInfo(id int) bool { return updateStatus(id, FailedStatusType) } func updateStatus(id int, status StatusType) bool { db := models.Main() err := db.Model(&MetaInfo{}).Where("id = ?", id).Update("status", status).Error if err != nil { logger.Error("更新meta数据失败:%v", err) return false } return true }