sunty
2019-07-31 28bf0226d1df3817bec0947d6d1ad11356dcd290
add endTime omitenpty
add taglist serverId filter
add baseInfo{persoNname phoneNum sex} to queryBody
3个文件已修改
128 ■■■■ 已修改文件
controllers/esSearch.go 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/taglist.go 61 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/dbtables.go 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/esSearch.go
@@ -33,37 +33,38 @@
    data := findEsData(searchBody)
    util.ResponseFormat(c, code.Success, data)
}
//获取监控等级
func getAlarmLevel(alarmlevel []interface{}) ([]string) {
func getAlarmLevel(alarmlevel []interface{}) []string {
    d := dbapi.DicApi{}
        res,data := d.FindByType("ALARMLEVEL")
        if data == nil {
                logger.Debug("data is nil")
        }
    res, data := d.FindByType("ALARMLEVEL")
    if data == nil {
        logger.Debug("data is nil")
    }
    logger.Debug(res)
        // logger.Debug(data)
    // logger.Debug(data)
    alarmLevel := make(map[int]string)
    tmp := data.(map[string]interface{})
        for _,value := range tmp["ALARMLEVEL"].([]interface{}) {
            // logger.Debug(value.(map[string]interface{})["value"],"        ",value.(map[string]interface{})["name"])
            val := value.(map[string]interface{})["value"].(string)
            name := value.(map[string]interface{})["name"].(string)
            vl,err := strconv.Atoi(val)
            if err != nil {
                logger.Debug(err)
            }
            alarmLevel[vl] = name
    for _, value := range tmp["ALARMLEVEL"].([]interface{}) {
        // logger.Debug(value.(map[string]interface{})["value"],"        ",value.(map[string]interface{})["name"])
        val := value.(map[string]interface{})["value"].(string)
        name := value.(map[string]interface{})["name"].(string)
        vl, err := strconv.Atoi(val)
        if err != nil {
            logger.Debug(err)
        }
    alarmLevelRes := make([]string,len(alarmlevel))
        for i,v := range  alarmlevel  {
            value := int(v.(float64))
            if value < 0 {
                alarmLevelRes[i] = "撤防"
            }else {
                alarmLevelRes[i] =  alarmLevel[value]
            }
        alarmLevel[vl] = name
    }
    alarmLevelRes := make([]string, len(alarmlevel))
    for i, v := range alarmlevel {
        value := int(v.(float64))
        if value < 0 {
            alarmLevelRes[i] = "撤防"
        } else {
            alarmLevelRes[i] = alarmLevel[value]
        }
    return alarmLevelRes
    }
    return alarmLevelRes
}
func findEsData(searchBody map[string]interface{}) map[string]interface{} {
@@ -80,7 +81,7 @@
    queryBody := searchBody["inputValue"].(string)
    //检索框
    if queryBody != "" {
        queryStr = "\"must\":[{\"multi_match\":{\"query\":\"" + queryBody + "\",\"fields\":[\"alarmRules.alarmLevel^1.5\",\"ageDescription^1.5\",\"taskName^1.5\",\"baseInfo.tableName^1.5\",\"sex^2.0\",\"race^2.0\",\"content^1.0\",\"baseInfo.idCard^1.8\",\"cameraAddr^1.0\"]," +
        queryStr = "\"must\":[{\"multi_match\":{\"query\":\"" + queryBody + "\",\"fields\":[\"baseInfo.sex\",\"baseInfo.phoneNum.raw^1.5\",\"baseInfo.personName.raw^1.5\",\"alarmRules.alarmLevel^1.5\",\"ageDescription^1.5\",\"taskName^1.5\",\"baseInfo.tableName^1.5\",\"sex^2.0\",\"race^2.0\",\"content^1.0\",\"baseInfo.idCard^1.8\",\"cameraAddr^1.0\"]," +
            "\"type\":\"cross_fields\",\"operator\":\"OR\",\"slop\":0,\"prefix_length\":0,\"max_expansions\":50,\"zero_terms_query\":\"NONE\",\"auto_generate_synonyms_phrase_query\":true,\"fuzzy_transpositions\":true,\"boost\":1}}],"
    }
    gteDate := searchBody["searchTime"].([]interface{})[0].(string)
@@ -116,13 +117,13 @@
        isCollectStr = "{\"term\":{\"isCollect\":\"" + isCollect + "\"}},"
    }
    //判断布防等级id
    alarmLevelId :=searchBody["alarmlevel"].([]interface{})
    alarmLevelId := searchBody["alarmlevel"].([]interface{})
    alarmLevelStr := ""
    if len(alarmLevelId) > 0 {
        alarmLevelTypes := strings.Replace(strings.Trim(fmt.Sprint(getAlarmLevel(alarmLevelId)), "[]"), " ", "\",\"", -1)
        alarmLevelStr = "{\"terms\":{\"alarmRules.alarmLevel\":[\"" + alarmLevelTypes + "\"]}},"
    }
    //使用es底层机制处理分页
    //请求头
    url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
controllers/taglist.go
@@ -1,6 +1,7 @@
package controllers
import (
    "basic.com/dbapi.git"
    "encoding/json"
    "fmt"
@@ -25,12 +26,11 @@
    url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
        "/" + config.EsInfo.EsIndex.DbTables.IndexName + "/_search"
    prama := "{\"query\":{\"bool\":{\"filter\":[]}},\"size\":10000,\"_source\":[\"tableName\",\"id\",\"isDelete\"]}"
    var setApi dbapi.SysSetApi
    _, sysconf := setApi.GetServerInfo()
    prama := "{\"query\":{\"bool\":{\"filter\":[{\"terms\":{\"analyServerId\":[\"\",\"" + sysconf.ServerId + "\"]}}]}},\"size\":1000}"
    tokenRes := esutil.GetEsDataReq(url, prama, true)
    sources := make([]map[string]interface{}, 0)
    fmt.Println(tokenRes["datalist"].([]interface{}))
    for _, value := range tokenRes["datalist"].([]interface{}) {
        tokenRes := make(map[string]interface{})
        key := value.(map[string]interface{})["id"].(string)
@@ -39,43 +39,42 @@
        tokenRes["value"] = value.(map[string]interface{})["id"].(string)
        status := int(value.(map[string]interface{})["isDelete"].(float64))
        tokenRes["status"] = status
        if status == 1  {
            if GetTotalFromDb(key) == false{
        if status == 1 {
            if GetTotalFromDb(key) == false {
                continue
            }
        }
        sources = append(sources, tokenRes)
    }
    util.ResponseFormat(c, code.Success, sources)
}
//判断底库是否有数据
func GetTotalFromDb(id string) (flag bool) {
    flag = false
    url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
        "/" + config.EsInfo.EsIndex.DbTables.IndexName + "/_search"
    prama := "{\"query\":{\"bool\":{\"filter\":[{\"term\":{\"baseInfo.tableId\":\""+id+"\"}}]}},\"size\":0}"
    prama := "{\"query\":{\"bool\":{\"filter\":[{\"term\":{\"baseInfo.tableId\":\"" + id + "\"}}]}},\"size\":0}"
    buf, err := esutil.EsReq("POST", url, []byte(prama))
            if err != nil {
                fmt.Println("http request info is err!")
                return
            }
            var info interface{}
            json.Unmarshal(buf, &info)
            out, ok := info.(map[string]interface{})
            if !ok {
                fmt.Println("http response interface can not change map[string]interface{}")
                return
            }
            middle, ok := out["hits"].(map[string]interface{})
            if !ok {
                fmt.Println("first hits change error!")
                return
            }
            total := int(middle["total"].(float64))
            fmt.Println(total)
            if total > 0 {
                flag=true
            }
            return flag
}
    if err != nil {
        fmt.Println("http request info is err!")
        return
    }
    var info interface{}
    json.Unmarshal(buf, &info)
    out, ok := info.(map[string]interface{})
    if !ok {
        fmt.Println("http response interface can not change map[string]interface{}")
        return
    }
    middle, ok := out["hits"].(map[string]interface{})
    if !ok {
        fmt.Println("first hits change error!")
        return
    }
    total := int(middle["total"].(float64))
    if total > 0 {
        flag = true
    }
    return flag
}
models/dbtables.go
@@ -2,12 +2,12 @@
type Dbtables struct {
    BaseEntity
    TableName     string `json:"tableName,omitempty" example:"底库123"`                         //表名
    TableDesc     string `json:"tableDesc,omitempty" example:"底库描述"`                          //描述
    TableType     string `json:"tableType,omitempty" example:"person,car"`                    //人员表"person
    BwType        string `json:"bwType,omitempty" example:"黑名单:1,白名单:0"`                      //黑名单:1,白名单:0
    StartTime     string `json:"startTime,omitempty" example:"2019-01-12 12:14:56"`           //有效期开始时间
    EndTime       string `json:"endTime" example:"2019-10-12 12:14:56"`             //有效期结束时间
    TableName     string `json:"tableName,omitempty" example:"底库123"`               //表名
    TableDesc     string `json:"tableDesc,omitempty" example:"底库描述"`                //描述
    TableType     string `json:"tableType,omitempty" example:"person,car"`          //人员表"person
    BwType        string `json:"bwType,omitempty" example:"黑名单:1,白名单:0"`            //黑名单:1,白名单:0
    StartTime     string `json:"startTime,omitempty" example:"2019-01-12 12:14:56"` //有效期开始时间
    EndTime       string `json:"endTime,omitempty" example:"2019-10-12 12:14:56"`   //有效期结束时间
    IsSync        string `json:"isSync,omitempty" example:"1:同步到管理平台,2:不同步"`
    AnalyServerId string `json:"analyServerId" example:"本地库所属的分析设备id,如果是同步库就不需要记录"` // 分析设备id(本地库所属的分析设备id,如果是同步库就不需要记录)
}