base.go 2.4 KB

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