base.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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.Slice {
  28. }
  29. if t.Kind() != reflect.Struct {
  30. log.Println("Check type error not Struct")
  31. return
  32. }
  33. for i := 0; i < t.NumField(); i++ {
  34. fieldName := t.Field(i).Name
  35. if tag, ok := t.Field(i).Tag.Lookup("orm"); ok {
  36. switch tag {
  37. case "created_by":
  38. v.FieldByName(fieldName).Set(reflect.ValueOf(id))
  39. case "created_name":
  40. v.FieldByName(fieldName).Set(reflect.ValueOf(name))
  41. case "created_time":
  42. v.FieldByName(fieldName).Set(reflect.ValueOf(gtime.Now()))
  43. }
  44. }
  45. }
  46. }
  47. // SetUpdatedInfo 插入数据库时设置修改信息
  48. func SetUpdatedInfo(entry interface{}, id int, name string) {
  49. v := reflect.ValueOf(entry)
  50. t := reflect.TypeOf(entry)
  51. if t.Kind() == reflect.Map {
  52. data := entry.(map[string]interface{})
  53. data["updated_by"] = id
  54. data["updated_name"] = name
  55. data["updated_time"] = gtime.Now()
  56. return
  57. }
  58. if t.Kind() == reflect.Ptr {
  59. t = t.Elem()
  60. v = v.Elem()
  61. }
  62. if t.Kind() != reflect.Struct {
  63. log.Println("Check type error not Struct")
  64. return
  65. }
  66. for i := 0; i < t.NumField(); i++ {
  67. fieldName := t.Field(i).Name
  68. if tag, ok := t.Field(i).Tag.Lookup("orm"); ok {
  69. switch tag {
  70. case "updated_by":
  71. v.FieldByName(fieldName).Set(reflect.ValueOf(id))
  72. case "updated_name":
  73. v.FieldByName(fieldName).Set(reflect.ValueOf(name))
  74. case "updated_time":
  75. v.FieldByName(fieldName).Set(reflect.ValueOf(gtime.Now()))
  76. }
  77. }
  78. }
  79. }