util.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package main
  2. import (
  3. "go.mongodb.org/mongo-driver/bson/primitive"
  4. util "jygit.jydev.jianyu360.cn/data_processing/common_utils"
  5. "unicode/utf8"
  6. )
  7. // 转换时间
  8. func transferDateTimeInfo(tmp map[string]interface{}, info *map[string]interface{}, keys []string) {
  9. for _, v := range keys {
  10. if t := util.Int64All(tmp[v]); t > 0 {
  11. key := "d_" + v
  12. (*info)[key] = util.FormatDateByInt64(&t, util.Date_Full_Layout)
  13. }
  14. }
  15. }
  16. // 转换文本
  17. func transferTextInfo(tmp map[string]interface{}, info *map[string]interface{}, keys []string, maxs []int) {
  18. for k, v := range keys {
  19. if value := util.ObjToString(tmp[v]); value != "" {
  20. key := "s_" + v
  21. if len(maxs) > k {
  22. (*info)[key] = cleanLength(value, maxs[k])
  23. } else {
  24. (*info)[key] = value
  25. }
  26. }
  27. }
  28. }
  29. // 转换布尔
  30. func transferBoolInfo(tmp map[string]interface{}, info *map[string]interface{}, keys []string) {
  31. for _, v := range keys {
  32. if tmp[v] != nil {
  33. key := "i_" + v
  34. if tmp[v].(bool) {
  35. (*info)[key] = 1
  36. } else {
  37. (*info)[key] = 0
  38. }
  39. }
  40. }
  41. }
  42. // 转换金额费用
  43. func transferMoneyRateInfo(tmp map[string]interface{}, info *map[string]interface{}, keys []string, maxs []float64) {
  44. for k, v := range keys {
  45. key := "f_" + v
  46. if value, b := cleanFloat64(util.Float64All(tmp[v]), maxs[k]); tmp[v] != nil && b {
  47. (*info)[key] = value
  48. }
  49. }
  50. }
  51. // 通用长度清洗
  52. func cleanLength(name string, l int) string {
  53. if l == -1 {
  54. return name
  55. }
  56. new_name := name
  57. if utf8.RuneCountInString(name) > l {
  58. new_name = string(([]rune(new_name))[:l])
  59. }
  60. return new_name
  61. }
  62. // 通用浮点清洗
  63. func cleanFloat64(value float64, max float64) (float64, bool) {
  64. if value <= max {
  65. return value, true
  66. }
  67. return float64(0), false
  68. }
  69. func IsMarkInterfaceArr(t interface{}) []string {
  70. sub_list := []string{}
  71. if list_3, ok_3 := t.([]string); ok_3 {
  72. sub_list = list_3
  73. return sub_list
  74. }
  75. if list_1, ok_1 := t.(primitive.A); ok_1 {
  76. sub_list = util.ObjArrToStringArr(list_1)
  77. } else {
  78. if list_2, ok_2 := t.([]interface{}); ok_2 {
  79. sub_list = util.ObjArrToStringArr(list_2)
  80. }
  81. }
  82. return sub_list
  83. }
  84. func IsMarkInterfaceMap(t interface{}) []map[string]interface{} {
  85. p_list := []map[string]interface{}{}
  86. if yl_list_1, ok_1 := t.(primitive.A); ok_1 {
  87. p_list = util.ObjArrToMapArr(yl_list_1)
  88. } else {
  89. if yl_list_2, ok_2 := t.([]interface{}); ok_2 {
  90. p_list = util.ObjArrToMapArr(yl_list_2)
  91. }
  92. }
  93. return p_list
  94. }