liuxiaolong
2019-11-20 ec3cdd20b8221caa6093d0a44984ee3098504b52
update protomsg and use aiocean index
5个文件已修改
186 ■■■■■ 已修改文件
controllers/dbtableperson.go 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/fileController.go 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
go.mod 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
go.sum 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/dbtablepersons.go 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/dbtableperson.go
@@ -4,13 +4,12 @@
    "basic.com/dbapi.git"
    "basic.com/fileServer/WeedFSClient.git"
    "basic.com/pubsub/protomsg.git"
    "basic.com/valib/logger.git"
    "encoding/base64"
    "encoding/json"
    "io/ioutil"
    "sort"
    "strconv"
    "time"
    "basic.com/valib/logger.git"
    "webserver/cache"
    "webserver/service"
@@ -18,7 +17,6 @@
    "github.com/satori/go.uuid"
    "webserver/extend/code"
    "webserver/extend/config"
    "webserver/extend/esutil"
    "webserver/extend/util"
    "webserver/models"
@@ -197,7 +195,7 @@
    for idx,v :=range compResult.CompareResult{
        dbPersonM[v.Id] = ScoreIndex{
            Index: idx,
            CompareScore: v.CompareScore,
            CompareScore: float64(v.CompareScore),
        }
        personIds = append(personIds,v.Id)
    }
@@ -230,7 +228,7 @@
            dbP.CreateTime = p.CreateTime
            dbP.UpdateTime = p.UpdateTime
            dbP.CreateBy = p.CreateBy
            dbP.CompareScore = util.ParseScore(dbPersonM[p.Id].CompareScore)
            dbP.CompareScore = dbPersonM[p.Id].CompareScore
            //dbTableInfos, _ := dtApi.DbtablesById([]string{ p.TableId })
            //if dbTableInfos !=nil{
            //    dbP.BwType = dbTableInfos[0].BwType
@@ -323,51 +321,6 @@
    //} else {
    //    util.ResponseFormat(c,code.UpdateFail,"更新人脸失败")
    //}
}
func UpdateDbPersonsOfDbTable(id string) (message string) {
    localConf, err2 := cache.GetServerInfo()
    if err2 !=nil || localConf.AlarmIp == "" || localConf.ServerId == "" {
        logger.Debug("localConfig is wrong!!!")
        return "修改失败"
    }
    url := "http://" + localConf.AlarmIp + ":" + strconv.Itoa(int(localConf.AlarmPort)) +
        "/" + config.EsInfo.EsIndex.Dbtablepersons.IndexName + "/_update_by_query?refresh"
    jsonDSL := `
            {
    "script": {
        "lang": "painless",
        "inline": "ctx._source.enable = 0"
    },
    "query": {
        "term": {
            "tableId": "` + id + `"
        }
    }
}
`
    buf, err := esutil.EsReq("POST", url, []byte(jsonDSL))
    if err != nil {
        logger.Debug("http request info is err!")
        message = "修改失败"
    }
    var info interface{}
    json.Unmarshal(buf, &info)
    out, ok := info.(map[string]interface{})
    if !ok {
        logger.Debug("http response interface can not change map[string]interface{}")
        message = "修改失败"
    }
    middle, ok := out["updated"].(float64)
    if !ok {
        logger.Debug("first result change error!")
        message = "修改失败"
    }
    if middle >= 0 {
        logger.Debug("修改成功")
        message = "修改成功,更新状态条数为" + strconv.Itoa(int(middle))
    }
    return message
}
// @Security ApiKeyAuth
@@ -520,14 +473,14 @@
        util.ResponseFormat(c,code.ComError,"报警设置有误")
        return
    }
    videopersons, e := esApi.Videopersonsinfosbyid([]string{reqBody.CaptureId}, config.EsInfo.EsIndex.VideoPersons.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)))
    if e ==nil && videopersons !=nil && len(videopersons) == 1{
    aiOceans, e := esApi.AIOceaninfosbyid([]string{reqBody.CaptureId}, config.EsInfo.EsIndex.AiOcean.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)))
    if e ==nil && aiOceans !=nil && len(aiOceans) == 1{
        var personPicUrl = ""//人脸图片
        var feature = ""//特征
        if videopersons[0].PicSmUrl !=nil && len(videopersons[0].PicSmUrl) >0 {
            personPicUrl = videopersons[0].PicSmUrl[0]
        if aiOceans[0].TargetInfo !=nil && len(aiOceans[0].TargetInfo) >0 {
            personPicUrl = aiOceans[0].TargetInfo[0].PicSmUrl
        }
        fea, e2 := esApi.GetVideoPersonFaceFeatureById(reqBody.CaptureId, config.EsInfo.EsIndex.VideoPersons.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)))
        fea, e2 := esApi.GetVideoPersonFaceFeatureById(reqBody.CaptureId, config.EsInfo.EsIndex.AiOcean.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)))
        if e2 == nil && fea !="" {
            feature = fea
        }
controllers/fileController.go
@@ -183,17 +183,16 @@
type CompareResult struct {
    Id string `json:"id"`
    CompareScore float32 `json:"compareScore"`
    CompareScore float64 `json:"compareScore"`
    CameraId string `json:"cameraId"`
    CameraName string `json:"cameraName"`
    CameraAddr string `json:"cameraAddr"`
    PicDate string `json:"picDate"`
    Content string `json:"content"`
    IsAlarm int `json:"isAlarm"`
    IsAlarm bool `json:"isAlarm"`
    PicMaxUrl string `json:"picMaxUrl"`
    PicSmUrl []string `json:"picSmUrl"`
    Sex string `json:"sex"`
    AgeDescription string `json:"ageDescription"`
    Race string `json:"race"`
    TargetInfo []TargetInfo `json:"targetInfo"`
    TaskId string `json:"taskId"`
    TaskName string `json:"taskName"`
    BaseInfo []DbPersonVo `json:"baseInfo"`
@@ -201,23 +200,35 @@
    SdkName string `json:"sdkName"`
    AlarmRules []AlarmRuleVo `json:"alarmRules"`
}
type TargetInfo struct {
    TargetId       string `json:"targetId"`
    TargetScore    float64 `json:"targetScore"`
    Feature        string `json:"feature"`
    PicSmUrl       string `json:"picSmUrl"`
    TargetLocation TargetLocation `json:"targetLocation"`
}
type TargetLocation struct {
    TopLeft     protomsg.Location `json:"topLeft"`
    BottomRight protomsg.Location `json:"bottomRight"`
}
type DbPersonVo struct {
    BwType string `json:"bwType"`
    CompareScore float32 `json:"compareScore"`
    IdCard string `json:"idCard"`
    CompareScore float64 `json:"compareScore"`
    MonitorLevel string `json:"monitorLevel"`
    PersonId string `json:"personId"`
    PersonName string `json:"personName"`
    PersonPicUrl string `json:"personPicUrl"`
    PhoneNum string `json:"phoneNum"`
    Sex string `json:"sex"`
    TargetId string `json:"targetId"`
    TargetName string `json:"targetName"`
    TargetPicUrl string `json:"targetPicUrl"`
    Labels string `json:"labels"`
    TableId string `json:"tableId"`
    TableName string `json:"tableName"`
    Enable int32 `json:"enable"`
}
type ScoreIndex struct {
    CompareScore float32
    CompareScore float64
    Index int
}
@@ -242,13 +253,13 @@
        if v.Tableid == service.CaptureTable {
            captureM[v.Id] = ScoreIndex{
                Index: idx,
                CompareScore: v.CompareScore,
                CompareScore: float64(v.CompareScore),
            }
            captureIds = append(captureIds,v.Id)
        } else {
            dbPersonM[v.Id] = ScoreIndex{
                Index: idx,
                CompareScore: v.CompareScore,
                CompareScore: float64(v.CompareScore),
            }
            personIds = append(personIds,v.Id)
        }
@@ -266,14 +277,12 @@
        var dtApi dbapi.DbTableApi
        for _,p :=range dbpersons {
            var dbP = DbPersonVo {
                PersonId: p.Id,
                IdCard: p.IdCard,
                CompareScore: util.ParseScore(dbPersonM[p.Id].CompareScore),
                TargetId: p.Id,
                CompareScore: dbPersonM[p.Id].CompareScore,
                MonitorLevel: p.MonitorLevel,
                PersonName: p.PersonName,
                PersonPicUrl: p.PersonPicUrl,
                PhoneNum: p.PhoneNum,
                Sex: p.Sex,
                TargetName: p.PersonName,
                TargetPicUrl: p.PersonPicUrl,
                Labels: p.Sex+" / "+p.IdCard+" / "+p.IdCard,
                TableId: p.TableId,
                Enable: p.Enable,
            }
@@ -295,21 +304,18 @@
            return nil
        }
        logger.Debug("captureIds:",strings.Join(captureIds,","))
        videopersons, _ := esApi.Videopersonsinfosbyid(captureIds, config.EsInfo.EsIndex.VideoPersons.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)))
        logger.Debug("comp videoPersons.len:",len(videopersons))
        for _,vp :=range videopersons {
            isAlarmInt, _ := strconv.Atoi(vp.IsAlarm)
        aiTargets, _ := esApi.AIOceaninfosbyid(captureIds, config.EsInfo.EsIndex.AiOcean.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)))
        logger.Debug("comp aiTargets.len:",len(aiTargets))
        for _,vp :=range aiTargets {
            var bi []DbPersonVo
            for _,p :=range vp.BaseInfo {
                bi = append(bi, DbPersonVo{
                    PersonId: p.PersonId,
                    IdCard: p.IdCard,
                    CompareScore: util.ParseScore(p.CompareScore),
                    TargetId: p.TargetId,
                    CompareScore: float64(p.CompareScore),
                    MonitorLevel: parseMonitorLevel(p.MonitorLevel),
                    PersonName: p.PersonName,
                    PersonPicUrl: p.PersonPicUrl,
                    PhoneNum: p.PhoneNum,
                    Sex: p.Sex,
                    TargetName: p.TargetName,
                    TargetPicUrl: p.TargetPicUrl,
                    Labels: p.Labels,
                    TableId: p.TableId,
                    BwType: p.BwType,
                    TableName: p.TableName,
@@ -328,18 +334,39 @@
                    })
                }
            }
            var ti = make([]TargetInfo,0)
            if vp.TargetInfo !=nil {
                for _,vti :=range ti {
                    tl := protomsg.Location{
                        X: vti.TargetLocation.TopLeft.X,
                        Y: vti.TargetLocation.TopLeft.Y,
                    }
                    br := protomsg.Location{
                        X: vti.TargetLocation.BottomRight.X,
                        Y: vti.TargetLocation.BottomRight.Y,
                    }
                    tInfo := TargetInfo{
                        TargetId: vti.TargetId,
                        TargetScore: vti.TargetScore,
                        Feature: vti.Feature,
                        PicSmUrl: vti.PicSmUrl,
                        TargetLocation: TargetLocation{
                            TopLeft:tl,
                            BottomRight:br,
                        },
                    }
                    ti = append(ti, tInfo)
                }
            }
            vpE := CompareResult{
                Id: vp.Id,
                CompareScore: util.ParseScore(captureM[vp.Id].CompareScore),
                CompareScore: captureM[vp.Id].CompareScore,
                CameraId: vp.CameraId,
                CameraAddr: vp.CameraAddr,
                PicDate: vp.PicDate,
                PicMaxUrl: vp.PicMaxUrl,
                PicSmUrl: vp.PicSmUrl,
                IsAlarm: isAlarmInt,
                Sex: vp.Sex,
                AgeDescription: vp.AgeDescription,
                Race: vp.Race,
                TargetInfo: ti,
                IsAlarm: vp.IsAlarm,
                TaskName: vp.TaskName,
                TaskId: vp.TaskId,
                VideoUrl: vp.VideoUrl,
@@ -443,7 +470,7 @@
                return
            }
        } else {
            searchBase64Fea, err := esApi.GetVideoPersonFaceFeatureById(searchBody.CompTargetId, config.EsInfo.EsIndex.VideoPersons.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)))
            searchBase64Fea, err := esApi.GetVideoPersonFaceFeatureById(searchBody.CompTargetId, config.EsInfo.EsIndex.AiOcean.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)))
            if err !=nil {
                util.ResponseFormat(c, code.ComError, "抓拍数据不存在,请检查")
                return
@@ -590,7 +617,7 @@
            arg.Collection = searchBody.Collection
            arg.AnalyServerId = localConf.ServerId
            alarmLevelTypes := strings.Replace(strings.Trim(fmt.Sprint(getAlarmLevel(searchBody.AlarmLevel)), "[]"), " ", "\",\"", -1)
            captureIds := esApi.GetAllLocalVideopersonsId(arg, config.EsInfo.EsIndex.VideoPersons.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)), alarmLevelTypes)
            captureIds := esApi.GetAllLocalVideopersonsId(arg, config.EsInfo.EsIndex.AiOcean.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)), alarmLevelTypes)
            logger.Debug("searchPhoto first Result.len:",len(*co.CompareData),"twice len(captureIds):",len(captureIds))
            if captureIds !=nil {
                var aResult protomsg.SdkCompareResult
go.mod
@@ -7,8 +7,8 @@
    basic.com/fileServer/WeedFSClient.git v0.0.0-20190919054037-0182b6c3f5cb // indirect
    basic.com/gb28181api.git v0.0.0-20191028082253-472438a8407b // indirect
    basic.com/pubsub/cache.git v0.0.0-20190718093725-6a413e1d7d48 // indirect
    basic.com/pubsub/esutil.git v0.0.0-20191031110806-0712822ce390 // indirect
    basic.com/pubsub/protomsg.git v0.0.0-20191031110456-1a84b09fbcd1 // indirect
    basic.com/pubsub/esutil.git v0.0.0-20191119123930-df4e05af6aee // indirect
    basic.com/pubsub/protomsg.git v0.0.0-20191120023735-365e964f300d // indirect
    basic.com/valib/capture.git v0.0.0-20190924061718-7e98d8c98b3c // indirect
    basic.com/valib/deliver.git v0.0.0-20190531095353-25d8c3b20051
    basic.com/valib/goffmpeg.git v0.0.0-20191024085028-080acae08ec8 // indirect
go.sum
@@ -6,10 +6,10 @@
basic.com/gb28181api.git v0.0.0-20191028082253-472438a8407b/go.mod h1:iKnzuRRqUEgt17894pX3oYcOG2fLYFVcXiZbPoMK7+4=
basic.com/pubsub/cache.git v0.0.0-20190718093725-6a413e1d7d48 h1:BBA30Rgljn6MRieC4gUncETJDyna3ObyubTo9HEQ2M0=
basic.com/pubsub/cache.git v0.0.0-20190718093725-6a413e1d7d48/go.mod h1:gHLJZz2ee1cGL0X0ae69fs56bAxkDgEQwDhhXZJNUcY=
basic.com/pubsub/esutil.git v0.0.0-20191031110806-0712822ce390 h1:uM/D7VJ41pg1XXpoe73QqCCnQTE08VhXQ2JAAOnN6ao=
basic.com/pubsub/esutil.git v0.0.0-20191031110806-0712822ce390/go.mod h1:yIvppFPFGC61DOdm71ujnsxZBMFUu2yKjr5O43bMWCw=
basic.com/pubsub/protomsg.git v0.0.0-20191031110456-1a84b09fbcd1 h1:w/hlV2znPkwQxusqH8IIeg8+O3DPkCbRhsVKi6GdckU=
basic.com/pubsub/protomsg.git v0.0.0-20191031110456-1a84b09fbcd1/go.mod h1:un5NV5VWQoblVLZfx1Rt5vyLgwR0jI92d3VJhfrJhWU=
basic.com/pubsub/esutil.git v0.0.0-20191119123930-df4e05af6aee h1:QJQ2Hvu310iz39WZEkFiJ1SUg8XXZZ2b4goncos++0s=
basic.com/pubsub/esutil.git v0.0.0-20191119123930-df4e05af6aee/go.mod h1:yIvppFPFGC61DOdm71ujnsxZBMFUu2yKjr5O43bMWCw=
basic.com/pubsub/protomsg.git v0.0.0-20191120023735-365e964f300d h1:p4HNkf4NYFiAmeOprQYwn6ZIVE60/P2gueelasBUgVQ=
basic.com/pubsub/protomsg.git v0.0.0-20191120023735-365e964f300d/go.mod h1:un5NV5VWQoblVLZfx1Rt5vyLgwR0jI92d3VJhfrJhWU=
basic.com/valib/capture.git v0.0.0-20190924061718-7e98d8c98b3c h1:aNujtcGxq0cNLSK08cCamAiUYiQ2/ZsUMNXbX2w8Clc=
basic.com/valib/capture.git v0.0.0-20190924061718-7e98d8c98b3c/go.mod h1:y+h7VUnoSQ3jOtf2K3twXNA8fYDfyUsifSswcyKLgNw=
basic.com/valib/deliver.git v0.0.0-20190531095353-25d8c3b20051/go.mod h1:bkYiTUGzckyNOjAgn9rB/DOjFzwoSHJlruuWQ6hu6IY=
models/dbtablepersons.go
@@ -19,5 +19,5 @@
type DbPersonsCompVo struct {
    Dbtablepersons
    CompareScore float32 `json:"compareScore"`
    CompareScore float64 `json:"compareScore"`
}