123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- 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
- }
|