entity.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. package user
  2. import (
  3. "git.sxidc.com/go-framework/baize/framework/core/domain"
  4. "git.sxidc.com/go-framework/baize/framework/core/domain/entity"
  5. "git.sxidc.com/go-framework/baize/framework/core/tag/check"
  6. "git.sxidc.com/go-tools/utils/strutils"
  7. "github.com/pkg/errors"
  8. "time"
  9. )
  10. const (
  11. FieldUserName = "UserName"
  12. FieldPassword = "Password"
  13. FieldName = "name"
  14. FieldPhone = "phone"
  15. FieldEmail = "email"
  16. FieldLastLoginTime = "LastLoginTime"
  17. )
  18. var (
  19. ColumnUserName = domain.ColumnName(FieldUserName)
  20. ColumnPassword = domain.ColumnName(FieldPassword)
  21. ColumnName = domain.ColumnName(FieldName)
  22. ColumnPhone = domain.ColumnName(FieldPhone)
  23. ColumnEmail = domain.ColumnName(FieldEmail)
  24. ColumnLastLoginTime = domain.ColumnName(FieldLastLoginTime)
  25. )
  26. var fieldMap = map[string]string{
  27. FieldUserName: "用户名",
  28. FieldPassword: "密码",
  29. FieldName: "姓名",
  30. FieldPhone: "手机号",
  31. FieldEmail: "邮箱",
  32. FieldLastLoginTime: "最近登录时间",
  33. }
  34. type Entity struct {
  35. entity.Base
  36. UserName string `sqlmapping:"column:user_name;notUpdate" sqlresult:"column:user_name" check:"required,lte=256"`
  37. Password string `sqlmapping:"column:password" sqlresult:"column:password" check:"required,lte=256"`
  38. Name string `sqlmapping:"column:name" sqlresult:"column:name" check:"lte=256"`
  39. Phone string `sqlmapping:"column:phone" sqlresult:"column:phone" check:"lte=128"`
  40. Email string `sqlmapping:"column:email" sqlresult:"column:email" check:"lte=512"`
  41. Token string `sqlmapping:"column:token;notUpdate" sqlresult:"column:token"`
  42. LastLoginTime time.Time `sqlmapping:"column:last_login_time;notUpdate" sqlresult:"column:last_login_time" check:"required,timezero"`
  43. RoleIDs []string
  44. entity.TimeFields
  45. }
  46. func (e *Entity) DomainCNName() string {
  47. return "用户"
  48. }
  49. func (e *Entity) DomainCamelName() string {
  50. return "User"
  51. }
  52. func (e *Entity) ForCreate() error {
  53. checkResult := check.Struct(e, fieldMap)
  54. err := entity.CheckFieldIDResult(checkResult)
  55. if err != nil {
  56. return err
  57. }
  58. err = domain.CheckField(checkResult, e.DomainCNName(), FieldUserName)
  59. if err != nil {
  60. return err
  61. }
  62. err = domain.CheckField(checkResult, e.DomainCNName(), FieldPassword)
  63. if err != nil {
  64. return err
  65. }
  66. err = domain.CheckField(checkResult, e.DomainCNName(), FieldName)
  67. if err != nil {
  68. return err
  69. }
  70. err = domain.CheckField(checkResult, e.DomainCNName(), FieldLastLoginTime)
  71. if err != nil {
  72. return err
  73. }
  74. return nil
  75. }
  76. func (e *Entity) ForDelete() error {
  77. checkResult := check.Struct(e, fieldMap)
  78. err := entity.CheckFieldIDResult(checkResult)
  79. if err != nil {
  80. return err
  81. }
  82. return nil
  83. }
  84. func (e *Entity) ForUpdate() error {
  85. checkResult := check.Struct(e, fieldMap)
  86. err := entity.CheckFieldIDResult(checkResult)
  87. if err != nil {
  88. return err
  89. }
  90. err = e.checkUpdateFields(checkResult)
  91. if err != nil {
  92. return err
  93. }
  94. return nil
  95. }
  96. func (e *Entity) checkUpdateFields(checkResult check.Result) error {
  97. if strutils.AllBlank(e.Password) && e.LastLoginTime.IsZero() {
  98. return errors.New(e.DomainCNName() + "没有传递需要更新的字段")
  99. }
  100. if strutils.IsStringNotEmpty(e.Password) {
  101. err := domain.CheckField(checkResult, e.DomainCNName(), FieldPassword)
  102. if err != nil {
  103. return err
  104. }
  105. }
  106. if strutils.IsStringNotEmpty(e.Name) {
  107. err := domain.CheckField(checkResult, e.DomainCNName(), FieldName)
  108. if err != nil {
  109. return err
  110. }
  111. }
  112. if strutils.IsStringNotEmpty(e.Phone) {
  113. err := domain.CheckField(checkResult, e.DomainCNName(), FieldPhone)
  114. if err != nil {
  115. return err
  116. }
  117. }
  118. if strutils.IsStringNotEmpty(e.Email) {
  119. err := domain.CheckField(checkResult, e.DomainCNName(), FieldEmail)
  120. if err != nil {
  121. return err
  122. }
  123. }
  124. return nil
  125. }