github.com/johnnyeven/libtools@v0.0.0-20191126065708-61829c1adf46/task/constants/task.go (about) 1 package constants 2 3 import ( 4 "time" 5 "fmt" 6 ) 7 8 type Task struct { 9 ID string `json:"id"` 10 Channel string `json:"channel"` 11 Subject string `json:"subject"` 12 Data []byte `json:"data,omitempty"` 13 CreateTime time.Time `json:"createTime"` 14 } 15 16 func (t *Task) Init() *TaskFeedback { 17 return &TaskFeedback{ 18 ID: t.ID, 19 Channel: t.Channel, 20 Subject: t.Subject, 21 Data: t.Data, 22 Status: TASK_STATUS__INIT, 23 } 24 } 25 26 func (t *Task) Pending() *TaskFeedback { 27 return &TaskFeedback{ 28 ID: t.ID, 29 Channel: t.Channel, 30 Subject: t.Subject, 31 Status: TASK_STATUS__PENGDING, 32 UpdateTime: time.Now(), 33 } 34 } 35 36 func (t *Task) Processing() *TaskFeedback { 37 return &TaskFeedback{ 38 ID: t.ID, 39 Channel: t.Channel, 40 Subject: t.Subject, 41 Status: TASK_STATUS__PROCESSING, 42 UpdateTime: time.Now(), 43 } 44 } 45 46 func (t *Task) Success(result interface{}) *TaskFeedback { 47 return &TaskFeedback{ 48 ID: t.ID, 49 Channel: t.Channel, 50 Subject: t.Subject, 51 Status: TASK_STATUS__SUCCESS, 52 UpdateTime: time.Now(), 53 Result: []byte(fmt.Sprintf("%+v", result)), 54 } 55 } 56 57 func (t *Task) Fail(err error) *TaskFeedback { 58 return &TaskFeedback{ 59 ID: t.ID, 60 Channel: t.Channel, 61 Subject: t.Subject, 62 Status: TASK_STATUS__FAIL, 63 UpdateTime: time.Now(), 64 ErrorTrace: []byte(fmt.Sprintf("%v", err)), 65 } 66 } 67 68 func (t *Task) Rollback(err error) *TaskFeedback { 69 return &TaskFeedback{ 70 ID: t.ID, 71 Channel: t.Channel, 72 Subject: t.Subject, 73 Status: TASK_STATUS__ROLLBACK, 74 UpdateTime: time.Now(), 75 ErrorTrace: []byte(fmt.Sprintf("%v", err)), 76 } 77 } 78 79 type TaskFeedback struct { 80 ID string `json:"id"` 81 Channel string `json:"channel"` 82 Subject string `json:"subject"` 83 Data []byte `json:"data,omitempty"` 84 Status TaskStatus `json:"status"` 85 UpdateTime time.Time `json:"updateTime"` 86 Result []byte `json:"result,omitempty"` 87 ErrorTrace []byte `json:"errorTrace,omitempty"` 88 }