base.go 3.4 KB

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