package dto import ( "encoding/json" ) type TaskError struct { Code string `json:"code"` Message string `json:"message"` Data any `json:"data"` StatusCode int `json:"-"` LocalError bool `json:"-"` Error error `json:"-"` } type TaskData interface { SunoDataResponse | []SunoDataResponse | string | any } const TaskSuccessCode = "success" type TaskResponse[T TaskData] struct { Code string `json:"code"` Message string `json:"message"` Data T `json:"data"` } func (t *TaskResponse[T]) IsSuccess() bool { return t.Code == TaskSuccessCode } type TaskDto struct { ID int64 `json:"id"` CreatedAt int64 `json:"created_at"` UpdatedAt int64 `json:"updated_at"` TaskID string `json:"task_id"` Platform string `json:"platform"` UserId int `json:"user_id"` Group string `json:"group"` ChannelId int `json:"channel_id"` Quota int `json:"quota"` Action string `json:"action"` Status string `json:"status"` FailReason string `json:"fail_reason"` ResultURL string `json:"result_url,omitempty"` // 任务结果 URL(视频地址等) SubmitTime int64 `json:"submit_time"` StartTime int64 `json:"start_time"` FinishTime int64 `json:"finish_time"` Progress string `json:"progress"` Properties any `json:"properties"` Username string `json:"username,omitempty"` Data json.RawMessage `json:"data"` } type FetchReq struct { IDs []string `json:"ids"` }