util.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package main
  2. import (
  3. "go.mongodb.org/mongo-driver/bson/primitive"
  4. util "jygit.jydev.jianyu360.cn/data_processing/common_utils"
  5. "reflect"
  6. "strings"
  7. "unicode/utf8"
  8. )
  9. // @Description 字段验证、处理
  10. // @Author J 2022/10/8 17:16
  11. func verifyF(f string, v interface{}, tmp1 interface{}) (interface{}, bool) {
  12. tmp := tmp1.(map[string]interface{})
  13. stype := util.ObjToString(tmp["stype"])
  14. vt := reflect.TypeOf(v).String()
  15. if strings.Contains(vt, stype) {
  16. switch stype {
  17. case "string":
  18. v1 := util.ObjToString(v)
  19. lens := util.IntAll(tmp["length"])
  20. if tmp["intercept"].(bool) {
  21. if utf8.RuneCountInString(v1) > lens {
  22. return string(([]rune(v1))[:lens]), true
  23. } else {
  24. return v1, false
  25. }
  26. } else {
  27. if utf8.RuneCountInString(v1) > lens {
  28. return "", true
  29. } else {
  30. return v1, false
  31. }
  32. }
  33. case "float":
  34. v1 := util.Float64All(v)
  35. min := util.Float64All(tmp["mix"])
  36. max := util.Float64All(tmp["max"])
  37. if min != 0 && v1 < min {
  38. return nil, true
  39. }
  40. if max != 0 && v1 >= max {
  41. return nil, true
  42. }
  43. dm := util.IntAll(tmp["decimal"]) //小数点位数
  44. v2, err := util.FormatFloat(v1, dm)
  45. if err != nil {
  46. return nil, true
  47. }
  48. return v2, false
  49. default:
  50. break
  51. }
  52. }
  53. return nil, true
  54. }
  55. func IsMarkInterfaceArr(t interface{}) []string {
  56. sub_list := []string{}
  57. if list_3, ok_3 := t.([]string); ok_3 {
  58. sub_list = list_3
  59. return sub_list
  60. }
  61. if list_1, ok_1 := t.(primitive.A); ok_1 {
  62. sub_list = util.ObjArrToStringArr(list_1)
  63. } else {
  64. if list_2, ok_2 := t.([]interface{}); ok_2 {
  65. sub_list = util.ObjArrToStringArr(list_2)
  66. }
  67. }
  68. return sub_list
  69. }
  70. func IsMarkInterfaceMap(t interface{}) []map[string]interface{} {
  71. p_list := []map[string]interface{}{}
  72. if yl_list_1, ok_1 := t.(primitive.A); ok_1 {
  73. p_list = util.ObjArrToMapArr(yl_list_1)
  74. } else {
  75. if yl_list_2, ok_2 := t.([]interface{}); ok_2 {
  76. p_list = util.ObjArrToMapArr(yl_list_2)
  77. }
  78. }
  79. return p_list
  80. }