entity.go 975 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package domain
  2. import (
  3. "git.sxidc.com/go-tools/utils/strutils"
  4. "git.sxidc.com/service-supports/fserr"
  5. )
  6. type Entity interface {
  7. Object
  8. DomainCNName() string
  9. GenerateID() error
  10. GetID() string
  11. CheckID(errCode int) error
  12. IDColumnName() string
  13. }
  14. type BaseEntity struct {
  15. ID string `sqlmapping:"column:id;key;" sqlresult:"column:id;"`
  16. }
  17. func (e *BaseEntity) DomainCNName() string {
  18. panic("领域实体没有实现DomainCNName接口")
  19. }
  20. func (e *BaseEntity) GenerateID() error {
  21. e.ID = strutils.SimpleUUID()
  22. return nil
  23. }
  24. func (e *BaseEntity) GetID() string {
  25. return e.ID
  26. }
  27. func (e *BaseEntity) CheckID(errCode int) error {
  28. if strutils.IsStringEmpty(e.ID) {
  29. return fserr.WithCode(nil, errCode, fserr.MsgOption(e.DomainCNName()+"ID为空"))
  30. }
  31. if len([]byte(e.ID)) != FieldIDLen {
  32. return fserr.WithCode(nil, errCode, fserr.MsgOption(e.DomainCNName()+"ID长度不正确"))
  33. }
  34. return nil
  35. }
  36. func (e *BaseEntity) IDColumnName() string {
  37. return ColumnID
  38. }