entity.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. CheckFieldID() error
  12. IDColumnName() string
  13. ForCreate() error
  14. ForDelete() error
  15. ForUpdate() error
  16. }
  17. type BaseEntity struct {
  18. ID string `sqlmapping:"column:id;key;" sqlresult:"column:id;"`
  19. }
  20. func (e *BaseEntity) DomainCNName() string {
  21. panic("领域实体没有实现DomainCNName接口")
  22. }
  23. func (e *BaseEntity) GenerateID() error {
  24. e.ID = strutils.SimpleUUID()
  25. return nil
  26. }
  27. func (e *BaseEntity) GetID() string {
  28. return e.ID
  29. }
  30. func (e *BaseEntity) CheckFieldID() error {
  31. if strutils.IsStringEmpty(e.ID) {
  32. return fserr.New(e.DomainCNName() + "ID为空")
  33. }
  34. if len([]byte(e.ID)) != FieldIDLen {
  35. return fserr.New(e.DomainCNName() + "ID长度不正确")
  36. }
  37. return nil
  38. }
  39. func (e *BaseEntity) IDColumnName() string {
  40. return ColumnID
  41. }
  42. func (e *BaseEntity) ForCreate() error {
  43. panic("领域实体没有实现ForCreate接口")
  44. }
  45. func (e *BaseEntity) ForDelete() error {
  46. panic("领域实体没有实现ForDelete接口")
  47. }
  48. func (e *BaseEntity) ForUpdate() error {
  49. panic("领域实体没有实现ForUpdate接口")
  50. }