From f88a44f58396fb36a979cfe5640a36d6ac2d7289 Mon Sep 17 00:00:00 2001
From: liuxiaolong <736321739@qq.com>
Date: 星期四, 25 七月 2019 14:50:56 +0800
Subject: [PATCH] add discovery

---
 controllers/esSearch.go |   91 +++++++++++++++++++++++++++++++++++++--------
 1 files changed, 75 insertions(+), 16 deletions(-)

diff --git a/controllers/esSearch.go b/controllers/esSearch.go
index d4dca24..971857d 100644
--- a/controllers/esSearch.go
+++ b/controllers/esSearch.go
@@ -1,6 +1,7 @@
 package controllers
 
 import (
+	"basic.com/dbapi.git"
 	"fmt"
 	"strconv"
 	"strings"
@@ -31,6 +32,34 @@
 	data := findEsData(searchBody)
 	util.ResponseFormat(c, code.Success, data)
 }
+//鑾峰彇鐩戞帶绛夌骇
+func getAlarmLevel(alarmlevel []int) ([]string) {
+	d := dbapi.DicApi{}
+        res,data := d.FindByType("ALARMLEVEL")
+        if data == nil {
+                fmt.Println("dsadasd")
+        }
+	fmt.Println(res)
+		// fmt.Println(data)
+	alarmLevel := make(map[int]string)
+	
+	tmp := data.(map[string]interface{})
+		for _,value := range tmp["ALARMLEVEL"].([]interface{}) {
+			// fmt.Println(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 {
+				fmt.Println("dsadas")
+			}
+			alarmLevel[vl] = name
+		}
+	alarmLevelRes := make([]string,len(alarmlevel))
+		for i,v := range  alarmlevel  {
+			alarmLevelRes[i] =  alarmLevel[v]
+		}
+	return alarmLevelRes	
+}
 
 func findEsData(searchBody map[string]interface{}) map[string]interface{} {
 	webPage := int(searchBody["page"].(float64))
@@ -46,7 +75,7 @@
 	queryBody := searchBody["inputValue"].(string)
 	//妫�绱㈡
 	if queryBody != "" {
-		queryStr = "\"must\":[{\"multi_match\":{\"query\":\"" + queryBody + "\",\"fields\":[\"BaseName^1.5\",\"Gender^2.0\",\"Race^2.0\",\"content^1.0\",\"idcard^1.8\",\"picAddress^1.0\"]," +
+		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\"]," +
 			"\"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)
@@ -59,11 +88,11 @@
 		taskIdStr = "{\"terms\":{\"taskId\":[\"" + esTaskId + "\"]}},"
 	}
 	//鍒ゆ柇鎽勫儚鏈篒D
-	videoReqNumStr := ""
-	videoReqNum := searchBody["treeNodes"].([]interface{})
-	if videoReqNum != nil && len(videoReqNum) > 0 {
-		esVideoReqNum := strings.Replace(strings.Trim(fmt.Sprint(videoReqNum), "[]"), " ", "\",\"", -1)
-		videoReqNumStr = "{\"terms\":{\"videoReqNum\":[\"" + esVideoReqNum + "\"]}},"
+	cameraIdStr := ""
+	cameraId := searchBody["treeNodes"].([]interface{})
+	if cameraId != nil && len(cameraId) > 0 {
+		esCameraId := strings.Replace(strings.Trim(fmt.Sprint(cameraId), "[]"), " ", "\",\"", -1)
+		cameraIdStr = "{\"terms\":{\"cameraId\":[\"" + esCameraId + "\"]}},"
 	}
 
 	//鍒ゆ柇搴撹〃ID
@@ -73,30 +102,60 @@
 	if tableId != nil && len(tableId) > 0 {
 		esTableId = strings.Replace(strings.Trim(fmt.Sprint(tableId), "[]"), " ", "\",\"", -1)
 		index = config.EsInfo.EsIndex.VideoPersons.IndexName
-		esTableIdStr = "{\"terms\":{\"tableId\":[\"" + esTableId + "\"]}},"
+		esTableIdStr = "{\"terms\":{\"baseInfo.tableId\":[\"" + esTableId + "\"]}},"
 	}
-	collectionStr := ""
-	collection := searchBody["collection"].(string)
-	if collection != "" {
-		collectionStr = "{\"term\":{\"collection\":\"" + collection + "\"}},"
+	//鍒ゆ柇鏀惰棌鐘舵��
+	isCollectStr := ""
+	isCollect := searchBody["collection"].(string)
+	if isCollect != "" {
+		isCollectStr = "{\"term\":{\"isCollect\":\"" + isCollect + "\"}},"
 	}
-
+	//鍒ゆ柇甯冮槻绛夌骇id
+	alarmLevelId :=searchBody["alarmlevel"].([]int)
+	alarmLevelStr := ""
+	defenceStateStr := ""
+	if len(alarmLevelId) > 0 {
+		flag := false
+		for i,v := range alarmLevelId {
+			if v == -1 {
+				alarmLevelId = append(alarmLevelId[:i], alarmLevelId[i+1:]...)
+				defenceStateStr = "{\"term\":{\"alarmRules.defenceState\":false}},"
+				flag = true
+				break
+			}
+		}
+		if len(alarmLevelId) > 0{
+			if flag == false {
+				defenceStateStr = "{\"term\":{\"alarmRules.defenceState\":true}},"
+			}
+			id := strings.Replace(strings.Trim(fmt.Sprint(getAlarmLevel(alarmLevelId)), "[]"), " ", "\",\"", -1)
+			alarmLevelStr = "{\"terms\":{\"alarmRules.alarmLevel\":[\"" + id + "\"]}},"		
+		}
+	}
+		
 	//浣跨敤es搴曞眰鏈哄埗澶勭悊鍒嗛〉
 	//璇锋眰澶�
 	url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
 		"/" + index + "/_search?search_type=dfs_query_then_fetch"
+	var setApi dbapi.SysSetApi
+	_, sysconf := setApi.GetServerInfo()
+	analyServerFilterStr := "{\"term\":{\"analyServerId\":\"" + sysconf.ServerId + "\"}},"
+
 	//璇锋眰浣�
 	prama := "{\"from\":\"" + from + "\"," +
 		"\"size\":\"" + size + "\"," +
 		"\"query\":{\"bool\":{" + queryStr +
 		"\"filter\":[" +
-		videoReqNumStr +
+		cameraIdStr +
+		alarmLevelStr +
+		defenceStateStr +
 		taskIdStr +
-		collectionStr +
+		isCollectStr +
 		esTableIdStr +
+		analyServerFilterStr +
 		"{\"range\":{\"picDate\":{\"from\":\"" + gteDate + "\",\"to\":\"" + lteDate + "\",\"include_lower\":true,\"include_upper\":true,\"boost\":1}}}]}}," +
 		"\"sort\":[{\"_score\":{\"order\":\"desc\"}},{\"picDate\":{\"order\":\"desc\"}}]," +
-		"\"_source\":[\"baseInfo\",\"gender\",\"indeviceName\",\"sdkType\",\"ageDescription\",\"content\",\"ID\",\"picAddress\",\"picMaxUrl\",\"picDate\",\"race\",\"videoNum\",\"picSmUrl\",\"taskName\",\"personIsHub\",\"IDCard\",\"videoIp\",\"videoReqNum\"]" +
+		"\"_source\":[\"baseInfo\",\"alarmRules\",\"sex\",\"analyServerName\",\"sdkName\",\"ageDescription\",\"content\",\"id\",\"cameraAddr\",\"picMaxUrl\",\"picDate\",\"race\",\"videoUrl\",\"picSmUrl\",\"taskName\",\"personIsHub\",\"isAlarm\",\"analyServerIp\",\"cameraId\"]" +
 		"}"
 	fmt.Println(prama)
 	//鏁版嵁瑙f瀽
@@ -104,7 +163,7 @@
 	return tokenRes
 }
 
-//sdkTYype瀛楀吀"\"_source\":[\"BaseName\",\"Gender\",\"Race\",\"content\",\"idcard\",\"picAddress\",\"picDate\",\"sdkType\",\"Age\",\"personId\",\"personIsHub\",\"personPicUrl\",\"picLocalUrl\",\"picSmUrl\",\"videoIp\",\"videoNum\",\"videoReqNum\",\"ageDescription\",\"likePer\"]" +
+//sdkTYype瀛楀吀"\"_source\":[\"BaseName\",\"Gender\",\"Race\",\"content\",\"idcard\",\"picAddress\",\"picDate\",\"sdkType\",\"Age\",\"personId\",\"personIsHub\",\"personPicUrl\",\"picLocalUrl\",\"picSmUrl\",\"videoIp\",\"videoNum\",\"cameraId\",\"ageDescription\",\"likePer\"]" +
 //func sdkTypeToValue(i int) string {
 //	value := []string{"浜鸿劯", "杞﹁締", "浜轰綋", "鍏ヤ镜", "鎷ユ尋", "闈犲彸琛�", "浜哄憳寮傚父", "涓綋闈欐"}
 //	return value[i-1]

--
Gitblit v1.8.0