tool.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. package main
  2. import (
  3. "log"
  4. "reflect"
  5. "sort"
  6. "time"
  7. )
  8. var DateTimeSelect = []string{"bidopentime", "bidendtime", "signaturedate", "comeintime"}
  9. // 项目中的字段
  10. var FIELDS = []string{
  11. "area",
  12. "city",
  13. "district",
  14. "projectname",
  15. "projectcode",
  16. "buyer",
  17. "buyerclass",
  18. "buyerperson",
  19. "buyertel",
  20. //"winner",
  21. //"winnerperson",
  22. //"winnertel",
  23. "agency",
  24. "agencyperson",
  25. "agencytel",
  26. "budget",
  27. "bidamount",
  28. "tagname",
  29. "tagname_2",
  30. "tagname_3",
  31. }
  32. // 招标信息字段
  33. var INFOFIELDS = []string{
  34. "projectname",
  35. "projectcode",
  36. "title",
  37. "publishtime",
  38. "comeintime",
  39. "bidopentime",
  40. "toptype",
  41. "subtype",
  42. "buyer",
  43. "buyerclass",
  44. "agency",
  45. "agencyperson",
  46. "agencytel",
  47. "winner",
  48. "winnertel",
  49. "winnerperson",
  50. "budget",
  51. "bidamount",
  52. "buyerperson",
  53. "buyertel",
  54. "area",
  55. "city",
  56. "district",
  57. }
  58. var bidstatus = map[string]string{
  59. "预告": "预告",
  60. "中标": "中标",
  61. "成交": "成交",
  62. "废标": "废标",
  63. "流标": "流标",
  64. "合同": "合同",
  65. }
  66. var bidtype = map[string]string{
  67. "招标": "招标",
  68. }
  69. func Duplicate(a interface{}) (ret []interface{}) {
  70. va := reflect.ValueOf(a)
  71. for i := 0; i < va.Len(); i++ {
  72. if i > 0 && reflect.DeepEqual(va.Index(i-1).Interface(), va.Index(i).Interface()) {
  73. continue
  74. }
  75. ret = append(ret, va.Index(i).Interface())
  76. }
  77. return ret
  78. }
  79. // 二分字符串查找
  80. func BinarySearch(s []string, k string) int {
  81. sort.Strings(s)
  82. lo, hi := 0, len(s)-1
  83. for lo <= hi {
  84. m := (lo + hi) >> 1
  85. if s[m] < k {
  86. lo = m + 1
  87. } else if s[m] > k {
  88. hi = m - 1
  89. } else {
  90. return m
  91. }
  92. }
  93. return -1
  94. }
  95. // 从数组中删除元素
  96. func deleteSlice(arr []string, v, stype string) []string {
  97. for k, v1 := range arr {
  98. if v1 == v {
  99. ts := time.Now().Unix()
  100. arr = append(arr[:k], arr[k+1:]...)
  101. rt := time.Now().Unix() - ts
  102. if rt > 0 {
  103. log.Println("deleteSlice", stype, rt, v, len(arr))
  104. }
  105. return arr
  106. }
  107. }
  108. return arr
  109. }