package task import ( "encoding/json" "git.sxidc.com/go-framework/baize/framework/core/domain" "git.sxidc.com/go-framework/baize/framework/core/domain/entity" "github.com/pkg/errors" ) const ( StatusCodeCreated = iota + 1 StatusCodeRunning StatusCodeCompleted StatusCodeStop StatusCodeError ) const ( statusCreated = "已创建" statusRunning = "运行中" statusCompleted = "已完成" statusStop = "已停止" statusError = "错误" ) var ( statusMap = map[int]string{ StatusCodeCreated: statusCreated, StatusCodeRunning: statusRunning, StatusCodeCompleted: statusCompleted, StatusCodeStop: statusStop, StatusCodeError: statusError, } statusCodeMap = map[string]int{ statusCreated: StatusCodeCreated, statusRunning: StatusCodeRunning, statusCompleted: StatusCodeCompleted, statusStop: StatusCodeStop, statusError: StatusCodeError, } ) const ( FieldGroup = "Group" FieldContext = "Context" FieldStatus = "Status" FieldStatusCode = "StatusCode" FieldErrMsg = "ErrMsg" ) var ( ColumnGroup = domain.ColumnName(FieldGroup) ColumnContext = domain.ColumnName(FieldContext) ColumnStatusCode = domain.ColumnName(FieldStatusCode) ColumnErrMsg = domain.ColumnName(FieldErrMsg) ) var fieldMap = map[string]string{ FieldGroup: "组", FieldContext: "上下文", FieldStatus: "状态", FieldErrMsg: "错误信息", } type Entity struct { entity.Base Group string `sqlmapping:"column:group;notUpdate;" sqlresult:"column:group;" check:"required,lte=256,when=run/restart"` Context string `sqlmapping:"column:context;notUpdate;" sqlresult:"column:context;"` StatusCode int `sqlmapping:"column:status_code;" sqlresult:"column:status_code;" check:"required,when=run/restart"` Status string `sqlmapping:"-" sqlresult:"-"` ErrMsg string `sqlmapping:"column:err_msg;" sqlresult:"column:err_msg;"` CreateUserID string `sqlmapping:"column:create_user_id;" sqlresult:"column:create_user_id;" check:"required,len=32,when=run/restart"` entity.TimeFields } func (e *Entity) DomainCNName() string { return "任务" } func (e *Entity) DomainCamelName() string { return "Task" } func (e *Entity) GetFieldMap() map[string]string { return fieldMap } func (e *Entity) GetMapContext() (map[string]any, error) { ctx := make(map[string]any) err := json.Unmarshal([]byte(e.Context), &ctx) if err != nil { return nil, err } return ctx, nil } func (e *Entity) SetStatusCreated() { e.StatusCode = StatusCodeCreated e.Status = statusCreated } func (e *Entity) SetStatusRunning() { e.StatusCode = StatusCodeRunning e.Status = statusRunning } func (e *Entity) SetStatusCompleted() { e.StatusCode = StatusCodeCompleted e.Status = statusCompleted } func (e *Entity) SetStatusStop() { e.StatusCode = StatusCodeStop e.Status = statusStop } func (e *Entity) SetStatusError(errMsg string) { e.StatusCode = StatusCodeError e.Status = statusError e.ErrMsg = errMsg } func (e *Entity) IsStatusCreated() bool { return e.StatusCode == StatusCodeCreated } func (e *Entity) IsStatusRunning() bool { return e.StatusCode == StatusCodeRunning } func (e *Entity) IsStatusCompleted() bool { return e.StatusCode == StatusCodeCompleted } func (e *Entity) IsStatusStop() bool { return e.StatusCode == StatusCodeStop } func (e *Entity) IsStatusError() bool { return e.StatusCode == StatusCodeError } func (e *Entity) TransferStatus2StatusCode() error { statusCode, ok := statusCodeMap[e.Status] if !ok { return errors.Errorf("状态对应的状态码不存在: %v\n", e.Status) } e.StatusCode = statusCode return nil } func (e *Entity) TransferStatusCode2Status() error { status, ok := statusMap[e.StatusCode] if !ok { return errors.Errorf("状态码对应的状态不存在: %v", e.StatusCode) } e.Status = status return nil }