panlei
2019-07-09 777f3e442294132e15b15e49b3e95ba72695cc7c
补全比对规则
1个文件已修改
57 ■■■■ 已修改文件
ruleserver/ruleToformula.go 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruleserver/ruleToformula.go
@@ -233,19 +233,23 @@
    }
}
func Compare(args *SdkDatas, groupRule *protomsg.GroupRule) {
    compareFlag := false
    compareFlag := 0
    tableIds := ""
    // 看看是否有只配人脸比对算法但没有配对比库的规则,如果有,则比对对象为全部底库
    for j := 0; j < len(groupRule.Rules); j++ {
        if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" { // 配了人脸比对
            if groupRule.Rules[j].SdkArgAlias == "compareBase" { // 配了比对的底库
                compareFlag = true
            if groupRule.Rules[j].SdkArgAlias == "compareBase" && groupRule.Rules[j].SdkArgValue != "" { // 配了比对底库的参数但没有配全部底库
                compareFlag = 2
                tableIds = groupRule.Rules[j].SdkArgValue + "," // 最后会多一个tableId,切出来的数组取len-1就可以
            }
            if groupRule.Rules[j].SdkArgAlias == "compareBase" && groupRule.Rules[j].SdkArgValue == "" { // 配的参数是比对全部底库
                compareFlag = 1
            }
        }
    }
    if compareFlag {
        logger.Info("配置了对比底库参数")
    } else {
    if compareFlag == 0 {
        logger.Info("没有配置对比底库参数")
        return
    }
    for j := 0; j < len(groupRule.Rules); j++ {
        // 只有是人脸对比并且配置的参数是对比底库才走(若配的对比阈值则不走)
@@ -256,17 +260,36 @@
                        // 拿区域中每个人脸特征值去对比,填充其liker
                        if groupRule.Rules[j].PolygonId == areaMap.areaId {
                            for _, arg := range areaMap.args {
                                bytes := bigCache.Getdbpersonmsg("", arg.Feature, true)
                                var m map[string]float32
                                err1 := json.Unmarshal(bytes, &m)
                                if err1 != nil {
                                    logger.Error("getBaseInfo解压错误", err1)
                                if compareFlag == 1 {
                                    bytes := bigCache.Getdbpersonmsg("", arg.Feature, true)
                                    var m map[string]float32
                                    err1 := json.Unmarshal(bytes, &m)
                                    if err1 != nil {
                                        logger.Error("getBaseInfo解压错误", err1)
                                    }
                                    for key, val := range m {
                                        fmt.Println(key)
                                        baseinfo := protomsg.Baseinfo{}
                                        baseinfo.CompareScore = val
                                        arg.Liker = append(arg.Liker, &baseinfo)
                                    }
                                }
                                for key, val := range m {
                                    fmt.Println(key)
                                    baseinfo := protomsg.Baseinfo{}
                                    baseinfo.CompareScore = val
                                    arg.Liker = append(arg.Liker, &baseinfo)
                                if compareFlag == 2 {
                                    array := strings.Split(tableIds, ",")
                                    for i := 0; i < len(array)-1; i++ {
                                        bytes := bigCache.Getdbpersonmsg(array[i], arg.Feature, true)
                                        var m map[string]float32
                                        err1 := json.Unmarshal(bytes, &m)
                                        if err1 != nil {
                                            logger.Error("getBaseInfo解压错误", err1)
                                        }
                                        for key, val := range m {
                                            fmt.Println(key)
                                            baseinfo := protomsg.Baseinfo{}
                                            baseinfo.CompareScore = val
                                            arg.Liker = append(arg.Liker, &baseinfo)
                                        }
                                    }
                                }
                                logger.Info("-------------------成功给liker赋值:", arg.Liker)
                            }
@@ -299,7 +322,7 @@
            sdkName := sdk.SdkName
            if ipcId == sdkData.IpcId {
                logger.Info("当前走的规则的算法是--:",sdkName,"---")
                logger.Info("当前走的规则的算法是--:", sdkName, "---")
                for _, areaMap := range sdkData.AreaMapList {
                    ruleResult := filterRule(groupRule.Rules[j], &areaMap)
                    if ruleResult.Result != "" {