entity.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. package student
  2. import (
  3. "git.sxidc.com/go-framework/baize/convenient/domain/query_rule"
  4. "git.sxidc.com/go-framework/baize/framework/core/domain"
  5. "git.sxidc.com/go-framework/baize/framework/core/domain/entity"
  6. "git.sxidc.com/go-framework/baize/framework/core/tag/check"
  7. "git.sxidc.com/go-tools/utils/strutils"
  8. "github.com/pkg/errors"
  9. )
  10. const (
  11. FieldName = "Name"
  12. )
  13. var (
  14. ColumnName = domain.ColumnName(FieldName)
  15. )
  16. var fieldMap = map[string]string{
  17. FieldName: "学生姓名",
  18. }
  19. type Entity struct {
  20. entity.Base
  21. Name string `sqlmapping:"column:name" sqlresult:"column:name" check:"required,lte=128" rule:"column:name"`
  22. FamilyID string `sqlmapping:"column:family_id" sqlresult:"column:family_id" check:"required,len=32"`
  23. ClassID string `sqlmapping:"column:class_id" sqlresult:"column:class_id" check:"required,len=32"`
  24. IdentityIDs []string `sqlmapping:"-" sqlresult:"-"`
  25. HobbyIDs []string `sqlmapping:"-" sqlresult:"-"`
  26. entity.TimeFields
  27. }
  28. func RegisterQueryRule() error {
  29. return query_rule.RegisterQueryRuleDefinitionByEntity(query_rule.RegisterQueryRuleDefinitionsByEntityItem{
  30. Entity: &Entity{},
  31. FieldMap: fieldMap,
  32. })
  33. }
  34. func (e *Entity) DomainCNName() string {
  35. return "学生"
  36. }
  37. func (e *Entity) DomainCamelName() string {
  38. return "Student"
  39. }
  40. func (e *Entity) ForCreate() error {
  41. checkResult := check.Struct(e, fieldMap)
  42. err := entity.CheckFieldIDResult(checkResult)
  43. if err != nil {
  44. return err
  45. }
  46. err = domain.CheckField(checkResult, e.DomainCNName(), FieldName)
  47. if err != nil {
  48. return err
  49. }
  50. return nil
  51. }
  52. func (e *Entity) ForDelete() error {
  53. checkResult := check.Struct(e, fieldMap)
  54. err := entity.CheckFieldIDResult(checkResult)
  55. if err != nil {
  56. return err
  57. }
  58. return nil
  59. }
  60. func (e *Entity) ForUpdate() error {
  61. checkResult := check.Struct(e, fieldMap)
  62. err := entity.CheckFieldIDResult(checkResult)
  63. if err != nil {
  64. return err
  65. }
  66. err = e.checkUpdateFields(checkResult)
  67. if err != nil {
  68. return err
  69. }
  70. return nil
  71. }
  72. func (e *Entity) checkUpdateFields(checkResult check.Result) error {
  73. if strutils.AllBlank(e.Name) {
  74. return errors.New(e.DomainCNName() + "没有传递需要更新的字段")
  75. }
  76. if strutils.IsStringNotEmpty(e.Name) {
  77. err := domain.CheckField(checkResult, e.DomainCNName(), FieldName)
  78. if err != nil {
  79. return err
  80. }
  81. }
  82. return nil
  83. }
  84. func (e *Entity) FormQueryRuleParams() map[string]any {
  85. ruleParams := make(map[string]any)
  86. if strutils.IsStringNotEmpty(e.Name) {
  87. ruleParams[ColumnName] = e.Name
  88. }
  89. return ruleParams
  90. }