package main import ( "encoding/json" "log" "reflect" "sort" "time" ) var DateTimeSelect = []string{"bidopentime", "bidendtime", "signaturedate", "comeintime"} //项目中的字段 var FIELDS = []string{ "area", "city", "district", "projectname", "projectcode", "buyer", "buyerclass", "buyerperson", "buyertel", "winner", "agency", "topscopeclass", "subscopeclass", "package", } //招标信息字段 var INFOFIELDS = []string{ "projectname", "projectcode", "contractcode", "title", "publishtime", "comeintime", "bidopentime", "toptype", "subtype", "buyer", "buyerclass", "agency", "winner", "winnertel", "winnerperson", "budget", "bidamount", "buyerperson", "buyertel", "area", "city", "district", "purchasing", "purchasinglist", } // 包信息 var PackageEle = []string{ "origin", "name", //"text", "budget", "winner", "bidamount", "bidamounttype", "currency", "bidstatus", } var bidstatus = map[string]string{ "预告": "预告", "中标": "中标", "成交": "成交", "废标": "废标", "流标": "流标", "合同": "合同", } var bidtype = map[string]string{ "招标": "招标", "邀标": "邀标", "询价": "询价", "单一": "单一", "竞价": "竞价", "竞谈": "竞谈", } func Duplicate(a interface{}) (ret []interface{}) { va := reflect.ValueOf(a) for i := 0; i < va.Len(); i++ { if i > 0 && reflect.DeepEqual(va.Index(i-1).Interface(), va.Index(i).Interface()) { continue } ret = append(ret, va.Index(i).Interface()) } return ret } //二分字符串查找 func BinarySearch(s []string, k string) int { sort.Strings(s) lo, hi := 0, len(s)-1 for lo <= hi { m := (lo + hi) >> 1 if s[m] < k { lo = m + 1 } else if s[m] > k { hi = m - 1 } else { return m } } return -1 } //结构体转map func StructToMap(filed InfoField) map[string]interface{} { //先转json result, err := json.Marshal(filed) if err != nil { return nil } //json转map res := make(map[string]interface{}) err = json.Unmarshal(result, &res) return res } //从数组中删除元素 func deleteSlice(arr []string, v, stype string) []string { for k, v1 := range arr { if v1 == v { ts := time.Now().Unix() arr = append(arr[:k], arr[k+1:]...) rt := time.Now().Unix() - ts if rt > 0 { log.Println("deleteSlice", stype, rt, v, len(arr)) } return arr } } return arr }