liuxiaolong
2020-05-28 0d251e8d1a5ba99f1186daa20ca88f90d1bf6c29
EsClient.go
@@ -57,9 +57,10 @@
   }
}
func Parsesources(sources []map[string]interface{}) (esinfos []*protomsg.Esinfo) {
func Parsesources(sources []map[string]interface{}) (multiInfos []*protomsg.MultiFeaCache) {
   var ok bool
   for _, source := range sources {
      var multiInfo protomsg.MultiFeaCache
      var tmpinfo protomsg.Esinfo
      tmpinfo.Id, ok = source["id"].(string)
      if !ok {
@@ -72,14 +73,74 @@
            if !ok {
               continue
            }
            if m["attachTarget"] != nil {
               multiInfo.AttachFeature, ok = m["attachTarget"].(map[string]interface{})["feature"].(string)
            }
            if m["targetLocation"] != nil {
               targetLocation := m["targetLocation"].(map[string]interface{})
               topLeft := targetLocation["topLeft"].(map[string]interface{})
               tx := topLeft["x"].(float64)
               ty := topLeft["y"].(float64)
               bottomRight := targetLocation["bottomRight"].(map[string]interface{})
               bx := bottomRight["x"].(float64)
               by := bottomRight["y"].(float64)
               multiInfo.TargetLocation = &protomsg.TargetLocation{
                  TopLeft: &protomsg.Location{
                     X: tx,
                     Y: ty,
                  },
                  BottomRight: &protomsg.Location{
                     X: bx,
                     Y: by,
                  },
               }
            }
         }
      }
      tmpinfo.AnalyServerId, ok = source["analyServerId"].(string)
      if !ok {
         continue
      }
      esinfos = append(esinfos, &tmpinfo)
      multiInfo.EsInfo = &tmpinfo
      multiInfo.CameraId, ok = source["cameraId"].(string)
      //fmt.Println(source["cameraId"])
      leis := make([]*protomsg.LinkEsInfo, 0)
      if source["linkTagInfo"] != nil {
         for _, v := range source["linkTagInfo"].([]interface{}) {
            var lei protomsg.LinkEsInfo
            mi := v.(map[string]interface{})
            lei.CameraId, ok = mi["cameraId"].(string)
            if mi["targetInfo"] != nil {
               for _, val := range mi["targetInfo"].([]interface{}) {
                  fmi := val.(map[string]interface{})
                  lei.Feature, ok = fmi["feature"].(string)
                  if fmi["targetLocation"] != nil {
                     targetLocation := fmi["targetLocation"].(map[string]interface{})
                     topLeft := targetLocation["topLeft"].(map[string]interface{})
                     tx := topLeft["x"].(float64)
                     ty := topLeft["y"].(float64)
                     bottomRight := targetLocation["bottomRight"].(map[string]interface{})
                     bx := bottomRight["x"].(float64)
                     by := bottomRight["y"].(float64)
                     multiInfo.TargetLocation = &protomsg.TargetLocation{
                        TopLeft: &protomsg.Location{
                           X: tx,
                           Y: ty,
                        },
                        BottomRight: &protomsg.Location{
                           X: bx,
                           Y: by,
                        },
                     }
                  }
                  lei.AttachFeature, ok = fmi["attachTarget"].(map[string]interface{})["feature"].(string)
               }
            }
            leis = append(leis, &lei)
         }
      }
      multiInfo.LinkEsInfo = leis
      multiInfos = append(multiInfos, &multiInfo)
   }
   return
}
@@ -110,7 +171,7 @@
      tmpinfo.SdkName, ok = source["sdkName"].(string)
      if source["picMaxUrl"] != nil {
         for _,v := range source["picMaxUrl"].([]interface{}) {
         for _, v := range source["picMaxUrl"].([]interface{}) {
            tmpinfo.PicMaxUrl = append(tmpinfo.PicMaxUrl, v.(string))
         }
      }
@@ -121,6 +182,7 @@
            m := v.(map[string]interface{})
            var ti protomsg.TargetInfo
            ti.TargetId, ok = m["targetId"].(string)
            ti.TargetType, ok = m["targetType"].(string)
            ti.TargetScore, ok = m["targetScore"].(float64)
            ti.Feature, ok = m["feature"].(string)
            ti.PicSmUrl, ok = m["picSmUrl"].(string)
@@ -157,7 +219,7 @@
            bi.CompareScore, ok = m["compareScore"].(float64)
            bi.BwType, ok = m["bwType"].(string)
            bi.TargetId, ok = m["targetId"].(string)
            bi.TableName, ok = m["tableName"].(string)
            bi.TargetName, ok = m["targetName"].(string)
            bi.TargetPicUrl, ok = m["targetPicUrl"].(string)
            bi.MonitorLevel, ok = m["monitorLevel"].(string)
            bi.Labels, ok = m["labels"].(string)
@@ -208,7 +270,7 @@
            lti.TaskName, ok = lm["taskName"].(string)
            lti.SdkName, ok = lm["sdkName"].(string)
            if lm["picMaxUrl"] != nil {
               for _,v := range lm["picMaxUrl"].([]interface{}) {
               for _, v := range lm["picMaxUrl"].([]interface{}) {
                  lti.PicMaxUrl = append(lti.PicMaxUrl, v.(string))
               }
            }
@@ -219,6 +281,7 @@
                  m := v.(map[string]interface{})
                  var ti protomsg.TargetInfo
                  ti.TargetId, ok = m["targetId"].(string)
                  ti.TargetType, ok = m["targetType"].(string)
                  ti.TargetScore, ok = m["targetScore"].(float64)
                  ti.Feature, ok = m["feature"].(string)
                  ti.PicSmUrl, ok = m["picSmUrl"].(string)
@@ -255,7 +318,7 @@
                  bi.CompareScore, ok = m["compareScore"].(float64)
                  bi.BwType, ok = m["bwType"].(string)
                  bi.TargetId, ok = m["targetId"].(string)
                  bi.TableName, ok = m["tableName"].(string)
                  bi.TargetName, ok = m["targetName"].(string)
                  bi.TargetPicUrl, ok = m["targetPicUrl"].(string)
                  bi.MonitorLevel, ok = m["monitorLevel"].(string)
                  bi.Labels, ok = m["labels"].(string)
@@ -479,9 +542,76 @@
   return data, nil
}
func SourceCreated(buf []byte) (result bool, err error) {
   var info interface{}
   json.Unmarshal(buf, &info)
   out, ok := info.(map[string]interface{})
   if !ok {
      return false, errors.New("http response interface can not change map[string]interface{}")
   }
   middle, ok := out["result"].(string)
   if !ok {
      return false, errors.New("first total change error!")
   }
   if middle == "created" || middle == "updated" {
      result = true
   }
   return result, nil
}
func SourceDeleted(buf []byte) (total int, err error) {
   var info interface{}
   json.Unmarshal(buf, &info)
   out, ok := info.(map[string]interface{})
   if !ok {
      return -1, errors.New("http response interface can not change map[string]interface{}")
   }
   middle, ok := out["deleted"].(float64)
   if !ok {
      return -1, errors.New("first total change error!")
   }
   total = int(middle)
   return total, nil
}
func SourceUpdated(buf []byte) (total int, err error) {
   var info interface{}
   json.Unmarshal(buf, &info)
   out, ok := info.(map[string]interface{})
   if !ok {
      return -1, errors.New("http response interface can not change map[string]interface{}")
   }
   middle, ok := out["updated"].(float64)
   if !ok {
      return -1, errors.New("first total change error!")
   }
   total = int(middle)
   return total, nil
}
func SourceTotal(buf []byte) (total int, err error) {
   var info interface{}
   json.Unmarshal(buf, &info)
   out, ok := info.(map[string]interface{})
   if !ok {
      return -1, errors.New("http response interface can not change map[string]interface{}")
   }
   middle, ok := out["hits"].(map[string]interface{})
   if !ok {
      return -1, errors.New("first total change error!")
   }
   tmp := middle["total"].(float64)
   total = int(tmp)
   return total, nil
}
func EsReq(method string, url string, parama []byte) (buf []byte, err error) {
   //defer elapsed("page")()
   timeout := time.Duration(10 * time.Second)
   timeout := time.Duration(100 * time.Second)
   client := http.Client{
      Timeout: timeout,
   }