base.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package service
  2. import (
  3. "dashoo.cn/micro_libary/request"
  4. "errors"
  5. "github.com/gogf/gf/frame/g"
  6. "github.com/gogf/gf/os/gtime"
  7. "github.com/gogf/gf/util/gconv"
  8. "strconv"
  9. )
  10. /*
  11. 表基础模型
  12. */
  13. const (
  14. DefaultSortField = "Sort"
  15. DefaultSortType = "DESC"
  16. )
  17. // BaseModel 基础字段
  18. type BaseModel struct {
  19. CreatedBy string `orm:"CreatedBy" json:"created_by"` // 创建人姓名
  20. CreatedAt *gtime.Time `orm:"CreatedAt" json:"created_at"` // 创建时间
  21. UpdatedAt *gtime.Time `orm:"UpdatedAt" json:"updated_at"` // 更新时间
  22. UpdatedBy string `orm:"UpdatedBy" json:"updated_by"` // 更新人姓名
  23. DeletedAt *gtime.Time `orm:"DeletedAt" json:"deleted_at"` // 删除时间
  24. UpdatedById int `orm:"UpdatedById" json:"updated_by_id"` // 更新人ID
  25. CreatedById int `orm:"CreatedById" json:"created_by_id"` // 创建人ID
  26. CreateOn *gtime.Time `orm:"CreateOn" json:"create_on"` //
  27. CreateUserId string `orm:"CreateUserId" json:"create_user_id"` //
  28. CreateBy string `orm:"CreateBy" json:"create_by"` //
  29. ModifiedOn *gtime.Time `orm:"ModifiedOn" json:"modified_on"` //
  30. ModifiedUserId string `orm:"ModifiedUserId" json:"modified_user_id"` //
  31. ModifiedBy string `orm:"ModifiedBy" json:"modified_by"` //
  32. CreatedTime int64 `json:"created_time,omitempty"`
  33. UpdatedTime int64 `json:"updated_time,omitempty"`
  34. Version int `orm:"Version" json:"version"` // 版本号(乐观锁)
  35. }
  36. var (
  37. BaseColumns = []string{"Id", "CreatedBy", "CreatedAt", "UpdatedAt", "UpdatedBy", "DeletedAt",
  38. "UpdatedById", "CreatedById"}
  39. // UpdateFieldEx 更新过滤字段
  40. UpdateFieldEx = []string{
  41. "CreatedBy", "CreatedById", "CreateOn",
  42. "CreateUserId", "CreateBy", "CreatedTime",
  43. "CreatedUserId", "Id"}
  44. UpdateBaseField = []string{"UpdatedBy", "UpdatedById"}
  45. )
  46. var (
  47. NameExistsErr = errors.New("名称不能重复,请重新输入")
  48. CodeExistsErr = errors.New("编码不能重复,请重新输入")
  49. )
  50. // SetCreatedInfo 设置默认创建信息,仅创建时使用
  51. func (b *BaseModel) SetCreatedInfo(user *request.UserInfo) *BaseModel {
  52. b.CreatedBy = user.UserName
  53. b.CreatedById = int(user.Id)
  54. b.CreateOn = gtime.Now()
  55. b.CreateUserId = strconv.Itoa(int(user.Id))
  56. b.CreateBy = user.UserName
  57. b.CreatedTime = gtime.Timestamp()
  58. return b.SetUpdateInfo(user)
  59. }
  60. // SetUpdateInfo 设置默认更新信息,仅用于更新
  61. func (b *BaseModel) SetUpdateInfo(user *request.UserInfo) *BaseModel {
  62. b.UpdatedBy = user.UserName
  63. b.UpdatedById = int(user.Id)
  64. b.ModifiedOn = gtime.Now()
  65. b.ModifiedUserId = strconv.Itoa(int(user.Id))
  66. b.ModifiedBy = user.UserName
  67. b.UpdatedTime = gtime.Timestamp()
  68. return b
  69. }
  70. // SetUpdate 更新实体基础信息处理
  71. func SetUpdate(user *request.UserInfo, data interface{}) {
  72. base := new(BaseModel).SetUpdateInfo(user)
  73. _ = gconv.Struct(base, data)
  74. }
  75. // SetCreate 创建实体基础信息处理
  76. func SetCreate(user *request.UserInfo, data interface{}) {
  77. base := new(BaseModel).SetCreatedInfo(user)
  78. _ = gconv.Struct(base, data)
  79. }
  80. // SetUpdatedMap 生成用户信息
  81. func SetUpdatedMap(user *request.UserInfo) g.Map {
  82. return g.Map{
  83. "UpdatedBy": gtime.Now(),
  84. "UpdatedById": user.Id,
  85. }
  86. }
  87. // SetModifiedMap 生成用户信息
  88. func SetModifiedMap(user *request.UserInfo) g.Map {
  89. return g.Map{
  90. "ModifiedOn": gtime.Now(),
  91. "ModifiedUserId": user.Id,
  92. "ModifiedBy": user.UserName,
  93. }
  94. }