util.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package main
  2. import (
  3. util "jygit.jydev.jianyu360.cn/data_processing/common_utils"
  4. "reflect"
  5. "strings"
  6. "unicode/utf8"
  7. )
  8. // @Description 字段验证、处理
  9. // @Author J 2022/10/8 17:16
  10. func verifyF(f string, v interface{}, tmp1 interface{}) (interface{}, bool) {
  11. tmp := tmp1.(map[string]interface{})
  12. stype := util.ObjToString(tmp["stype"])
  13. vt := reflect.TypeOf(v).String()
  14. if strings.Contains(vt, stype) {
  15. switch stype {
  16. case "string":
  17. v1 := util.ObjToString(v)
  18. lens := util.IntAll(tmp["length"])
  19. if tmp["intercept"].(bool) {
  20. if utf8.RuneCountInString(v1) > lens {
  21. return string(([]rune(v1))[:lens]), true
  22. } else {
  23. return v1, false
  24. }
  25. } else {
  26. if utf8.RuneCountInString(v1) > lens {
  27. return "", true
  28. } else {
  29. return v1, false
  30. }
  31. }
  32. case "float":
  33. v1 := util.Float64All(v)
  34. min := util.Float64All(tmp["mix"])
  35. max := util.Float64All(tmp["max"])
  36. if min != 0 && v1 < min {
  37. return nil, true
  38. }
  39. if max != 0 && v1 >= max {
  40. return nil, true
  41. }
  42. dm := util.IntAll(tmp["decimal"]) //小数点位数
  43. v2, err := util.FormatFloat(v1, dm)
  44. if err != nil {
  45. return nil, true
  46. }
  47. return v2, false
  48. default:
  49. break
  50. }
  51. }
  52. return nil, true
  53. }