entity.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. package task
  2. import (
  3. "encoding/json"
  4. "git.sxidc.com/go-framework/baize/framework/core/domain"
  5. "git.sxidc.com/go-framework/baize/framework/core/domain/entity"
  6. "github.com/pkg/errors"
  7. )
  8. const (
  9. StatusCodeCreated = iota + 1
  10. StatusCodeRunning
  11. StatusCodeCompleted
  12. StatusCodeStop
  13. StatusCodeError
  14. )
  15. const (
  16. statusCreated = "已创建"
  17. statusRunning = "运行中"
  18. statusCompleted = "已完成"
  19. statusStop = "已停止"
  20. statusError = "错误"
  21. )
  22. var (
  23. statusMap = map[int]string{
  24. StatusCodeCreated: statusCreated,
  25. StatusCodeRunning: statusRunning,
  26. StatusCodeCompleted: statusCompleted,
  27. StatusCodeStop: statusStop,
  28. StatusCodeError: statusError,
  29. }
  30. statusCodeMap = map[string]int{
  31. statusCreated: StatusCodeCreated,
  32. statusRunning: StatusCodeRunning,
  33. statusCompleted: StatusCodeCompleted,
  34. statusStop: StatusCodeStop,
  35. statusError: StatusCodeError,
  36. }
  37. )
  38. const (
  39. FieldGroup = "Group"
  40. FieldContext = "Context"
  41. FieldStatus = "Status"
  42. FieldStatusCode = "StatusCode"
  43. FieldErrMsg = "ErrMsg"
  44. )
  45. var (
  46. ColumnGroup = domain.ColumnName(FieldGroup)
  47. ColumnContext = domain.ColumnName(FieldContext)
  48. ColumnStatusCode = domain.ColumnName(FieldStatusCode)
  49. ColumnErrMsg = domain.ColumnName(FieldErrMsg)
  50. )
  51. var fieldMap = map[string]string{
  52. FieldGroup: "组",
  53. FieldContext: "上下文",
  54. FieldStatus: "状态",
  55. FieldErrMsg: "错误信息",
  56. }
  57. type Entity struct {
  58. entity.Base
  59. Group string `sqlmapping:"column:group;notUpdate;" sqlresult:"column:group;" check:"required,lte=256,when=run/restart"`
  60. Context string `sqlmapping:"column:context;notUpdate;" sqlresult:"column:context;"`
  61. StatusCode int `sqlmapping:"column:status_code;" sqlresult:"column:status_code;" check:"required,when=run/restart"`
  62. Status string `sqlmapping:"-" sqlresult:"-"`
  63. ErrMsg string `sqlmapping:"column:err_msg;" sqlresult:"column:err_msg;"`
  64. CreateUserID string `sqlmapping:"column:create_user_id;" sqlresult:"column:create_user_id;" check:"required,len=32,when=run/restart"`
  65. entity.TimeFields
  66. }
  67. func (e *Entity) DomainCNName() string {
  68. return "任务"
  69. }
  70. func (e *Entity) DomainCamelName() string {
  71. return "Task"
  72. }
  73. func (e *Entity) GetFieldMap() map[string]string {
  74. return fieldMap
  75. }
  76. func (e *Entity) GetMapContext() (map[string]any, error) {
  77. ctx := make(map[string]any)
  78. err := json.Unmarshal([]byte(e.Context), &ctx)
  79. if err != nil {
  80. return nil, err
  81. }
  82. return ctx, nil
  83. }
  84. func (e *Entity) SetStatusCreated() {
  85. e.StatusCode = StatusCodeCreated
  86. e.Status = statusCreated
  87. }
  88. func (e *Entity) SetStatusRunning() {
  89. e.StatusCode = StatusCodeRunning
  90. e.Status = statusRunning
  91. }
  92. func (e *Entity) SetStatusCompleted() {
  93. e.StatusCode = StatusCodeCompleted
  94. e.Status = statusCompleted
  95. }
  96. func (e *Entity) SetStatusStop() {
  97. e.StatusCode = StatusCodeStop
  98. e.Status = statusStop
  99. }
  100. func (e *Entity) SetStatusError(errMsg string) {
  101. e.StatusCode = StatusCodeError
  102. e.Status = statusError
  103. e.ErrMsg = errMsg
  104. }
  105. func (e *Entity) IsStatusCreated() bool {
  106. return e.StatusCode == StatusCodeCreated
  107. }
  108. func (e *Entity) IsStatusRunning() bool {
  109. return e.StatusCode == StatusCodeRunning
  110. }
  111. func (e *Entity) IsStatusCompleted() bool {
  112. return e.StatusCode == StatusCodeCompleted
  113. }
  114. func (e *Entity) IsStatusStop() bool {
  115. return e.StatusCode == StatusCodeStop
  116. }
  117. func (e *Entity) IsStatusError() bool {
  118. return e.StatusCode == StatusCodeError
  119. }
  120. func (e *Entity) TransferStatus2StatusCode() error {
  121. statusCode, ok := statusCodeMap[e.Status]
  122. if !ok {
  123. return errors.Errorf("状态对应的状态码不存在: %v\n", e.Status)
  124. }
  125. e.StatusCode = statusCode
  126. return nil
  127. }
  128. func (e *Entity) TransferStatusCode2Status() error {
  129. status, ok := statusMap[e.StatusCode]
  130. if !ok {
  131. return errors.Errorf("状态码对应的状态不存在: %v", e.StatusCode)
  132. }
  133. e.Status = status
  134. return nil
  135. }