sunty
2019-06-25 f3863b12653fc47996073710b56e792de0be4c8d
controllers/es.go
@@ -4,15 +4,15 @@
   "encoding/json"
   "fmt"
   "github.com/gin-gonic/gin"
   "math/rand"
   "strconv"
   "strings"
   "webserver/extend/code"
   "webserver/extend/config"
   "webserver/extend/esutil"
   "webserver/extend/util"
   "webserver/models"
   "webserver/service"
   "math/rand"
   "strconv"
   "strings"
)
type EsController struct{}
@@ -31,15 +31,24 @@
   c.BindJSON(&searchBody)
   isEsSource := true
   databases := searchBody.DataBases
   page := searchBody.Page;if page <= 0 {page = 1}
   size := searchBody.Size;if size <= 0 {size = 8}
   page := searchBody.Page
   if page <= 0 {
      page = 1
   }
   size := searchBody.Size
   if size <= 0 {
      size = 8
   }
   from := (page - 1) * size
   to := page * size
   threshold := searchBody.Threshold;if threshold < 0 || threshold > 100 {threshold = 60}
   threshold := searchBody.Threshold
   if threshold < 0 || threshold > 100 {
      threshold = 60
   }
   picUrl := searchBody.PicUrl
   /*feature := searchBody.Feature*/
   var featByte []byte;
 if len(picUrl) > 3 { //   linux
   var featByte []byte
   if len(picUrl) > 3 { //   linux
      /*fileName := picUrl   // picIp 定义在 fileController weedfs 文件服务器 访问 路径 前缀
      detect := gorun.GetSimpleFaceDetect(fileName)
      if len(detect) != 1 {
@@ -76,25 +85,30 @@
   if to > dataLen {
      to = dataLen
   }
   sources = sources[from:to]   // 数据 部分获取
   if !isEsSource {  //  人员数据要加底库名称
   sources = sources[from:to] // 数据 部分获取
   if !isEsSource {           //  人员数据要加底库名称
      for _, sou := range sources {
         tableId := sou.(map[string]interface{})["tableId"]
         if tableId != nil {
            info := QueryDbTableInfo(tableId.(string))
            if info["tableName"] != nil {sou.(map[string]interface{})["tableName"] = info["tableName"]
            }else {sou.(map[string]interface{})["tableName"] = "其他"}
            if info["bwType"] != nil {sou.(map[string]interface{})["bwType"] = info["bwType"]
            }else {sou.(map[string]interface{})["bwType"] = "4"}
            if info["tableName"] != nil {
               sou.(map[string]interface{})["tableName"] = info["tableName"]
            } else {
               sou.(map[string]interface{})["tableName"] = "其他"
            }
            if info["bwType"] != nil {
               sou.(map[string]interface{})["bwType"] = info["bwType"]
            } else {
               sou.(map[string]interface{})["bwType"] = "4"
            }
         }
      }
   }
   dmap := make(map[string]interface{},2)
   dmap := make(map[string]interface{}, 2)
   dmap["datalist"] = sources
   dmap["total"] = dataLen
   util.ResponseFormat(c, code.Success, dmap)
}
// @Summary 查询摄像机以及启算法
// @Description 关联查询摄像机以及启算法
@@ -111,51 +125,52 @@
      util.ResponseFormat(c, code.ComError, "没有记录")
      return
   }
   camList := make([]map[string]interface{},0,5)
   camList := make([]map[string]interface{}, 0, 5)
   for _, cam := range rows {
      newCam := make(map[string]interface{})
      newCam["cameraid"] = cam.Id
      newCam["rtspUrl"] = cam.Rtsp
      tasks := cam.CamTask
         taskList := make([]map[string]interface{},0)
      taskList := make([]map[string]interface{}, 0)
      if tasks != nil {
          taskmap:= make(map[string]interface{})
         for _,task := range tasks {
         taskmap := make(map[string]interface{})
         for _, task := range tasks {
            taskId := taskmap[task.Taskid]
            if taskId != nil {
               cameraTasks := taskmap[task.Taskid].([]models.CameraTask)
               cameraTasks = append(cameraTasks,task)
               cameraTasks = append(cameraTasks, task)
               taskmap[task.Taskid] = cameraTasks
            }else {
               cameraTasks := make([]models.CameraTask,0)
               taskmap[task.Taskid] = append(cameraTasks,task)
            } else {
               cameraTasks := make([]models.CameraTask, 0)
               taskmap[task.Taskid] = append(cameraTasks, task)
            }
         }
         for key, value := range taskmap {
            i := make(map[string]interface{})
            i["taskid"] = key
            i["sdklist"] = value
            taskList = append(taskList,i)
            taskList = append(taskList, i)
         }
      }
      newCam["tasklist"] = taskList
      camList = append(camList,newCam)
      camList = append(camList, newCam)
   }
   c.JSON(200,camList)
   c.JSON(200, camList)
}
func searchEsData(searchBody models.EsSearch) map[string]interface{} {
   //请求索引
   index := config.EsInfo.EsIndex.VideoPersons.IndexName  //  wp只查人脸数据
   queryStr := "";
   index := config.EsInfo.EsIndex.VideoPersons.IndexName //  wp只查人脸数据
   queryStr := ""
   queryBody := searchBody.InputValue
   //检索框
   if queryBody != "" {
      queryStr = "\"must\":[{\"multi_match\":{\"query\":\"" + queryBody + "\",\"fields\":[\"tableName^1.5\",\"gender^2.0\",\"race^2.0\",\"content^1.0\",\"idcard^1.8\",\"picAddress^1.0\"]," +
      queryStr = "\"must\":[{\"multi_match\":{\"query\":\"" + queryBody + "\",\"fields\":[\"tableName^1.5\",\"sex^2.0\",\"race^2.0\",\"content^1.0\",\"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[0];lteDate := searchBody.SearchTime[1]
   gteDate := searchBody.SearchTime[0]
   lteDate := searchBody.SearchTime[1]
   //判断任务ID
   taskIdStr := ""
   taskId := searchBody.Tasks
@@ -164,11 +179,11 @@
      taskIdStr = "{\"terms\":{\"taskId\":[\"" + esTaskId + "\"]}},"
   }
   //判断摄像机ID
   videoReqNumStr := ""
   videoReqNum := searchBody.TreeNodes
   if videoReqNum != nil && len(videoReqNum) > 0 {
      esVideoReqNum := strings.Replace(strings.Trim(fmt.Sprint(videoReqNum), "[]"), " ", "\",\"", -1)
      videoReqNumStr = "{\"terms\":{\"videoReqNum\":[\"" + esVideoReqNum + "\"]}},"
   cameraIdStr := ""
   cameraId := searchBody.TreeNodes
   if cameraId != nil && len(cameraId) > 0 {
      esCameraId := strings.Replace(strings.Trim(fmt.Sprint(cameraId), "[]"), " ", "\",\"", -1)
      cameraIdStr = "{\"terms\":{\"cameraId\":[\"" + esCameraId + "\"]}},"
   }
   //判断库表ID
   tableId := searchBody.Tabs
@@ -178,10 +193,10 @@
      esTableId = strings.Replace(strings.Trim(fmt.Sprint(tableId), "[]"), " ", "\",\"", -1)
      esTableIdStr = "{\"terms\":{\"tableId\":[\"" + esTableId + "\"]}},"
   }
   collectionStr := ""
   collection := searchBody.Collection
   if collection != "" {
      collectionStr = "{\"term\":{\"collection\":\"" + collection + "\"}},"
   isCollectionStr := ""
   isCollection := searchBody.Collection
   if isCollection != "" {
      isCollectionStr = "{\"term\":{\"collection\":\"" + isCollection + "\"}},"
   }
   webPage := searchBody.Page
   webSize := searchBody.Size
@@ -194,22 +209,21 @@
      "/" + index + "/_search?search_type=dfs_query_then_fetch"
   //请求体
   prama := "{\"from\":\"" + esFrom + "\",\"size\":\"" + esSize + "\"," +
//   prama := "{\"size\":\"0\"," +
      //   prama := "{\"size\":\"0\"," +
      "\"query\":{\"bool\":{" + queryStr +
      "\"filter\":[" +
      videoReqNumStr +
      cameraIdStr +
      taskIdStr +
      collectionStr +
      isCollectionStr +
      esTableIdStr +
      "{\"range\":{\"picDate\":{\"from\":\"" + gteDate + "\",\"to\":\"" + lteDate + "\",\"include_lower\":true,\"include_upper\":true,\"boost\":1}}}]}}," +
      "\"sort\":[{\"_score\":{\"order\":\"desc\"}},{\"picDate\":{\"order\":\"desc\"}}]," +
      "\"_source\":[\"tableName\",\"gender\",\"race\",\"content\",\"IDCard\",\"picAddress\",\"picDate\",\"sdkType\",\"age\",\"personId\",\"personIsHub\",\"personPicUrl\",\"picLocalUrl\",\"picSmUrl\",\"videoIp\",\"videoNum\",\"videoReqNum\",\"baseInfo\"]}";
      "\"_source\":[\"baseInfo\",\"alarmRules\",\"sex\",\"analyServerName\",\"sdkName\",\"ageDescription\",\"content\",\"id\",\"cameraAddr\",\"picMaxUrl\",\"picDate\",\"race\",\"videoUrl\",\"picSmUrl\",\"taskName\",\"personIsHub\",\"isAlarm\",\"analyServerIp\",\"cameraId\"]}"
   fmt.Println(prama)
   //数据解析
   tokenRes := esutil.GetEsDataReq(url, prama, true)
   return tokenRes
}
func sourceCompare(sources []interface{}, isEsSource bool, campareByte []byte, threshold float32) []interface{} {
   var filterName = "feature"