554325746@qq.com
2019-07-08 d25f504c5fabb9eadb77c38f0df3cda983495be1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
package esutil
 
import (
    "encoding/json"
    "errors"
    "fmt"
    "io/ioutil"
    "net/http"
    "time"
    "bytes"
 
    "basic.com/pubsub/protomsg.git"
)
 
 
func Parsesources(sources []map[string]interface{}) (esinfos []*protomsg.Esinfo) {
    var ok bool
    for _, source := range sources {
       var tmpinfo protomsg.Esinfo
        tmpinfo.FaceFeature, ok =   source["faceFeature"].(string)
            Isnil("faceFeature", ok)
        tmpinfo.Id, ok    =   source["id"].(string)  
            Isnil("id", ok)
        tmpinfo.Tableid, ok     =   source["tableId"].(string)
            Isnil("tableId", ok)
        esinfos = append(esinfos, &tmpinfo)
 
//        tmpinfo.PersonName,ok  =   source["personName"].(string)
//            Isnil("personName", ok)
//        tmpinfo.PersonPicUrl,ok =  source["personPicUrl"].(string)
//            Isnil("personPicUrl", ok)
//        tmpinfo.PhoneNum,ok     =  source["phoneNum"].(string)
//            Isnil("phoneNum", ok)
//        tmpinfo.Sex,ok          =  source["sex"].(string)
//            Isnil("sex", ok)
//        tmpinfo.Idcard,ok       =  source["idCard"].(string)
//            Isnil("idCard", ok)
//        tmpinfo.MonitorLevel,ok =  source["monitorLevel"].(string)
 
        // 根据 tableid 获取 tablename
//        name, _:= Dbtablename(tmpinfo.TableId) 
//        tmpinfo.TableName= name 
//        binfos.Infos = append(binfos.Infos, &tmpinfo)
 
    }
    return
}
 
func Dbpersonbyid(sources []map[string]interface{}) (protomsg.Baseinfo) {
        var ok bool
        
        var tmpinfo protomsg.Baseinfo
        for _, source := range  sources{
            tmpinfo.FaceFeature, ok =   source["faceFeature"].(string)
                Isnil("faceFeature", ok)
            tmpinfo.PersonId, ok    =   source["id"].(string)  
                Isnil("id", ok)
            tmpinfo.TableId, ok     =   source["tableId"].(string)
                Isnil("tableId", ok)
 
            tmpinfo.PersonName,ok  =   source["personName"].(string)
                Isnil("personName", ok)
            tmpinfo.PersonPicUrl,ok =  source["personPicUrl"].(string)
                Isnil("personPicUrl", ok)
            tmpinfo.PhoneNum,ok     =  source["phoneNum"].(string)
                Isnil("phoneNum", ok)
            tmpinfo.Sex,ok          =  source["sex"].(string)
                Isnil("sex", ok)
            tmpinfo.Idcard,ok       =  source["idCard"].(string)
                Isnil("idCard", ok)
            tmpinfo.MonitorLevel,ok =  source["monitorLevel"].(string)
 
            //根据 tableid 获取 tablename
            name, _:= Dbtablename(tmpinfo.TableId) 
            tmpinfo.TableName= name 
        }
 
        return tmpinfo 
}
 
func Sourcelist(buf []byte)(sources []map[string]interface{}, err error){
    var info interface{}
    json.Unmarshal(buf, &info)
    out, ok := info.(map[string]interface{})
    if !ok {
        return nil, errors.New("http response interface can not change map[string]interface{}")
    }
 
    middle, ok := out["hits"].(map[string]interface{})
    if !ok {
        return nil, errors.New("first hits change error!")
    }
    for _, in := range middle["hits"].([]interface{}){
        tmpbuf, ok := in.(map[string]interface{})
        if !ok {
                fmt.Println("change to source error!") 
                continue
        }
        source, ok := tmpbuf["_source"].(map[string]interface{})
        if !ok {
            fmt.Println("change _source error!") 
            continue
        }
        sources  = append(sources, source )
    }
    return sources,nil
}
 
func EsReq(method string, url string, parama []byte) (buf []byte, err error) {
    defer elapsed("page")()
    timeout := time.Duration(10 * time.Second) 
    client := http.Client{
        Timeout: timeout,
    }
    request, err := http.NewRequest(method, url, bytes.NewBuffer(parama)) 
    request.Header.Set("Content-type", "application/json")
 
    if err != nil {
        fmt.Println("build request fail !")
        return nil, err 
    }
 
    resp, err := client.Do(request)
    if err != nil{
        fmt.Println("request error: ", err)
        return nil, err 
    }
 
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println(err) 
        return nil , err
    }
    return body, nil
}
 
// 计算时间
func elapsed(what string) func() {
    start := time.Now()
    return func() {
        fmt.Printf("%s took %v\n", what, time.Since(start))
    }
}
 
// 赋值时检测是否能够赋值
func Isnil(key string, ok bool){
    if !ok {
            fmt.Println(key, "is nil can not asign") 
    }
}