tool.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  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. "询价": "询价",
  70. "单一": "单一",
  71. "竞价": "竞价",
  72. "竞谈": "竞谈",
  73. }
  74. func Duplicate(a interface{}) (ret []interface{}) {
  75. va := reflect.ValueOf(a)
  76. for i := 0; i < va.Len(); i++ {
  77. if i > 0 && reflect.DeepEqual(va.Index(i-1).Interface(), va.Index(i).Interface()) {
  78. continue
  79. }
  80. ret = append(ret, va.Index(i).Interface())
  81. }
  82. return ret
  83. }
  84. // 二分字符串查找
  85. func BinarySearch(s []string, k string) int {
  86. sort.Strings(s)
  87. lo, hi := 0, len(s)-1
  88. for lo <= hi {
  89. m := (lo + hi) >> 1
  90. if s[m] < k {
  91. lo = m + 1
  92. } else if s[m] > k {
  93. hi = m - 1
  94. } else {
  95. return m
  96. }
  97. }
  98. return -1
  99. }
  100. // 从数组中删除元素
  101. func deleteSlice(arr []string, v, stype string) []string {
  102. for k, v1 := range arr {
  103. if v1 == v {
  104. ts := time.Now().Unix()
  105. arr = append(arr[:k], arr[k+1:]...)
  106. rt := time.Now().Unix() - ts
  107. if rt > 0 {
  108. log.Println("deleteSlice", stype, rt, v, len(arr))
  109. }
  110. return arr
  111. }
  112. }
  113. return arr
  114. }