sunty
2019-07-12 2fb553ab4774ad2605f18dacb5bacb481bfe2f8c
add querybyId controllers
2个文件已修改
481 ■■■■■ 已修改文件
esutil/EsApi.go 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
esutil/EsClient.go 321 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
esutil/EsApi.go
@@ -1,24 +1,24 @@
package esutil
import (
        "errors"
        "strconv"
    "errors"
    "strconv"
        "basic.com/pubsub/protomsg.git"
        )
    "basic.com/pubsub/protomsg.git"
)
// 查询底库人员信息
func DbPersoninfos( queryindex int, querynums int ) ([]*protomsg.Esinfo, error){
            var dbinfos []*protomsg.Esinfo
            point   := strconv.Itoa(queryindex)
            number   := strconv.Itoa(querynums)
func DbPersoninfos(queryindex int, querynums int) ([]*protomsg.Esinfo, error) {
    var dbinfos []*protomsg.Esinfo
    point := strconv.Itoa(queryindex)
    number := strconv.Itoa(querynums)
            var dbinfoRequest =  `  {
                    "from": ` + point +  `,
    var dbinfoRequest = `  {
                    "from": ` + point + `,
                    "query": {
                        "match_all": {}
                    },
                     "size":`+ number +`,
                     "size":` + number + `,
                     "_source": [
                       "id",
                       "tableId",
@@ -26,61 +26,97 @@
                       ]
                    }`
    buf, err := EsReq("POST", "http://192.168.1.182:9200/dbtablepersons/dbpersons/_search",[]byte(dbinfoRequest))
    if err != nil {
        return dbinfos ,errors.New("http request dbtablename info is err!")
    }
    buf, err := EsReq("POST", "http://192.168.1.182:9200/dbtablepersons/dbpersons/_search", []byte(dbinfoRequest))
    if err != nil {
        return dbinfos, errors.New("http request dbtablename info is err!")
    }
      // 返回 _source 数组
      sources, err := Sourcelist(buf)
      if err != nil {
            return dbinfos,err
      }
    // 返回 _source 数组
    sources, err := Sourcelist(buf)
    if err != nil {
        return dbinfos, err
    }
      // 返回所有查询的数据
     dbpersoninfos :=  Parsesources(sources)
      return dbpersoninfos, nil
    // 返回所有查询的数据
    dbpersoninfos := Parsesources(sources)
    return dbpersoninfos, nil
}
// 根据底库id查询底库信息
func Dbpersoninfosbyid (id string) (protomsg.Baseinfo, error) {
    var dbinfo protomsg.Baseinfo
        var dbinfoRequest = `
func Dbtablefosbyid(id string) (protomsg.Dbtable, error) {
    var dbinfo protomsg.Dbtable
    var dbinfoRequest = `
            {
                "query":{
                    "terms":{
                        "_id":[
                            "`+ id +`"
                        ]
                    }
                }
                "query": {
                    "bool": {
                        "filter": [{
                            "terms": {
                                "_id": [
                                    "` + id + `"
                                ]
                            }
                        }]
                    }
                }
            }
        `
    buf, err := EsReq("POST", "http://192.168.1.182:9200/dbtablepersons/_search",[]byte(dbinfoRequest))
    if err != nil {
        return dbinfo,  err
    }
    buf, err := EsReq("POST", "http://192.168.1.182:9200/dbtables/_search", []byte(dbinfoRequest))
    if err != nil {
        return dbinfo, err
    }
    sources, err := Sourcelist(buf)
    if err != nil {
        return dbinfo , err
    }
    sources, err := Sourcelist(buf)
    if err != nil {
        return dbinfo, err
    }
    baseinfo := Dbpersonbyid(sources)
    return baseinfo, nil
    dbtable := Dbtablebyid(sources)
    return dbtable, nil
}
// 根据底库人员id查询底库人员信息
func Dbpersoninfosbyid(id string) (protomsg.Dbperson, error) {
    var dbinfo protomsg.Dbperson
    var dbinfoRequest = `
            {
                "query": {
                    "bool": {
                        "filter": [{
                            "terms": {
                                "_id": [
                                    "` + id + `"
                                ]
                            }
                        }]
                    }
                }
            }
        `
    buf, err := EsReq("POST", "http://192.168.1.182:9200/dbtablepersons/_search", []byte(dbinfoRequest))
    if err != nil {
        return dbinfo, err
    }
    sources, err := Sourcelist(buf)
    if err != nil {
        return dbinfo, err
    }
    dbperson := Dbpersonbyid(sources)
    return dbperson, nil
}
// 根据tableid 查询tablename
func Dbtablename(tableid string ) (tablename string, err error) {
    var dbinfotable =` {
func Dbtablename(tableid string) (tablename string, err error) {
    var dbinfotable = ` {
        "query": {
            "bool": {
                "filter": [
                {
                    "term": {
                        "id":"`+tableid+`"
                        "id":"` + tableid + `"
                    }
                }
                ]
@@ -91,20 +127,20 @@
        ]
    }
    `
    buf, err := EsReq("POST", "http://192.168.1.182:9200/dbtables/_search",[]byte(dbinfotable))
    if err != nil {
        return "" ,errors.New("http request dbtablename info is err!")
    }
    sources, err := Sourcelist(buf)
    if err != nil {
          return "",err
    }
    buf, err := EsReq("POST", "http://192.168.1.182:9200/dbtables/_search", []byte(dbinfotable))
    if err != nil {
        return "", errors.New("http request dbtablename info is err!")
    }
    sources, err := Sourcelist(buf)
    if err != nil {
        return "", err
    }
    for _, source := range sources {
        if name, ok := source["tableName"].(string); ok {
            tablename = name
            break
        }
    }
    return tablename, nil
    for _, source := range sources {
        if name, ok := source["tableName"].(string); ok {
            tablename = name
            break
        }
    }
    return tablename, nil
}
esutil/EsClient.go
@@ -1,154 +1,233 @@
package esutil
import (
    "bytes"
    "encoding/json"
    "errors"
    "fmt"
    "io/ioutil"
    "net/http"
    "time"
    "bytes"
    "basic.com/pubsub/protomsg.git"
    "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)
        if !ok {
            continue
        }
    var ok bool
    for _, source := range sources {
        var tmpinfo protomsg.Esinfo
        tmpinfo.FaceFeature, ok = source["faceFeature"].(string)
        if !ok {
            continue
        }
        tmpinfo.Id, ok    =   source["id"].(string)
        if !ok {
            continue
        }
        tmpinfo.Tableid, ok     =   source["tableId"].(string)
        if !ok {
            continue
        }
        tmpinfo.Id, ok = source["id"].(string)
        if !ok {
            continue
        }
        tmpinfo.Tableid, ok = source["tableId"].(string)
        if !ok {
            continue
        }
        esinfos = append(esinfos, &tmpinfo)
        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)
        //        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)
        // 根据 tableid 获取 tablename
        //        name, _:= Dbtablename(tmpinfo.TableId)
        //        tmpinfo.TableName= name
        //        binfos.Infos = append(binfos.Infos, &tmpinfo)
    }
    return
    }
    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)
            if !ok {
                continue
            }
//解析底库人员结构
func Dbpersonbyid(sources []map[string]interface{}) protomsg.Dbperson {
    var ok bool
            tmpinfo.PersonId, ok    =   source["id"].(string)
            if !ok {
                continue
            }
    var tmpinfo protomsg.Dbperson
    for _, source := range sources {
        tmpinfo.FaceFeature, ok = source["faceFeature"].(string)
        if !ok {
            continue
        }
            tmpinfo.TableId, ok     =   source["tableId"].(string)
            if !ok {
                continue
            }
        tmpinfo.Id, ok = source["id"].(string)
        if !ok {
            continue
        }
            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)
        tmpinfo.TableId, ok = source["tableId"].(string)
        if !ok {
            continue
        }
            //根据 tableid 获取 tablename
            name, _:= Dbtablename(tmpinfo.TableId)
            tmpinfo.TableName= name
        }
        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)
        Isnil("monitorLevel", ok)
        tmpinfo.UpdateTime, ok = source["updateTime"].(string)
        Isnil("updateTime", ok)
        tmpinfo.Age, ok = source["age"].(string)
        Isnil("age", ok)
        return tmpinfo
        isDelete, ok := source["isDelete"].(float64)
        if ok {
            tmpinfo.IsDelete = int32(isDelete)
        }
        Isnil("isDelete", ok)
        enable, ok := source["enable"].(float64)
        if ok {
            tmpinfo.Enable = int32(enable)
        }
        Isnil("endTime", ok)
        tmpinfo.Reserved, ok = source["reserved"].(string)
        Isnil("reserved", ok)
        tmpinfo.PicDesc, ok = source["picDesc"].(string)
        Isnil("picDesc", ok)
        tmpinfo.CreateTime, ok = source["createTime"].(string)
        Isnil("createTime", ok)
        tmpinfo.CreateBy, ok = source["createBy"].(string)
        Isnil("createBy", ok)
        //根据 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{}")
    }
//解析底库结构
func Dbtablebyid(sources []map[string]interface{}) protomsg.Dbtable {
    var ok bool
    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
    var tmpinfo protomsg.Dbtable
    for _, source := range sources {
        tmpinfo.Id, ok = source["id"].(string)
        if !ok {
            continue
        }
        tmpinfo.TableName, ok = source["tableName"].(string)
        Isnil("tableName", ok)
        tmpinfo.TableType, ok = source["tableType"].(string)
        Isnil("tableType", ok)
        tmpinfo.CreateBy, ok = source["createBy"].(string)
        Isnil("createBy", ok)
        tmpinfo.TableDesc, ok = source["tableDesc"].(string)
        Isnil("tableDesc", ok)
        tmpinfo.BwType, ok = source["bwType"].(string)
        Isnil("bwType", ok)
        tmpinfo.StartTime, ok = source["startTime"].(string)
        Isnil("startTime", ok)
        tmpinfo.EndTime, ok = source["endTime"].(string)
        Isnil("endTime", ok)
        isDelete, ok := source["isDelete"].(float64)
        if ok {
            tmpinfo.IsDelete = int32(isDelete)
        }
        Isnil("isDelete", ok)
        enable, ok := source["enable"].(float64)
        if ok {
            tmpinfo.Enable = int32(enable)
        }
        Isnil("endTime", ok)
        tmpinfo.CreateTime, ok = source["createTime"].(string)
        Isnil("createTime", ok)
        tmpinfo.UpdateTime, ok = source["updateTime"].(string)
        Isnil("updateTime", ok)
        tmpinfo.IsForever, ok = source["isForever"].(string)
        Isnil("isForever", ok)
        tmpinfo.IsSync, ok = source["isSync"].(string)
        Isnil("isSync", ok)
        tmpinfo.AnalyServerId, ok = source["analyServerId"].(string)
        Isnil("analyServerId", ok)
    }
    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")
    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
    }
    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
    }
    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
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println(err)
        return nil, err
    }
    return body, nil
}
// 计算时间
@@ -160,8 +239,8 @@
}
// 赋值时检测是否能够赋值
func Isnil(key string, ok bool){
    if !ok {
            fmt.Println(key, "is nil can not asign")
    }
func Isnil(key string, ok bool) {
    if !ok {
        fmt.Println(key, "is nil can not asign")
    }
}