From 2dd1fa03c93b400ff1e8e4f44e27387965e4daa7 Mon Sep 17 00:00:00 2001
From: liuxiaolong <736321739@qq.com>
Date: 星期四, 19 九月 2019 17:23:59 +0800
Subject: [PATCH] get ip,port config from db,update realtime

---
 controllers/capture.go                |   12 +
 service/CamraUpdatesnashot.go         |   10 +
 controllers/es.go                     |    9 +
 service/EnableStatusControlService.go |   17 ++
 controllers/area.go                   |   48 ++++++
 controllers/esSearch.go               |   15 +
 go.mod                                |    6 
 controllers/dbtableperson.go          |   15 +
 router/router.go                      |    2 
 controllers/dbtablesCon.go            |   16 ++
 controllers/fileController.go         |   44 +++++
 controllers/monitoring.go             |   11 +
 go.sum                                |   12 +
 cache/cache.go                        |   77 +++++++++++
 controllers/tasklist.go               |   12 +
 controllers/initForData.go            |   19 ++
 main.go                               |   17 +-
 service/CameraVideoService.go         |   10 +
 controllers/taglist.go                |   10 +
 19 files changed, 317 insertions(+), 45 deletions(-)

diff --git a/cache/cache.go b/cache/cache.go
new file mode 100644
index 0000000..0e99d4d
--- /dev/null
+++ b/cache/cache.go
@@ -0,0 +1,77 @@
+package cache
+
+import (
+	"basic.com/dbapi.git"
+	"basic.com/pubsub/protomsg.git"
+	"basic.com/valib/gopherdiscovery.git"
+	"basic.com/pubsub/cache.git/shardmap"
+	"basic.com/valib/logger.git"
+	"errors"
+	"github.com/gogo/protobuf/proto"
+	"fmt"
+	"github.com/satori/go.uuid"
+	"strconv"
+)
+
+const (
+	SERVER_KEY = "SERVERINFO"
+)
+
+var cMap *shardmap.ShardMap
+
+
+func Init(initChan chan bool,dbIp string,surveyPort int,pubSubPort int){
+	cMap = shardmap.New(uint8(32))
+	urlSurvey := "tcp://" + dbIp + ":" + strconv.Itoa(surveyPort)
+	urlPubSub := "tcp://" + dbIp + ":" + strconv.Itoa(pubSubPort)
+	client, _ := gopherdiscovery.ClientWithSub(urlSurvey, urlPubSub, "webServerProc_"+uuid.NewV4().String())
+	recvMsg := client.HeartBeatMsg()
+	fmt.Println(<-recvMsg)
+
+	initCacheData(initChan)
+
+	peers, _ := client.Peers()
+	for b := range peers{
+		logger.Debug("peerMsg:",b)
+		updateData(b)
+	}
+}
+
+func initCacheData(initChan chan bool) {
+	initServerInfo()//鍒濆鍖栨湇鍔″櫒閰嶇疆淇℃伅
+
+	initChan <- true
+}
+
+var newUpdateMsg = &protomsg.DbChangeMessage{}
+
+func updateData(b []byte){
+	if err :=proto.Unmarshal(b,newUpdateMsg);err !=nil{
+		logger.Debug("dbChangeMsg unmarshal err:",err)
+		return
+	}
+	switch newUpdateMsg.Table {
+	case protomsg.TableChanged_T_Server:
+		initServerInfo()
+	default:
+		logger.Debug("other updateData operation")
+
+	}
+}
+
+func initServerInfo() {
+	var api dbapi.SysSetApi
+	b, s := api.GetServerInfo()
+	if b{
+		cMap.Set(SERVER_KEY,s)
+	}
+}
+
+func GetServerInfo() (conf protomsg.LocalConfig,err error) {
+	config, b := cMap.Get(SERVER_KEY)
+	if b {
+		return config.(protomsg.LocalConfig),nil
+	} else {
+		return conf,errors.New("conf not found")
+	}
+}
\ No newline at end of file
diff --git a/controllers/area.go b/controllers/area.go
index 4d5771f..c566987 100644
--- a/controllers/area.go
+++ b/controllers/area.go
@@ -20,7 +20,9 @@
 // @Description 鏄剧ず宸︿晶鎵�鏈夊尯鍩熷拰鎽勫儚鏈�
 // @Produce json
 // @Tags menu
-// @Param parentid query int true "鍖哄煙鐨刬d"
+// @Param parentid query string true "鍖哄煙鐨刬d"
+// @Param searchType query int true "鏌ヨ绫诲瀷锛�0锛氬叏閮紝1锛氬垎鏋愭憚鍍忔満锛�2锛氱洃鎺ф憚鍍忔満锛�"
+// @Param cameraName query string false "鎽勫儚鏈哄悕绉�"
 // @Success 200 {string} json "{"code":200, msg:"鐩綍缁撴瀯鏁版嵁"}"
 // @Failure 500 {string} json "{"code":500,  msg:"杩斿洖閿欒淇℃伅"}"
 // @Router /data/api-v/area/localmenu [get]
@@ -38,10 +40,12 @@
 // @Description 鏄剧ずGb28181鏍戝舰缁撴瀯
 // @Produce json
 // @Tags menu
-// @Param parentid query int true "鍖哄煙鐨刬d"
+// @Param parentid query string true "鍖哄煙鐨刬d"
+// @Param searchType query int true "鏌ヨ绫诲瀷锛�0锛氬叏閮紝1锛氬垎鏋愭憚鍍忔満锛�2锛氱洃鎺ф憚鍍忔満锛�"
+// @Param cameraName query string false "鎽勫儚鏈哄悕绉�"
 // @Success 200 {string} json "{"code":200, msg:"鐩綍缁撴瀯鏁版嵁"}"
 // @Failure 500 {string} json "{"code":500,  msg:"杩斿洖閿欒淇℃伅"}"
-// @Router /data/api-v/area/localmenu [get]
+// @Router /data/api-v/area/gb28181Tree [get]
 func (ac AreaController) CameraGb28181Tree(c *gin.Context) {
 	parentIdStr := c.Query("parentid")
 	searchTypeStr := c.Query("searchType")
@@ -52,6 +56,44 @@
 	util.ResponseFormat(c, code.Success, arr)
 }
 
+// @Summary 鍒锋柊Gb28181骞冲彴鏍�
+// @Description 鍒锋柊Gb28181骞冲彴鏍�
+// @Produce json
+// @Tags menu
+// @Param id formData string true "鍥芥爣骞冲彴id"
+// @Success 200 {string} json "{"code":200, data:"",msg:"璇锋眰鎴愬姛", success:true}"
+// @Failure 200 {string} json "{"code":500, data:"",msg:"璇锋眰澶辫触", success:false}"
+// @Router /data/api-v/area/gb28181TreeRefresh [post]
+func (ac AreaController) Gb28181TreeRefresh(c *gin.Context) {
+	id := c.PostForm("id")
+	if id =="" {
+		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟閿欒")
+		return
+	}
+	var api dbapi.AreaApi
+	if api.Gb28181TreeRefresh(id) {
+		util.ResponseFormat(c,code.UpdateSuccess,"鏇存柊鎴愬姛")
+	} else {
+		util.ResponseFormat(c,code.UpdateFail, "鏇存柊澶辫触")
+	}
+}
+
+// @Summary 鍒犻櫎Gb28181骞冲彴
+// @Description 鍒犻櫎Gb28181骞冲彴
+// @Produce json
+// @Tags menu
+// @Success 200 {string} json "{"code":200, data:"",msg:"璇锋眰鎴愬姛", success:true}"
+// @Failure 200 {string} json "{"code":500, data:"",msg:"璇锋眰澶辫触", success:false}"
+// @Router /data/api-v/area/gb28181TreeDelete [post]
+func (ac AreaController) Gb28181TreeDelete(c *gin.Context) {
+	var api dbapi.AreaApi
+	if api.Gb28181TreeDelete() {
+		util.ResponseFormat(c,code.DelSuccess,"鍒犻櫎鎴愬姛")
+	} else {
+		util.ResponseFormat(c,code.ComError, "鍒犻櫎澶辫触")
+	}
+}
+
 // @Summary 娣诲姞menu鐨勫尯鍩�
 // @Description 娣诲姞鐩綍涓婂尯鍩�
 // @Produce json
diff --git a/controllers/capture.go b/controllers/capture.go
index de43401..962a333 100644
--- a/controllers/capture.go
+++ b/controllers/capture.go
@@ -2,9 +2,12 @@
 
 import (
 	"basic.com/dbapi.git"
+	"basic.com/valib/logger.git"
 	"fmt"
 	"github.com/gin-gonic/gin"
+	"strconv"
 	"strings"
+	"webserver/cache"
 	"webserver/extend/code"
 	"webserver/extend/config"
 	"webserver/extend/esutil"
@@ -38,7 +41,13 @@
 		cameraIdStr = "{\"terms\":{\"cameraId\":[\"" + esCameraId + "\"]}},"
 	}
 	//璇锋眰澶�
-	url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
+	localConf, err2 := cache.GetServerInfo()
+	if err2 !=nil || localConf.AlarmIp == "" {
+		logger.Debug("localConfig is wrong!!!")
+		util.ResponseFormat(c,code.ComError,"es config err")
+		return
+	}
+	url := "http://" + localConf.AlarmIp + ":" + strconv.Itoa(int(localConf.AlarmPort)) +
 		"/" + index + "/_search"
 
 	var setApi dbapi.SysSetApi
@@ -52,7 +61,6 @@
 		"\"sort\":[{\"picDate\":{\"order\":\"desc\"}}]," +
 		"\"size\":\"1000\"," +
 		"\"_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)
 	util.ResponseFormat(c, code.Success, tokenRes)
 }
diff --git a/controllers/dbtableperson.go b/controllers/dbtableperson.go
index b208eb3..ac89321 100644
--- a/controllers/dbtableperson.go
+++ b/controllers/dbtableperson.go
@@ -11,6 +11,7 @@
 	"strconv"
 	"time"
 	"basic.com/valib/logger.git"
+	"webserver/cache"
 	"webserver/service"
 
 	"github.com/gin-gonic/gin"
@@ -277,7 +278,12 @@
 			break
 		}
 	}
-	var weedfsUri = "http://"+config.WeedFs.Ip+":"+strconv.Itoa(config.WeedFs.UploadPort)+"/submit"
+	localConf, err2 := cache.GetServerInfo()
+	if err2 !=nil || localConf.WebPicIp == "" {
+		logger.Debug("localConfig is wrong!!!")
+		return
+	}
+	var weedfsUri = "http://"+localConf.WebPicIp+":"+strconv.Itoa(int(localConf.WebPicPort))+"/submit"
 	//鏍规嵁浜鸿劯鍧愭爣鎵e嚭浜鸿劯灏忓浘
 	t1 := time.Now()
 	cutFaceImgData := util.SubImg(*pI, int(rcFace.Left), int(rcFace.Top), int(rcFace.Right), int(rcFace.Bottom))
@@ -306,7 +312,12 @@
 }
 
 func UpdateDbPersonsOfDbTable(id string) (message string) {
-	url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
+	localConf, err2 := cache.GetServerInfo()
+	if err2 !=nil || localConf.AlarmIp == "" {
+		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 := `
 			{
diff --git a/controllers/dbtablesCon.go b/controllers/dbtablesCon.go
index 9ebfd35..1865c9e 100644
--- a/controllers/dbtablesCon.go
+++ b/controllers/dbtablesCon.go
@@ -6,7 +6,9 @@
 	"fmt"
 	"github.com/gin-gonic/gin"
 	"github.com/satori/go.uuid"
+	"strconv"
 	"time"
+	"webserver/cache"
 	"webserver/extend/code"
 	"webserver/extend/config"
 	"webserver/extend/esutil"
@@ -40,7 +42,12 @@
 
 // 渚濇嵁搴曞簱id  鏌ヨ鏁版嵁
 func QueryDbTableInfo(tableId string) map[string]interface{} {
-	url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
+	localConf, err2 := cache.GetServerInfo()
+	if err2 !=nil || localConf.AlarmIp == "" {
+		logger.Debug("localConfig is wrong!!!")
+		return nil
+	}
+	url := "http://" + localConf.AlarmIp + ":" + strconv.Itoa(int(localConf.AlarmPort)) +
 		"/" + config.EsInfo.EsIndex.DbTables.IndexName + "/" + config.EsInfo.EsIndex.DbTables.IndexName + "/" + tableId
 	logger.Debug("璇锋眰url:%s;", url)
 	data := esutil.GetEsDataInfo(url, true)
@@ -169,7 +176,12 @@
 
 func UpdateEndTime(id string) (flag bool) {
 	flag = false
-	url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
+	localConf, err2 := cache.GetServerInfo()
+	if err2 !=nil || localConf.AlarmIp == "" {
+		logger.Debug("localConfig is wrong!!!")
+		return false
+	}
+	url := "http://" + localConf.AlarmIp + ":" + strconv.Itoa(int(localConf.AlarmPort)) +
 		"/" + config.EsInfo.EsIndex.DbTables.IndexName + "/" + config.EsInfo.EsIndex.DbTables.IndexType + "/" + id + "/_update?refresh=wait_for"
 	prama := "{\"script\":\"ctx._source.remove(\\\"endTime\\\")\"}"
 	buf, err := esutil.EsReq("POST", url, []byte(prama))
diff --git a/controllers/es.go b/controllers/es.go
index 091c86b..a2c591b 100644
--- a/controllers/es.go
+++ b/controllers/es.go
@@ -2,11 +2,13 @@
 
 import (
 	"basic.com/dbapi.git"
+	"basic.com/valib/logger.git"
 	"fmt"
 	"github.com/gin-gonic/gin"
 	"math/rand"
 	"strconv"
 	"strings"
+	"webserver/cache"
 	"webserver/extend/code"
 	"webserver/extend/config"
 	"webserver/extend/esutil"
@@ -103,7 +105,12 @@
 	esSize := strconv.Itoa(webSize)
 	//浣跨敤es搴曞眰鏈哄埗澶勭悊鍒嗛〉
 	//璇锋眰澶�
-	url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
+	localConf, err2 := cache.GetServerInfo()
+	if err2 !=nil || localConf.AlarmIp == "" {
+		logger.Debug("localConfig is wrong!!!")
+		return nil
+	}
+	url := "http://" + localConf.AlarmIp + ":" + strconv.Itoa(int(localConf.AlarmPort)) +
 		"/" + index + "/_search?search_type=dfs_query_then_fetch"
 
 	var setApi dbapi.SysSetApi
diff --git a/controllers/esSearch.go b/controllers/esSearch.go
index 9172bac..33a6bca 100644
--- a/controllers/esSearch.go
+++ b/controllers/esSearch.go
@@ -6,6 +6,7 @@
 		"github.com/gin-gonic/gin"
 		"strconv"
 		"strings"
+		"webserver/cache"
 		"webserver/extend/code"
 		"webserver/extend/config"
 		"webserver/extend/esutil"
@@ -140,7 +141,12 @@
 
 	//浣跨敤es搴曞眰鏈哄埗澶勭悊鍒嗛〉
 	//璇锋眰澶�
-	url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
+	localConf, err2 := cache.GetServerInfo()
+	if err2 !=nil || localConf.AlarmIp == "" {
+		logger.Debug("localConfig is wrong!!!")
+		return nil
+	}
+	url := "http://" + localConf.AlarmIp + ":" + strconv.Itoa(int(localConf.AlarmPort)) +
 		"/" + index + "/_search?search_type=dfs_query_then_fetch"
 	var setApi dbapi.SysSetApi
 	_, sysconf := setApi.GetServerInfo()
@@ -196,7 +202,12 @@
 }
 
 func GetLinkInfo(linkId string, id string) []map[string]interface{} {
-	url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
+	localConf, err2 := cache.GetServerInfo()
+	if err2 !=nil || localConf.AlarmIp == "" {
+		logger.Debug("localConfig is wrong!!!")
+		return nil
+	}
+	url := "http://" + localConf.AlarmIp + ":" + strconv.Itoa(int(localConf.AlarmPort)) +
 		"/" + config.EsInfo.EsIndex.VideoPersons.IndexName + "," + config.EsInfo.EsIndex.Personaction.IndexName + "/_search?search_type=dfs_query_then_fetch"
 	jsonDSL := "{\"query\":{\"bool\":{\"filter\":[{\"term\":{\"linkId.keyword\":\"" + linkId + "\"}}],\"must_not\":[{\"term\":{\"id\":\"" + id + "\"}}]}},\"size\":100}"
 
diff --git a/controllers/fileController.go b/controllers/fileController.go
index db6a916..fab536f 100644
--- a/controllers/fileController.go
+++ b/controllers/fileController.go
@@ -24,6 +24,7 @@
 	"strings"
 	"sync"
 	"time"
+	"webserver/cache"
 	"webserver/extend/code"
 	"webserver/extend/config"
 	"webserver/extend/esutil"
@@ -122,7 +123,12 @@
 		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎")
 		return
 	}
-	var weedfsUri = "http://"+config.WeedFs.Ip+":"+strconv.Itoa(config.WeedFs.UploadPort)+"/submit"
+	localConf, err2 := cache.GetServerInfo()
+	if err2 !=nil || localConf.WebPicIp == "" {
+		logger.Debug("localConfig is wrong!!!")
+		return
+	}
+	var weedfsUri = "http://"+localConf.WebPicIp+":"+strconv.Itoa(int(localConf.WebPicPort))+"/submit"
 	resultMap :=make(map[string]interface{},0)
 	//灏嗕笂浼犵殑鍥剧墖浜や汉鑴告娴嬪拰浜鸿劯鎻愬彇锛岃幏寰楃壒寰�
 	fileBytes, _ := ioutil.ReadAll(file)
@@ -268,7 +274,12 @@
 		}
 	}
 	if len(captureIds) >0 {
-		videopersons, _ := esApi.Videopersonsinfosbyid(captureIds, config.EsInfo.EsIndex.VideoPersons.IndexName, config.EsInfo.Masterip, config.EsInfo.Httpport)
+		localConf, err2 := cache.GetServerInfo()
+		if err2 !=nil || localConf.AlarmIp == "" {
+			logger.Debug("localConfig is wrong!!!")
+			return nil
+		}
+		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)
@@ -343,7 +354,13 @@
 	}
 	var faceB []byte
 	if searchBody.CaptureId != "" {//鍋氭煡鎵炬浜�,鎼滄墍鏈夋姄鎷嶅拰搴曞簱
-		searchBase64Fea, err := esApi.GetVideoPersonFaceFeatureById(searchBody.CaptureId, config.EsInfo.EsIndex.VideoPersons.IndexName, config.EsInfo.Masterip, config.EsInfo.Httpport)
+		localConf, err2 := cache.GetServerInfo()
+		if err2 !=nil || localConf.AlarmIp == "" {
+			logger.Debug("localConfig is wrong!!!")
+			util.ResponseFormat(c,code.ComError,"localConf wrong")
+			return
+		}
+		searchBase64Fea, err := esApi.GetVideoPersonFaceFeatureById(searchBody.CaptureId, config.EsInfo.EsIndex.VideoPersons.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)))
 		if err !=nil {
 			util.ResponseFormat(c, code.ComError, "鎶撴媿鏁版嵁涓嶅瓨鍦紝璇锋鏌�")
 			return
@@ -551,7 +568,12 @@
 		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎")
 		return
 	}
-	var weedfsUri = "http://"+config.WeedFs.Ip+":"+strconv.Itoa(config.WeedFs.UploadPort)+"/submit"
+	localConf, err2 := cache.GetServerInfo()
+	if err2 !=nil || localConf.WebPicIp == "" {
+		logger.Debug("localConfig is wrong!!!")
+		return
+	}
+	var weedfsUri = "http://"+localConf.WebPicIp+":"+strconv.Itoa(int(localConf.WebPicPort))+"/submit"
 
 	//灏嗕笂浼犵殑鍥剧墖浜や汉鑴告娴嬪拰浜鸿劯鎻愬彇锛岃幏寰楃壒寰�
 	fileBytes, _ := ioutil.ReadAll(file)
@@ -610,7 +632,12 @@
 			break
 		}
 	}
-	var weedfsUri = "http://"+config.WeedFs.Ip+":"+strconv.Itoa(config.WeedFs.UploadPort)+"/submit"
+	localConf, err2 := cache.GetServerInfo()
+	if err2 !=nil || localConf.WebPicIp == "" {
+		logger.Debug("localConfig is wrong!!!")
+		return "",nil,err2
+	}
+	var weedfsUri = "http://"+localConf.WebPicIp+":"+strconv.Itoa(int(localConf.WebPicPort))+"/submit"
 	//鏍规嵁浜鸿劯鍧愭爣鎵e嚭浜鸿劯灏忓浘
 	t1 := time.Now()
 	cutFaceImgData := util.SubImg(*pI, int(rcFace.Left), int(rcFace.Top), int(rcFace.Right), int(rcFace.Bottom))
@@ -753,7 +780,12 @@
 		util.ResponseFormat(c, code.UploadFileError, err2.Error())
 		return
 	}
-	var weedfsUri = "http://"+config.WeedFs.Ip+":"+strconv.Itoa(config.WeedFs.UploadPort)+"/submit"
+	localConf, err2 := cache.GetServerInfo()
+	if err2 !=nil || localConf.WebPicIp == "" {
+		logger.Debug("localConfig is wrong!!!")
+		return
+	}
+	var weedfsUri = "http://"+localConf.WebPicIp+":"+strconv.Itoa(int(localConf.WebPicPort))+"/submit"
 	{
 		uri := weedfsUri
 		fileInfo, e := esutil.PostFormBufferData(uri, filename, "file", uploadData)
diff --git a/controllers/initForData.go b/controllers/initForData.go
index 2010386..8d595d9 100644
--- a/controllers/initForData.go
+++ b/controllers/initForData.go
@@ -2,9 +2,12 @@
 
 import (
 	"basic.com/dbapi.git"
+	"basic.com/valib/logger.git"
 	"fmt"
 	"github.com/gin-gonic/gin"
+	"strconv"
 	"strings"
+	"webserver/cache"
 	"webserver/extend/code"
 	"webserver/extend/config"
 	"webserver/extend/esutil"
@@ -29,7 +32,13 @@
 	var searchBody RealTimeArg
 	c.BindJSON(&searchBody)
 	index := config.EsInfo.EsIndex.VideoPersons.IndexName + "," + config.EsInfo.EsIndex.Personaction.IndexName
-	url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
+	localConf, err2 := cache.GetServerInfo()
+	if err2 !=nil || localConf.AlarmIp == "" {
+		logger.Debug("localConfig is wrong!!!")
+		util.ResponseFormat(c,code.ComError,"localConf wrong")
+		return
+	}
+	url := "http://" + localConf.AlarmIp + ":" + strconv.Itoa(int(localConf.AlarmPort)) +
 		"/" + index + "/_search"
 	cameraIdStr := ""
 	if searchBody.TreeNodes !=nil {
@@ -88,7 +97,13 @@
 		taskIdStr = "{\"terms\":{\"taskId\":[\"" + esTaskId + "\"]}},"
 	}
 	//璇锋眰澶�
-	url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
+	localConf, err2 := cache.GetServerInfo()
+	if err2 !=nil || localConf.AlarmIp == "" {
+		logger.Debug("localConfig is wrong!!!")
+		util.ResponseFormat(c,code.ComError,"localConf wrong")
+		return
+	}
+	url := "http://" + localConf.AlarmIp + ":" + strconv.Itoa(int(localConf.AlarmPort)) +
 		"/" + index + "/_search"
 	var setApi dbapi.SysSetApi
 	_, sysconf := setApi.GetServerInfo()
diff --git a/controllers/monitoring.go b/controllers/monitoring.go
index eda4467..70414ea 100644
--- a/controllers/monitoring.go
+++ b/controllers/monitoring.go
@@ -2,8 +2,11 @@
 
 import (
 	"basic.com/dbapi.git"
+	"basic.com/valib/logger.git"
 	"fmt"
+	"strconv"
 	"strings"
+	"webserver/cache"
 
 	"github.com/gin-gonic/gin"
 	"webserver/extend/code"
@@ -41,7 +44,13 @@
 		taskIdStr = "{\"terms\":{\"taskId\":[\"" + esTaskId + "\"]}},"
 	}
 	//璇锋眰澶�
-	url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
+	localConf, err2 := cache.GetServerInfo()
+	if err2 !=nil || localConf.AlarmIp == "" {
+		logger.Debug("localConfig is wrong!!!")
+		util.ResponseFormat(c,code.ComError,"localConf wrong")
+		return
+	}
+	url := "http://" + localConf.AlarmIp + ":" + strconv.Itoa(int(localConf.AlarmPort)) +
 		"/" + index + "/_search"
 
 	var setApi dbapi.SysSetApi
diff --git a/controllers/taglist.go b/controllers/taglist.go
index d897d74..beb54e6 100644
--- a/controllers/taglist.go
+++ b/controllers/taglist.go
@@ -2,8 +2,11 @@
 
 import (
 	"basic.com/dbapi.git"
+	"basic.com/valib/logger.git"
 	"encoding/json"
 	"fmt"
+	"strconv"
+	"webserver/cache"
 	"webserver/extend/code"
 	"webserver/extend/config"
 	"webserver/extend/esutil"
@@ -50,7 +53,12 @@
 //鍒ゆ柇搴曞簱鏄惁鏈夋暟鎹�
 func GetTotalFromDb(id string) (flag bool) {
 	flag = false
-	url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
+	localConf, err2 := cache.GetServerInfo()
+	if err2 !=nil || localConf.AlarmIp == "" {
+		logger.Debug("localConfig is wrong!!!")
+		return false
+	}
+	url := "http://" + localConf.AlarmIp + ":" + strconv.Itoa(int(localConf.AlarmPort)) +
 		"/" + config.EsInfo.EsIndex.VideoPersons.IndexName + "/_search"
 	prama := "{\"query\":{\"bool\":{\"filter\":[{\"term\":{\"baseInfo.tableId\":\"" + id + "\"}}]}},\"size\":0}"
 	buf, err := esutil.EsReq("POST", url, []byte(prama))
diff --git a/controllers/tasklist.go b/controllers/tasklist.go
index c49a822..e6e9e64 100644
--- a/controllers/tasklist.go
+++ b/controllers/tasklist.go
@@ -1,7 +1,10 @@
 package controllers
 
 import (
+	"basic.com/valib/logger.git"
 	"fmt"
+	"strconv"
+	"webserver/cache"
 
 	"github.com/gin-gonic/gin"
 	"webserver/extend/code"
@@ -20,8 +23,13 @@
 // @Failure 500 {string} json "{"code":500,  msg:"杩斿洖閿欒淇℃伅", success:false}"
 // @Router /data/api-v/es/tagList [POST]
 func (sc *EsSearchController) PostEsTaskList(c *gin.Context) {
-
-	url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
+	localConf, err2 := cache.GetServerInfo()
+	if err2 !=nil || localConf.AlarmIp == "" {
+		logger.Debug("localConfig is wrong!!!")
+		util.ResponseFormat(c,code.ComError,"localConf wrong")
+		return
+	}
+	url := "http://" + localConf.AlarmIp + ":" + strconv.Itoa(int(localConf.AlarmPort)) +
 		"/" + config.EsInfo.EsIndex.VideoPersons.IndexName + "," + config.EsInfo.EsIndex.Personaction.IndexName + "/_search"
 
 	prama := "{\"size\":0,\"aggs\":{\"taskId_list\":{\"terms\":{\"field\":\"taskId\"}}}}"
diff --git a/go.mod b/go.mod
index 47bbb58..ade4ed3 100644
--- a/go.mod
+++ b/go.mod
@@ -3,8 +3,9 @@
 go 1.12
 
 require (
-	basic.com/dbapi.git v0.0.0-20190823075733-e5071de98457
-	basic.com/fileServer/WeedFSClient.git v0.0.0-20190816064005-fe514a350280
+	basic.com/dbapi.git v0.0.0-20190919084344-7b9de135dd96 // indirect
+	basic.com/fileServer/WeedFSClient.git v0.0.0-20190919054037-0182b6c3f5cb // indirect
+	basic.com/pubsub/cache.git v0.0.0-20190718093725-6a413e1d7d48 // indirect
 	basic.com/pubsub/esutil.git v0.0.0-20190807083318-4431a8860d47
 	basic.com/pubsub/protomsg.git v0.0.0-20190829113947-eb5a5f99a745
 	basic.com/syncdb.git v0.0.0-20190806090534-6ef6050a854c // indirect
@@ -12,6 +13,7 @@
 	basic.com/valib/deliver.git v0.0.0-20190531095353-25d8c3b20051
 	basic.com/valib/goffmpeg.git v0.0.0-20190910083410-a6dd7933e0bd // indirect
 	basic.com/valib/gopherdiscovery.git v0.0.0-20190605034340-15d89d8b4e28 // indirect
+	basic.com/valib/gosdk.git v0.0.0-20190718022708-f0fe2e735c89 // indirect
 	basic.com/valib/logger.git v0.0.0-20190912074549-ac4e947b5e9e
 	github.com/Microsoft/go-winio v0.4.12 // indirect
 	github.com/ajg/form v1.5.1 // indirect
diff --git a/go.sum b/go.sum
index 1c78428..4853bec 100644
--- a/go.sum
+++ b/go.sum
@@ -1,7 +1,9 @@
-basic.com/dbapi.git v0.0.0-20190823075733-e5071de98457 h1:DKxGzMvuCShPR0AtEpPl2WM4nrh2cuLHGUksxCCUnJg=
-basic.com/dbapi.git v0.0.0-20190823075733-e5071de98457/go.mod h1:eDXPnxaz6jZPDvBSk7ya7oSASWPCuUEgRTJCjsfKt/Q=
-basic.com/fileServer/WeedFSClient.git v0.0.0-20190816064005-fe514a350280 h1:fDHXmFgRM6a3pWfh18sXjofprz8AnUaiVDN+yToXtRY=
-basic.com/fileServer/WeedFSClient.git v0.0.0-20190816064005-fe514a350280/go.mod h1:FTryK8BsVLfUplx8a3+l8hJWub6VbAWZCUH7sPRZaso=
+basic.com/dbapi.git v0.0.0-20190919084344-7b9de135dd96 h1:iBqHj7uNMko4BcijsdNVATbTqn2PJO18BWKUAEMPvag=
+basic.com/dbapi.git v0.0.0-20190919084344-7b9de135dd96/go.mod h1:eDXPnxaz6jZPDvBSk7ya7oSASWPCuUEgRTJCjsfKt/Q=
+basic.com/fileServer/WeedFSClient.git v0.0.0-20190919054037-0182b6c3f5cb h1:fM6DojeInFSCFO+wkba1jtyPiSDqw0jYKi4Tk+e+ka4=
+basic.com/fileServer/WeedFSClient.git v0.0.0-20190919054037-0182b6c3f5cb/go.mod h1:FTryK8BsVLfUplx8a3+l8hJWub6VbAWZCUH7sPRZaso=
+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-20190807083318-4431a8860d47 h1:/c8JYWHOjxfrYMTLum6EHx3rcfz8oo0JUf9FGyfkCmk=
 basic.com/pubsub/esutil.git v0.0.0-20190807083318-4431a8860d47/go.mod h1:yIvppFPFGC61DOdm71ujnsxZBMFUu2yKjr5O43bMWCw=
 basic.com/pubsub/protomsg.git v0.0.0-20190829113947-eb5a5f99a745 h1:NQ/172pylwH5BnVwt4vlrXVN+UDn8YJc+5V2ZPaC4P0=
@@ -17,6 +19,8 @@
 basic.com/valib/goffmpeg.git v0.0.0-20190910083410-a6dd7933e0bd/go.mod h1:1x75Hawh/BjgPsQtuJ24px89gzk3uAslD8e0Xs6Z7GQ=
 basic.com/valib/gopherdiscovery.git v0.0.0-20190605034340-15d89d8b4e28 h1:3hejanzPEBvZSSvjIqayB83/6/6SLLrX9oNZAdiYELg=
 basic.com/valib/gopherdiscovery.git v0.0.0-20190605034340-15d89d8b4e28/go.mod h1:CQ+UJyZV8MRzwwckncdUDu6/RDTKAzSIPCxc9tFcwPs=
+basic.com/valib/gosdk.git v0.0.0-20190718022708-f0fe2e735c89 h1:obAoWgx9gdZOUGLNvkYUEmSjuMUXN0gJ+YBEawBDYEE=
+basic.com/valib/gosdk.git v0.0.0-20190718022708-f0fe2e735c89/go.mod h1:mT/jbyl3++GmYjh/jBF65Ein6O6/yd4qIQbSFMCZoE4=
 basic.com/valib/logger.git v0.0.0-20190912074549-ac4e947b5e9e h1:erv1TT6tc7yaNrEh6/niANgtIJQ6WhsapyTc+DN1/lg=
 basic.com/valib/logger.git v0.0.0-20190912074549-ac4e947b5e9e/go.mod h1:SPlOGUUlxCscwF1dkqmLb0oJXVqg1uJ8hsPXLFxrw1M=
 basic.com/valib/logger.git.git v0.0.0-20190904090733-b737ad2f8f18 h1:lfBv29ApfEvecKkUIpKHHsS1qu74ZZGNmzZkazK9PJ8=
diff --git a/main.go b/main.go
index 5f48e32..0dbb97e 100644
--- a/main.go
+++ b/main.go
@@ -4,9 +4,9 @@
 	"basic.com/dbapi.git"
 	"basic.com/valib/logger.git"
 	"flag"
-	"github.com/golang/glog"
 	"github.com/spf13/viper"
 	"strconv"
+	"webserver/cache"
 	"webserver/extend/config"
 	"webserver/router"
 )
@@ -14,6 +14,9 @@
 var envirment = flag.String("e", "dev", "")
 var dbIp = flag.String("dbIp", "127.0.0.1", "default dbIp=127.0.0.1")
 var dbPort = flag.String("dbPort", "8001", "default dbPort=8001")
+var surveyPort = flag.Int("surveyPort", 40007, "survey port") //蹇冭烦
+var pubPort = flag.Int("pubPort", 50007, "pubsub port")       //鏁版嵁鏇存柊
+var initchan = make(chan bool)
 
 func init() {
 	flag.Parse()
@@ -42,16 +45,12 @@
 	}
 	logger.SetSaveDays(logSaveDays)
 	logger.Info("loginit success !")
-
-	flag.Usage = func() {
-		glog.Exit("flag parse usage !")
-	}
-
-	flag.Lookup("alsologtostderr").Value.Set("true")
-	flag.Lookup("log_dir").Value.Set("./log")
-
 }
 func main() {
+	flag.Parse()
+	go cache.Init(initchan, *dbIp, *surveyPort,*pubPort)
+	logger.Debug("heartBeat with db done!",<-initchan)
+
 	r := router.NewRouter()
 	r.Run("0.0.0.0:8000")
 }
diff --git a/router/router.go b/router/router.go
index d4ab184..5efd80b 100644
--- a/router/router.go
+++ b/router/router.go
@@ -67,6 +67,8 @@
 		area.POST("/add", areaController.AreaAdd)
 		area.POST("/del", areaController.AreaDelete)
 		area.POST("/update", areaController.AreaUpdate)
+		area.POST("/gb28181TreeRefresh", areaController.Gb28181TreeRefresh)
+		area.POST("/gb28181TreeDelete", areaController.Gb28181TreeDelete)
 	}
 
 	//鎽勫儚鏈虹鐞�
diff --git a/service/CameraVideoService.go b/service/CameraVideoService.go
index 907dd8e..2725d03 100644
--- a/service/CameraVideoService.go
+++ b/service/CameraVideoService.go
@@ -1,8 +1,11 @@
 package service
 
 import (
+	"basic.com/valib/logger.git"
 	"encoding/json"
 	"fmt"
+	"strconv"
+	"webserver/cache"
 	"webserver/extend/config"
 	"webserver/extend/esutil"
 	"webserver/models"
@@ -10,7 +13,12 @@
 
 // 鍦板簱浜哄憳鏁版嵁 涓� 姣斿鍋氬噯澶�
 func QueryDbPersonsForCompare(reqBody models.EsSearch) map[string]interface{} {
-	url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
+	localConf, err2 := cache.GetServerInfo()
+	if err2 !=nil || localConf.AlarmIp == "" {
+		logger.Debug("localConfig is wrong!!!")
+		return nil
+	}
+	url := "http://" + localConf.AlarmIp + ":" + strconv.Itoa(int(localConf.AlarmPort)) +
 		"/" + config.EsInfo.EsIndex.Dbtablepersons.IndexName + "/_search"
 	tableIds := make([]string, 20)
 	if reqBody.DataBases != nil {
diff --git a/service/CamraUpdatesnashot.go b/service/CamraUpdatesnashot.go
index d71c8e8..6e68767 100644
--- a/service/CamraUpdatesnashot.go
+++ b/service/CamraUpdatesnashot.go
@@ -4,9 +4,10 @@
 	"basic.com/dbapi.git"
 	"basic.com/fileServer/WeedFSClient.git"
 	"basic.com/valib/capture.git"
+	"basic.com/valib/logger.git"
 	"errors"
 	"strconv"
-	"webserver/extend/config"
+	"webserver/cache"
 )
 /*浠ヤ笅灞炰簬鏃х増鏈湴鎽勫儚鏈鸿幏鍙栨埅鍥撅紙鍥芥爣鎽勫儚鏈哄簳鍥炬棤娉曞埛鏂帮級
 func PostFormBufferData(uri string, filepath string, fileName string) (maps map[string]interface{}, err0 error) {
@@ -145,7 +146,12 @@
 	}
 	b,err := capture.Capture("libcffmpeg.so",m,camera.Rtsp,capture.JPEGFileExt,1280,720,10)
 	if err == nil{
-		var weedfsUri = "http://"+config.WeedFs.Ip+":"+strconv.Itoa(config.WeedFs.UploadPort)+"/submit"
+		localConf, err2 := cache.GetServerInfo()
+		if err2 !=nil || localConf.WebPicIp == "" {
+			logger.Debug("localConfig is wrong!!!")
+			return "",err2
+		}
+		var weedfsUri = "http://"+localConf.WebPicIp+":"+strconv.Itoa(int(localConf.WebPicPort))+"/submit"
 		weedFilePath, err := WeedFSClient.UploadFile(weedfsUri, camera.Name+".jpg", b)
 		if err != nil {
 			return "",err
diff --git a/service/EnableStatusControlService.go b/service/EnableStatusControlService.go
index 301859a..045f9b9 100644
--- a/service/EnableStatusControlService.go
+++ b/service/EnableStatusControlService.go
@@ -2,18 +2,24 @@
 
 import (
 	"basic.com/dbapi.git"
+	"basic.com/valib/logger.git"
 	"encoding/json"
 	"fmt"
 	"strconv"
 	"strings"
 	"time"
+	"webserver/cache"
 	"webserver/extend/config"
 	"webserver/extend/esutil"
-	"basic.com/valib/logger.git"
 )
 
 func GetVerificationData() []map[string]interface{} {
-	url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
+	localConf, err2 := cache.GetServerInfo()
+	if err2 !=nil || localConf.AlarmIp == "" {
+		logger.Debug("localConfig is wrong!!!")
+		return nil
+	}
+	url := "http://" + localConf.AlarmIp + ":" + strconv.Itoa(int(localConf.AlarmPort)) +
 		"/" + config.EsInfo.EsIndex.DbTables.IndexName + "/_search"
 	var setApi dbapi.SysSetApi
 	_, sysconf := setApi.GetServerInfo()
@@ -83,7 +89,12 @@
 		status = 1
 	}
 	enable := strconv.Itoa(status)
-	url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
+	localConf, err2 := cache.GetServerInfo()
+	if err2 !=nil || localConf.AlarmIp == "" {
+		logger.Debug("localConfig is wrong!!!")
+		return "localConf wrong"
+	}
+	url := "http://" + localConf.AlarmIp + ":" + strconv.Itoa(int(localConf.AlarmPort)) +
 		"/" + config.EsInfo.EsIndex.DbTables.IndexName + "/_update_by_query?refresh"
 	jsonDsl := `
 			{

--
Gitblit v1.8.0