liuxiaolong
2019-08-21 d96f024e19c72065f248df0508911f487b72505b
compare proc devide 2,es and db
4个文件已修改
103 ■■■■ 已修改文件
config/dev.yaml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/fileController.go 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
extend/config/config.go 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/FaceCompareService.go 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
config/dev.yaml
@@ -6,9 +6,11 @@
    imageUrl: http://192.168.1.203:6080
    publicDomain: http://bsic.asuscomm.com
    networkAdapter: enp8s0
compare:
dbpersoncompare:
    url: 127.0.0.1:40010
espersoncompare:
    url:
     - 127.0.0.1:40010
     - 127.0.0.1:40011
weedfs:
    ip: 192.168.1.203
    uploadport: 6333
controllers/fileController.go
@@ -368,11 +368,12 @@
        CompareThreshold: searchBody.Threshold,
    }
    var hasCompEsPerson = false
    if searchBody.DataBases !=nil {
        for idx,tableId :=range searchBody.DataBases {
            if tableId == "esData" {
                searchBody.DataBases = append(searchBody.DataBases[:idx], searchBody.DataBases[idx+1:]...)
                searchBody.DataBases = append(searchBody.DataBases,service.CaptureTable)
                hasCompEsPerson = true
                break
            }
        }
@@ -395,22 +396,38 @@
    timeStart := time.Now()
    compareService := service.NewFaceCompareService(arg)
    compareOnce := compareService.Compare()
    totalData := compareOnce.CompareData
    var totalData service.CompareList
    if len(arg.TableIds) >0 {//有比对底库
        dbPersonTargets := compareService.CompareDbPersons()
        if dbPersonTargets !=nil {
            totalData = append(totalData,*dbPersonTargets...)
        }
    }
    if hasCompEsPerson {//有比对Es抓拍
        esPersons := compareService.CompareVideoPersons()
        if esPersons !=nil {
            totalData = append(totalData, *esPersons...)
        }
    }
    logger.Debug("comp 比对结束,用时:",time.Since(timeStart))
    service.SetCompResultByNum(&service.CompareOnce{
        CompareNum: compareService.CompareNum,
        CompareData: &totalData,
    })
    m := make(map[string]interface{},3)
    if totalData != nil && totalData.Len() > 0{
        sort.Sort(totalData)
        total := totalData.Len()
        m["compareNum"] = compareOnce.CompareNum
        m["compareNum"] = compareService.CompareNum
        m["total"] = total
        var sCompResult protomsg.SdkCompareResult
        if total <= searchBody.Size {
            sCompResult.CompareResult = *totalData
            sCompResult.CompareResult = totalData
        } else {
            sCompResult.CompareResult = (*totalData)[0:searchBody.Size]
            sCompResult.CompareResult = totalData[0:searchBody.Size]
        }
        resultList := FillDataToCompareResult(&sCompResult)
        m["totalList"] = resultList
@@ -418,7 +435,7 @@
    } else {
        m["total"] = 0
        m["compareNum"] = searchBody.CompareNum
        m["compareNum"] = compareService.CompareNum
        m["totalList"] = []CompareResult{}
    }
    util.ResponseFormat(c,code.Success,m)
extend/config/config.go
@@ -64,11 +64,17 @@
var DBconf = &database{}
type CompareServer struct {
type dbpersoncompare struct {
    Url string `mapstructure:"url"`
}
type espersoncompare struct {
    Url []string `mapstructure:"url"`
}
var CompServerInfo = &CompareServer{}
var DbPersonCompInfo = &dbpersoncompare{}
var EsCompServerInfo = &espersoncompare{}
// Init is an exported method that takes the environment starts the viper
@@ -88,5 +94,6 @@
    viper.UnmarshalKey("redis", RedisConf)
    viper.UnmarshalKey("database", DBconf)
    viper.UnmarshalKey("weedfs", WeedFs)
    viper.UnmarshalKey("compare", CompServerInfo)
    viper.UnmarshalKey("dbpersoncompare",DbPersonCompInfo)
    viper.UnmarshalKey("espersoncompare", EsCompServerInfo)
}
service/FaceCompareService.go
@@ -63,21 +63,22 @@
var CaptureTable = "capturetable" // 抓拍库
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.向各个compare进程发起请求拿到比对结果
    esCompServerList := config.EsCompServerInfo.Url
    logger.Debug("compServerList:", esCompServerList)
    //1.向各个Es compare进程发起请求拿到比对结果
    var resultList CompareList
    //resultList :=make([]*protomsg.SdkCompareEach,0)
    for _,str :=range compServerList{
    for _,str :=range esCompServerList{
        reqUrl := "tcp://"+str
        resultB := doCompareRequest(reqUrl,b)
        if resultB == nil || len(*resultB) ==0 {
            continue
        }
        var sdkCompResult protomsg.SdkCompareResult
        //rList :=make([]protomsg.Esinfo,0)
        err = proto.Unmarshal(*resultB, &sdkCompResult)
        if err !=nil {
            logger.Debug("comp sdkCompareResult unmarshal err:", err)
@@ -87,19 +88,41 @@
        logger.Debug("comp len(rList):", len(sdkCompResult.CompareResult))
        if len(sdkCompResult.CompareResult) >0 {
            resultList = append(resultList, sdkCompResult.CompareResult...)
            //resultList = append(resultList, FillDataToCompareResult(&sdkCompResult)...)
        }
    }
    logger.Debug("comp totalList.len:", len(resultList))
    //2.缓存比对结果
    co := &CompareOnce{
        CompareNum: sv.CompareNum,
        CompareData: &resultList,
    }
    SetCompResultByNum(co)
    return &resultList
}
    return co
//比对底库
func (sv *FaceCompareService) CompareDbPersons() *CompareList{
    b, err := proto.Marshal(&sv.CompareArgs)
    dbPersonCompServerUrl := config.DbPersonCompInfo.Url
    logger.Debug("comp Server url:", dbPersonCompServerUrl)
    var resultList CompareList
    reqUrl := "tcp://"+dbPersonCompServerUrl
    resultB := doCompareRequest(reqUrl,b)
    if resultB == nil || len(*resultB) ==0 {
        return nil
    }
    var sdkCompResult protomsg.SdkCompareResult
    err = proto.Unmarshal(*resultB, &sdkCompResult)
    if err !=nil {
        logger.Debug("comp sdkCompareResult unmarshal err:", err)
        return nil
    }
    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{