base.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package service
  2. import (
  3. "github.com/gogf/gf/os/gtime"
  4. "log"
  5. "reflect"
  6. )
  7. var (
  8. // CommonUpdateFieldEx, UpdateFieldEx 更新过滤字段
  9. CommonUpdateFieldEx = []interface{}{"created_by", "created_name", "created_time"}
  10. UpdateFieldEx = []interface{}{"id", "created_by", "created_name", "created_time"}
  11. )
  12. // SetCreatedInfo 插入数据库时设置创建信息
  13. func SetCreatedInfo(entry interface{}, id int, name string) {
  14. v := reflect.ValueOf(entry)
  15. t := reflect.TypeOf(entry)
  16. if t.Kind() == reflect.Map {
  17. data := entry.(map[string]interface{})
  18. data["created_by"] = id
  19. data["created_name"] = name
  20. data["created_time"] = gtime.Now()
  21. return
  22. }
  23. if t.Kind() == reflect.Ptr {
  24. t = t.Elem()
  25. v = v.Elem()
  26. }
  27. if t.Kind() != reflect.Struct {
  28. log.Println("Check type error not Struct")
  29. return
  30. }
  31. for i := 0; i < t.NumField(); i++ {
  32. fieldName := t.Field(i).Name
  33. if tag, ok := t.Field(i).Tag.Lookup("orm"); ok {
  34. switch tag {
  35. case "created_by":
  36. v.FieldByName(fieldName).Set(reflect.ValueOf(id))
  37. case "created_name":
  38. v.FieldByName(fieldName).Set(reflect.ValueOf(name))
  39. case "created_time":
  40. v.FieldByName(fieldName).Set(reflect.ValueOf(gtime.Now()))
  41. }
  42. }
  43. }
  44. }
  45. // SetUpdatedInfo 插入数据库时设置修改信息
  46. func SetUpdatedInfo(entry interface{}, id int, name string) {
  47. v := reflect.ValueOf(entry)
  48. t := reflect.TypeOf(entry)
  49. if t.Kind() == reflect.Map {
  50. data := entry.(map[string]interface{})
  51. data["updated_by"] = id
  52. data["updated_name"] = name
  53. data["updated_time"] = gtime.Now()
  54. return
  55. }
  56. if t.Kind() == reflect.Ptr {
  57. t = t.Elem()
  58. v = v.Elem()
  59. }
  60. if t.Kind() != reflect.Struct {
  61. log.Println("Check type error not Struct")
  62. return
  63. }
  64. for i := 0; i < t.NumField(); i++ {
  65. fieldName := t.Field(i).Name
  66. if tag, ok := t.Field(i).Tag.Lookup("orm"); ok {
  67. switch tag {
  68. case "updated_by":
  69. v.FieldByName(fieldName).Set(reflect.ValueOf(id))
  70. case "updated_name":
  71. v.FieldByName(fieldName).Set(reflect.ValueOf(name))
  72. case "updated_time":
  73. v.FieldByName(fieldName).Set(reflect.ValueOf(gtime.Now()))
  74. }
  75. }
  76. }
  77. }