From e3974a0ccda29e695cde0c770dfaea4c916c500c Mon Sep 17 00:00:00 2001
From: liuxiaolong <736321739@qq.com>
Date: 星期二, 19 十一月 2019 15:31:20 +0800
Subject: [PATCH] fix es param
---
service/FaceCompareService.go | 257 ++++++++++++--------------------------------------
1 files changed, 64 insertions(+), 193 deletions(-)
diff --git a/service/FaceCompareService.go b/service/FaceCompareService.go
index 96fc1ac..24aabde 100644
--- a/service/FaceCompareService.go
+++ b/service/FaceCompareService.go
@@ -1,22 +1,17 @@
package service
import (
- esApi "basic.com/pubsub/esutil.git"
"basic.com/pubsub/protomsg.git"
- "encoding/json"
"github.com/gogo/protobuf/proto"
"github.com/satori/go.uuid"
"nanomsg.org/go-mangos"
"nanomsg.org/go-mangos/protocol/req"
"nanomsg.org/go-mangos/transport/ipc"
"nanomsg.org/go-mangos/transport/tcp"
- "sort"
"strconv"
"sync"
- "time"
"webserver/extend/config"
- "webserver/extend/logger"
- "webserver/extend/util"
+ "basic.com/valib/logger.git"
)
type FaceCompareService struct {
@@ -33,28 +28,19 @@
type CompareOnce struct {
CompareNum string `json:"compareOnce"`
- CompareData []CompareResult `json:"compareData"`
+ CompareData *CompareList `json:"compareData"`
}
-type CompareResultWrapper struct {
- CompareData []CompareResult
- By func(p,q *CompareResult) bool
-}
+type CompareList []*protomsg.SdkCompareEach
-func (crw CompareResultWrapper) Len()int {
- return len(crw.CompareData)
+func (s CompareList) Len()int {
+ return len(s)
}
-func (crw CompareResultWrapper) Swap(i,j int) {
- crw.CompareData[i],crw.CompareData[j] = crw.CompareData[j],crw.CompareData[i]
+func (s CompareList) Swap(i,j int) {
+ s[i],s[j] = s[j],s[i]
}
-func (crw CompareResultWrapper) Less(i,j int) bool{
- return crw.By(&crw.CompareData[i],&crw.CompareData[j])
-}
-
-func SortByScore(list []CompareResult) {
- sort.Sort(CompareResultWrapper{list, func(p, q *CompareResult) bool {
- return q.CompareScore < p.CompareScore //閫掑噺鎺掑簭
- }})
+func (s CompareList) Less(i,j int) bool{//闄嶅簭鎺掑簭
+ return s[i].CompareScore > s[j].CompareScore
}
var compResultHisM = make(map[string]*CompareOnce,0)
@@ -78,209 +64,94 @@
var CaptureTable = "capturetable" // 鎶撴媿搴�
-type CompareResult struct {
- Id string `json:"id"`
- CompareScore float32 `json:"compareScore"`
- CameraId string `json:"cameraId"`
- CameraAddr string `json:"cameraAddr"`
- PicDate string `json:"picDate"`
- Content string `json:"content"`
- IsAlarm int `json:"isAlarm"`
- PicMaxUrl string `json:"picMaxUrl"`
- PicSmUrl []string `json:"picSmUrl"`
- Sex string `json:"sex"`
- AgeDescription string `json:"ageDescription"`
- Race string `json:"race"`
- TaskId string `json:"taskId"`
- TaskName string `json:"taskName"`
- BaseInfo []DbPersonVo `json:"baseInfo"`
- VideoUrl string `json:"videoUrl"`
- SdkName string `json:"sdkName"`
-}
-type DbPersonVo struct {
- BwType string `json:"bwType"`
- CompareScore float32 `json:"compareScore"`
- IdCard string `json:"idCard"`
- MonitorLevel string `json:"monitorLevel"`
- PersonId string `json:"personId"`
- PersonName string `json:"personName"`
- PersonPicUrl string `json:"personPicUrl"`
- PhoneNum string `json:"phoneNum"`
- Sex string `json:"sex"`
- TableId string `json:"tableId"`
- TableName string `json:"tableName"`
-}
-
-func (sv *FaceCompareService) Compare() *CompareOnce{
+func (sv *FaceCompareService) CompareVideoPersons() *CompareList{
+ sv.CompareArgs.TableIds = []string { CaptureTable }
b, err := proto.Marshal(&sv.CompareArgs)
- compServerList := config.CompServerInfo.Url
- logger.Debug("compServerList:", compServerList)
- //1.鍚戝悇涓猚ompare杩涚▼鍙戣捣璇锋眰鎷垮埌姣斿缁撴灉
- resultList :=make([]CompareResult,0)
- for _,str :=range compServerList{
- reqUrl := "tcp://"+str
+ esCompServerList := config.EsCompServerInfo.Ips
+ logger.Debug("compServerList:", esCompServerList)
+ //1.鍚戝悇涓狤s compare杩涚▼鍙戣捣璇锋眰鎷垮埌姣斿缁撴灉
+ var resultList CompareList
+
+ for _,str :=range esCompServerList{
+ reqUrl := "tcp://"+str + ":"+strconv.Itoa(config.EsCompServerInfo.Port)
resultB := doCompareRequest(reqUrl,b)
if resultB == nil || len(*resultB) ==0 {
continue
}
- rList :=make([]protomsg.Esinfo,0)
- err = json.Unmarshal(*resultB, &rList)
- if err !=nil{
- logger.Debug("recv result Unmarshal err:", err)
+ var sdkCompResult protomsg.SdkCompareResult
+
+ err = proto.Unmarshal(*resultB, &sdkCompResult)
+ if err !=nil {
+ logger.Debug("comp sdkCompareResult unmarshal err:", err)
continue
}
- logger.Debug("len(rList):", len(rList))
- if len(rList) >0 {
- resultList = append(resultList, FillDataToCompareResult(&rList)...)
+
+ logger.Debug("comp len(rList):", len(sdkCompResult.CompareResult))
+ if len(sdkCompResult.CompareResult) >0 {
+ resultList = append(resultList, sdkCompResult.CompareResult...)
}
}
+ logger.Debug("comp totalList.len:", len(resultList))
- //2.缂撳瓨姣斿缁撴灉
- co := &CompareOnce{
- CompareNum: sv.CompareNum,
- CompareData: resultList,
+ return &resultList
+}
+
+//姣斿搴曞簱
+func (sv *FaceCompareService) CompareDbPersons() *CompareList{
+ b, err := proto.Marshal(&sv.CompareArgs)
+ dbPersonCompServerUrl := config.DbPersonCompInfo.Ip
+ logger.Debug("comp Server url:", dbPersonCompServerUrl)
+
+ var resultList CompareList
+
+ reqUrl := "tcp://"+dbPersonCompServerUrl+":"+strconv.Itoa(config.DbPersonCompInfo.Port)
+ resultB := doCompareRequest(reqUrl,b)
+ if resultB == nil || len(*resultB) ==0 {
+ return nil
}
- SetCompResultByNum(co)
+ var sdkCompResult protomsg.SdkCompareResult
+ err = proto.Unmarshal(*resultB, &sdkCompResult)
+ if err !=nil {
+ logger.Debug("comp sdkCompareResult unmarshal err:", err)
+ return nil
+ }
- return co
+ logger.Debug("comp len(rList):", len(sdkCompResult.CompareResult))
+ if len(sdkCompResult.CompareResult) >0 {
+ resultList = append(resultList, sdkCompResult.CompareResult...)
+ }
+
+ logger.Debug("comp totalList.len:", len(resultList))
+
+ return &resultList
}
func doCompareRequest(url string,args []byte) *[]byte{
- reqUrl := "tcp://"+url
- logger.Debug("reqUrl:",reqUrl)
+ logger.Debug("comp reqUrl:",url)
var sock mangos.Socket
var err error
var msg []byte
if sock,err = req.NewSocket();err !=nil {
- logger.Debug("can't new req socket:%s",err.Error())
+ logger.Debug("comp can't new req socket:%s",err.Error())
return nil
}
sock.AddTransport(ipc.NewTransport())
sock.AddTransport(tcp.NewTransport())
- sock.SetOption(mangos.OptionRecvDeadline, time.Second*10)
if err = sock.Dial(url);err !=nil {
- logger.Debug("can't dial on req socket:%s",err.Error())
+ logger.Debug("comp can't dial on req socket:%s",err.Error())
return nil
}
+ sock.SetOption(mangos.OptionMaxRecvSize, 1024*1024*100)
+ //sock.SetOption(mangos.OptionRecvDeadline, time.Second*10)
if err = sock.Send(args);err !=nil {
- logger.Debug("can't send message on push socket:%s",err.Error())
+ logger.Debug("comp can't send message on push socket:%s",err.Error())
return nil
}
if msg,err = sock.Recv();err !=nil {
- logger.Debug("sock.Recv receive err:%s",err.Error())
+ logger.Debug("comp sock.Recv receive err:%s",err.Error())
return nil
}
sock.Close()
return &msg
-}
-
-//濉厖鍚戝墠绔繑鍥炵殑鏁版嵁
-func FillDataToCompareResult(rList *[]protomsg.Esinfo) []CompareResult {
- resultList :=make([]CompareResult,0)
-
- dbPersonM := make(map[string]*protomsg.Esinfo,0)
- captureM := make(map[string]*protomsg.Esinfo,0)
- personIds :=make([]string,0)
- captureIds := make([]string,0)
- for _,v :=range *rList{
- if v.Tableid == CaptureTable {
- captureM[v.Id] = &v
- captureIds = append(captureIds,v.Id)
- } else {
- dbPersonM[v.Id] = &v
- personIds = append(personIds,v.Id)
- }
- }
- logger.Debug("personIds:", personIds)
- logger.Debug("captureIds:",captureIds)
- esServerIp := config.EsInfo.Masterip
- esServerPort := config.EsInfo.Httpport
- index := config.EsInfo.EsIndex.Dbtablepersons.IndexName
- var dbpersons []protomsg.Dbperson
- if len(personIds) >0 {
- dbpersons, _ = esApi.Dbpersoninfosbyid(personIds, index, esServerIp, esServerPort)
- }
-
- logger.Debug("dbpersons:", dbpersons)
- if dbpersons !=nil {
- for _,p :=range dbpersons {
- var dbP = DbPersonVo {
- PersonId: p.Id,
- IdCard: p.IdCard,
- CompareScore: util.ParseScore(dbPersonM[p.Id].CompareScore),
- MonitorLevel: p.MonitorLevel,
- PersonName: p.PersonName,
- PersonPicUrl: p.PersonPicUrl,
- PhoneNum: p.PhoneNum,
- Sex: p.Sex,
- TableId: p.TableId,
- }
- dbTableInfos, _ := esApi.Dbtablefosbyid([]string{p.TableId}, config.EsInfo.EsIndex.DbTables.IndexName, esServerIp, esServerPort)
- if dbTableInfos !=nil{
- dbP.BwType = dbTableInfos[0].BwType
- dbP.TableName = dbTableInfos[0].TableName
- }
- var cr = CompareResult{
- BaseInfo:[]DbPersonVo{ dbP },
- }
- resultList = append(resultList,cr)
- }
- }
- var capturePersons []protomsg.Videopersons
- if len(captureIds) >0 {
- logger.Debug("capturePersons:", capturePersons)
- videopersons, _ := esApi.Videopersonsinfosbyid(captureIds, config.EsInfo.EsIndex.VideoPersons.IndexName, config.EsInfo.Masterip, config.EsInfo.Httpport)
- logger.Debug("videoPersons.len:",len(videopersons))
- for _,vp :=range videopersons {
- isAlarmInt, _ := strconv.Atoi(vp.IsAlarm)
- bi := make([]DbPersonVo,0)
- for _,p :=range vp.BaseInfo {
- bi = append(bi, DbPersonVo{
- PersonId: p.PersonId,
- IdCard: p.IdCard,
- CompareScore: util.ParseScore(p.CompareScore),
- MonitorLevel: parseMonitorLevel(p.MonitorLevel),
- PersonName: p.PersonName,
- PersonPicUrl: p.PersonPicUrl,
- PhoneNum: p.PhoneNum,
- Sex: p.Sex,
- TableId: p.TableId,
- })
- }
- vpE := CompareResult{
- Id: vp.Id,
- CompareScore: util.ParseScore(captureM[vp.Id].CompareScore),
- CameraId: vp.CameraId,
- CameraAddr: vp.CameraAddr,
- PicDate: vp.PicDate,
- PicMaxUrl: vp.PicMaxUrl,
- PicSmUrl: []string{ vp.PicSmUrl },
- IsAlarm: isAlarmInt,
- Sex: vp.Sex,
- AgeDescription: vp.AgeDescription,
- Race: vp.Race,
- TaskName: vp.TaskName,
- TaskId: vp.TaskId,
- VideoUrl: vp.VideoUrl,
- BaseInfo: bi,
- SdkName: "浜鸿劯",
- }
- resultList = append(resultList,vpE)
- }
- }
- return resultList
-}
-
-func parseMonitorLevel(level string) string {
- if level == "1" {
- return "涓�绾�"
- }
- if level == "2" {
- return "浜岀骇"
- }
- if level == "3" {
- return "涓夌骇"
- }
- return level
}
\ No newline at end of file
--
Gitblit v1.8.0