| | |
| | | "fmt" |
| | | "io" |
| | | "io/ioutil" |
| | | "math" |
| | | "net/http" |
| | | "strings" |
| | | "time" |
| | |
| | | } |
| | | } |
| | | |
| | | 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.FaceFeature, ok = source["faceFeature"].(string) |
| | | if !ok { |
| | | continue |
| | | } |
| | | |
| | | tmpinfo.Id, ok = source["id"].(string) |
| | | if !ok { |
| | | continue |
| | | } |
| | | tmpinfo.Tableid, ok = source["tableId"].(string) |
| | | if source["targetInfo"] != nil { |
| | | for _, v := range source["targetInfo"].([]interface{}) { |
| | | m := v.(map[string]interface{}) |
| | | tmpinfo.FaceFeature, ok = m["feature"].(string) |
| | | 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) |
| | | |
| | | // 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) |
| | | |
| | | 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 |
| | | } |
| | |
| | | tmpinfo.TaskId, ok = source["taskId"].(string) |
| | | tmpinfo.TaskName, ok = source["taskName"].(string) |
| | | tmpinfo.SdkName, ok = source["sdkName"].(string) |
| | | tmpinfo.PicMaxUrl, ok = source["picMaxUrl"].(string) |
| | | |
| | | if source["picMaxUrl"] != nil { |
| | | for _, v := range source["picMaxUrl"].([]interface{}) { |
| | | tmpinfo.PicMaxUrl = append(tmpinfo.PicMaxUrl, v.(string)) |
| | | } |
| | | } |
| | | tmpinfo.VideoUrl, ok = source["videoUrl"].(string) |
| | | tmpinfo.PicDate, ok = source["picDate"].(string) |
| | | if source["targetInfo"] != nil { |
| | |
| | | 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) |
| | |
| | | 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) |
| | |
| | | lti.TaskId, ok = lm["taskId"].(string) |
| | | lti.TaskName, ok = lm["taskName"].(string) |
| | | lti.SdkName, ok = lm["sdkName"].(string) |
| | | lti.PicMaxUrl, ok = lm["picMaxUrl"].(string) |
| | | if lm["picMaxUrl"] != nil { |
| | | for _, v := range lm["picMaxUrl"].([]interface{}) { |
| | | lti.PicMaxUrl = append(lti.PicMaxUrl, v.(string)) |
| | | } |
| | | } |
| | | lti.VideoUrl, ok = lm["videoUrl"].(string) |
| | | lti.PicDate, ok = lm["picDate"].(string) |
| | | if lm["targetInfo"] != nil { |
| | |
| | | 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) |
| | |
| | | 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) |
| | |
| | | return tmpinfos |
| | | } |
| | | |
| | | func SourceAggregations(buf [] byte) (sources map[string]interface{}, err error) { |
| | | s := make(map[string]interface{}) |
| | | loc, err := time.LoadLocation("Asia/Shanghai") |
| | | if err != nil { |
| | | return nil, errors.New("时区设置错误") |
| | | } |
| | | 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["aggregations"].(map[string]interface{}) |
| | | if !ok { |
| | | return nil, errors.New("first hits change error!") |
| | | } |
| | | bucketsAggs := middle["buckets_aggs"].(map[string]interface{}) |
| | | buckets := bucketsAggs["buckets"].([]interface{}) |
| | | if len(buckets) == 0 { |
| | | return nil, nil |
| | | } |
| | | allSource := make([]map[string]interface{},0) |
| | | for _, inf := range buckets { |
| | | //tmpSources := make(map[string]interface{}, 0) |
| | | hitsSources := make([]map[string]interface{}, 0) |
| | | //groupKey := inf.(map[string]interface{})["key"].(map[string]interface{}) |
| | | //docCount := int(inf.(map[string]interface{})["doc_count"].(float64)) |
| | | topAttentionHits := inf.(map[string]interface{})["top_attention_hits"].(map[string]interface{}) |
| | | middleHits := topAttentionHits["hits"].(map[string]interface{}) |
| | | finalHits := middleHits["hits"].([]interface{}) |
| | | tmpHitSource := make(map[string]interface{}) |
| | | startTime := "" |
| | | for _, in := range finalHits { |
| | | 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 |
| | | } |
| | | baseInfo := source["baseInfo"].([]interface{})[0].(map[string]interface{}) |
| | | targetInfo := source["targetInfo"].([]interface{})[0].(map[string]interface{}) |
| | | tmpTime := source["picDate"].(string) |
| | | mTime, err := time.ParseInLocation("2006-01-02 15:04:05", tmpTime, loc) |
| | | if err != nil { |
| | | return nil, errors.New("时间解析错误") |
| | | } |
| | | |
| | | sTime := tmpTime |
| | | eTime := tmpTime |
| | | if startTime != "" { |
| | | sinTime, _ := time.ParseInLocation("2006-01-02 15:04:05", startTime, loc) |
| | | if math.Abs(sinTime.Sub(mTime).Seconds()) <= 20 { |
| | | startTime = tmpTime |
| | | hitsSources[len(hitsSources)-1]["endTime"] = tmpTime |
| | | continue |
| | | } else { |
| | | if sinTime.Sub(mTime).Seconds() == 0{ |
| | | sinTime.Add(time.Second*1) |
| | | sinTime.Format("2006-01-02 15:04:05") |
| | | hitsSources[len(hitsSources)-1]["endTime"] = sinTime |
| | | } |
| | | } |
| | | } |
| | | startTime = tmpTime |
| | | tmpHitSource["personId"] = baseInfo["targetId"].(string) |
| | | tmpHitSource["cameraId"] = source["cameraId"].(string) |
| | | tmpHitSource["cameraName"] = source["cameraName"].(string) |
| | | tmpHitSource["cameraAddr"] = source["cameraAddr"].(string) |
| | | tmpHitSource["targetScore"] = int(targetInfo["targetScore"].(float64)) |
| | | tmpHitSource["properties"] = source["showLabels"].(string) |
| | | tmpHitSource["tableId"] = baseInfo["tableId"].(string) |
| | | tmpHitSource["tableName"] = baseInfo["tableName"].(string) |
| | | tmpHitSource["bwType"] = baseInfo["bwType"].(string) |
| | | tmpHitSource["personName"] = baseInfo["targetName"].(string) |
| | | tmpHitSource["compareScore"] = int(baseInfo["compareScore"].(float64)) |
| | | tmpHitSource["startTime"] = sTime |
| | | tmpHitSource["startBackGroundPicUrl"] = source["picMaxUrl"].([]interface{}) |
| | | tmpHitSource["startFacePicUrl"] = targetInfo["picSmUrl"].(string) |
| | | tmpHitSource["endTime"] = eTime |
| | | tmpHitSource["endTBackGroundPicUrl"] = source["picMaxUrl"].([]interface{}) |
| | | tmpHitSource["endTFacePicUrl"] = targetInfo["picSmUrl"].(string) |
| | | hitsSources = append(hitsSources, tmpHitSource) |
| | | } |
| | | allSource = append(allSource,hitsSources...) |
| | | // tmpSources["groupKey"] = groupKey |
| | | // tmpSources["doc_count"] = docCount |
| | | // tmpSources["hits_sources"] = hitsSources |
| | | // sources = append(sources, tmpSources) |
| | | } |
| | | count := len(allSource) |
| | | fmt.Println(count) |
| | | s["count"] = count |
| | | s["allSource"] = allSource |
| | | |
| | | return s, nil |
| | | } |
| | | |
| | | func Sourcelist(buf []byte) (sources []map[string]interface{}, err error) { |
| | | var info interface{} |
| | | json.Unmarshal(buf, &info) |
| | |
| | | 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, |
| | | } |