field.go 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. package entity
  2. import (
  3. "git.sxidc.com/go-framework/baize/framework/core/tag/check"
  4. "git.sxidc.com/go-tools/utils/strutils"
  5. "github.com/pkg/errors"
  6. "time"
  7. )
  8. const (
  9. // FieldID ID字段名
  10. FieldID = "ID"
  11. // FieldTenantID 租户ID字段名
  12. FieldTenantID = "TenantID"
  13. // FieldCreateUserID 创建用户ID字段名
  14. FieldCreateUserID = "CreateUserID"
  15. // FieldLastUpdateUserID 最近更新用户ID字段名
  16. FieldLastUpdateUserID = "LastUpdateUserID"
  17. // FieldDeleteUserID 删除用户ID字段名
  18. FieldDeleteUserID = "DeleteUserID"
  19. // FieldOperatorUserName 操作者用户名
  20. FieldOperatorUserName = "OperatorUserName"
  21. // FieldCreatedTime 创建时间字段名
  22. FieldCreatedTime = "CreatedTime"
  23. // FieldLastUpdatedTime 最近更新时间字段名
  24. FieldLastUpdatedTime = "LastUpdatedTime"
  25. )
  26. const (
  27. // ColumnID ID列名
  28. ColumnID = "id"
  29. // ColumnTenantID 租户ID列名
  30. ColumnTenantID = "tenant_id"
  31. // ColumnCreateUserID 创建用户ID列名
  32. ColumnCreateUserID = "create_user_id"
  33. // ColumnLastUpdateUserID 最新更新用户ID列名
  34. ColumnLastUpdateUserID = "last_update_user_id"
  35. // ColumnDeleteUserID 删除用户ID列名
  36. ColumnDeleteUserID = "delete_user_id"
  37. // ColumnOperatorUserName 操作者用户名列名
  38. ColumnOperatorUserName = "operator_user_name"
  39. // ColumnCreatedTime 创建时间列名
  40. ColumnCreatedTime = "created_time"
  41. // ColumnLastUpdatedTime 最近更新时间列名
  42. ColumnLastUpdatedTime = "last_updated_time"
  43. )
  44. const (
  45. idLen = 32
  46. )
  47. // TenantIDField 租户ID字段
  48. type TenantIDField struct {
  49. TenantID string `sqlmapping:"column:tenant_id;" sqlresult:"column:tenant_id;" check:"required,len=32"`
  50. }
  51. // UserIDFields 用户ID相关字段
  52. type UserIDFields struct {
  53. CreateUserID string `sqlmapping:"column:create_user_id;" sqlresult:"column:create_user_id;" check:"required,len=32"`
  54. LastUpdateUserID string `sqlmapping:"column:last_update_user_id;" sqlresult:"column:last_update_user_id;" check:"required,len=32"`
  55. DeleteUserID string `sqlmapping:"-" sqlresult:"-" check:"required,len=32"`
  56. }
  57. // OperatorUserNameField 操作者用户名
  58. type OperatorUserNameField struct {
  59. OperatorUserName string `sqlmapping:"-" sqlresult:"-" check:"required"`
  60. }
  61. // TimeFields 时间相关字段
  62. type TimeFields struct {
  63. CreatedTime time.Time `sqlmapping:"column:created_time;" sqlresult:"column:created_time;"`
  64. LastUpdatedTime time.Time `sqlmapping:"column:last_updated_time;" sqlresult:"column:last_updated_time;"`
  65. }
  66. // CheckFieldID 校验领域实体的ID字段是否合规
  67. // 参数:
  68. // - entity: 领域实体
  69. // 返回值:
  70. // - 错误
  71. func CheckFieldID(entity Entity) error {
  72. return checkField(entity, FieldID, "ID")
  73. }
  74. // CheckFieldTenantID 校验领域实体的租户ID字段是否合规
  75. // 参数:
  76. // - entity: 领域实体
  77. // 返回值:
  78. // - 错误
  79. func CheckFieldTenantID(entity Entity) error {
  80. return checkField(entity, FieldTenantID, "租户ID")
  81. }
  82. // CheckFieldCreateUserID 校验领域实体的创建用户ID字段是否合规
  83. // 参数:
  84. // - entity: 领域实体
  85. // 返回值:
  86. // - 错误
  87. func CheckFieldCreateUserID(entity Entity) error {
  88. return checkField(entity, FieldCreateUserID, "创建用户ID")
  89. }
  90. // CheckFieldLastUpdateUserID 校验领域实体的最近更新用户ID字段是否合规
  91. // 参数:
  92. // - entity: 领域实体
  93. // 返回值:
  94. // - 错误
  95. func CheckFieldLastUpdateUserID(entity Entity) error {
  96. return checkField(entity, FieldLastUpdateUserID, "最近更新用户ID")
  97. }
  98. // CheckFieldDeleteUserID 校验领域实体的删除用户ID字段是否合规
  99. // 参数:
  100. // - entity: 领域实体
  101. // 返回值:
  102. // - 错误
  103. func CheckFieldDeleteUserID(entity Entity) error {
  104. return checkField(entity, FieldDeleteUserID, "删除用户ID")
  105. }
  106. // CheckFieldIDResult 利用check.Struct函数返回的结果校验领域实体的ID字段是否合规
  107. // 参数:
  108. // - checkResult: check.Struct函数返回的结果
  109. // 返回值:
  110. // - 错误
  111. func CheckFieldIDResult(checkResult check.Result) error {
  112. return checkUseResult(checkResult, FieldID, "ID")
  113. }
  114. // CheckFieldOperatorUserName 校验领域实体的操作者用户ID字段是否合规
  115. // 参数:
  116. // - entity: 领域实体
  117. // 返回值:
  118. // - 错误
  119. func CheckFieldOperatorUserName(entity Entity) error {
  120. return checkField(entity, FieldOperatorUserName, "操作者用户ID")
  121. }
  122. // CheckFieldTenantIDResult 利用check.Struct函数返回的结果校验领域实体的租户ID字段是否合规
  123. // 参数:
  124. // - checkResult: check.Struct函数返回的结果
  125. // 返回值:
  126. // - 错误
  127. func CheckFieldTenantIDResult(checkResult check.Result) error {
  128. return checkUseResult(checkResult, FieldTenantID, "租户ID")
  129. }
  130. // CheckFieldCreateUserIDResult 利用check.Struct函数返回的结果校验领域实体的创建用户ID字段是否合规
  131. // 参数:
  132. // - checkResult: check.Struct函数返回的结果
  133. // 返回值:
  134. // - 错误
  135. func CheckFieldCreateUserIDResult(checkResult check.Result) error {
  136. return checkUseResult(checkResult, FieldCreateUserID, "创建用户ID")
  137. }
  138. // CheckFieldLastUpdateUserIDResult 利用check.Struct函数返回的结果校验领域实体的最近更新用户ID字段是否合规
  139. // 参数:
  140. // - checkResult: check.Struct函数返回的结果
  141. // 返回值:
  142. // - 错误
  143. func CheckFieldLastUpdateUserIDResult(checkResult check.Result) error {
  144. return checkUseResult(checkResult, FieldLastUpdateUserID, "最近更新用户ID")
  145. }
  146. // CheckFieldDeleteUserIDResult 利用check.Struct函数返回的结果校验领域实体的删除用户ID字段是否合规
  147. // 参数:
  148. // - checkResult: check.Struct函数返回的结果
  149. // 返回值:
  150. // - 错误
  151. func CheckFieldDeleteUserIDResult(checkResult check.Result) error {
  152. return checkUseResult(checkResult, FieldDeleteUserID, "删除用户ID")
  153. }
  154. // CheckFieldOperatorUserNameResult 利用check.Struct函数返回的结果校验领域实体的操作者用户ID字段是否合规
  155. // 参数:
  156. // - entity: 领域实体
  157. // 返回值:
  158. // - 错误
  159. func CheckFieldOperatorUserNameResult(checkResult check.Result) error {
  160. return checkUseResult(checkResult, FieldOperatorUserName, "操作者用户ID")
  161. }
  162. // CheckIDTypeValue 校验ID类型的字段,如ID,租户ID,用户ID等,特点是字符串类型,不能为空且长度严格为32字节
  163. // 参数:
  164. // - domainCNName: 领域中文名,可以使用DomainCNName()方法获得
  165. // - fieldCNName: 字段的中文名称(用于构造报错信息)
  166. // - id: id字段的值
  167. // 返回值:
  168. // - 错误
  169. func CheckIDTypeValue(domainCNName string, fieldCNName string, id string) error {
  170. if strutils.IsStringEmpty(id) {
  171. return errors.New(domainCNName + fieldCNName + "为空")
  172. }
  173. if len(id) != idLen {
  174. return errors.New(domainCNName + fieldCNName + "长度不正确")
  175. }
  176. return nil
  177. }
  178. func checkField(entity Entity, fieldName string, fieldCNName string) error {
  179. checkResult := check.Struct(entity, map[string]string{
  180. fieldName: entity.DomainCNName() + fieldCNName,
  181. })
  182. err := checkResult.CheckFields(fieldName)
  183. if err != nil {
  184. return errors.New(entity.DomainCNName() + ": " + err.Error())
  185. }
  186. return nil
  187. }
  188. func checkUseResult(checkResult check.Result, domainCNName string, fieldName string) error {
  189. err := checkResult.CheckFields(fieldName)
  190. if err != nil {
  191. return errors.New(domainCNName + ": " + err.Error())
  192. }
  193. return nil
  194. }