package report import ( "eta/eta_api/global" "eta/eta_api/utils" "time" ) const ( ReportPdfTaskStatusPending = "pending" ReportPdfTaskStatusFailed = "failed" ReportPdfTaskStatusDone = "done" ) type ReportPdfTask struct { Id int `gorm:"column:id;primary_key" json:"id"` ReportId int `gorm:"column:report_id" json:"report_id"` ReportURL string `gorm:"column:report_url" json:"report_url"` ReportType int `gorm:"column:report_type" json:"report_type"` FreeLayout bool `gorm:"column:free_layout" json:"free_layout"` Status string `gorm:"column:status" json:"status"` // 使用 enum('pending','falied','done') LastFinishTime time.Time `gorm:"column:last_finish_time" json:"last_finish_time,omitempty"` Message string `gorm:"column:message"` CreatedTime time.Time `gorm:"column:created_time" json:"created_time"` UpdateTime time.Time `gorm:"column:update_time" json:"update_time,omitempty"` PostUrl string `gorm:"-"` } func (r *ReportPdfTask) TableName() string { return "report_pdf_task" } func CreateReportPdfTask(url string, reportId, reportType int, freeLayout bool) (err error) { task := &ReportPdfTask{ ReportId: reportId, ReportURL: url, ReportType: reportType, FreeLayout: freeLayout, Status: ReportPdfTaskStatusPending, CreatedTime: time.Now(), } err = global.DbMap[utils.DbNameReport].Create(task).Error return } func GetPendingTasks() (list []*ReportPdfTask, err error) { err = global.DbMap[utils.DbNameReport].Where("status = ?", ReportPdfTaskStatusPending).Order("created_time asc").Limit(20).Find(&list).Error return } func FailTask(task *ReportPdfTask) (err error) { task.Status = ReportPdfTaskStatusFailed err = global.DbMap[utils.DbNameReport].Save(&task).Error return } func DoneTask(task *ReportPdfTask) (err error) { task.Status = ReportPdfTaskStatusDone err = global.DbMap[utils.DbNameReport].Save(&task).Error return }