12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- 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
- }
|