base.go 1.6 KB

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