From f4e8f206a6760bdc31734dfcb1c65916b5b76311 Mon Sep 17 00:00:00 2001 From: liuxiaolong <736321739@qq.com> Date: 星期四, 22 八月 2019 12:05:58 +0800 Subject: [PATCH] add cluster --- controllers/dbtablesCon.go | 193 ++++++++++++++++++++++++++++-------------------- 1 files changed, 113 insertions(+), 80 deletions(-) diff --git a/controllers/dbtablesCon.go b/controllers/dbtablesCon.go index a0dd2eb..fd8ddd0 100644 --- a/controllers/dbtablesCon.go +++ b/controllers/dbtablesCon.go @@ -3,9 +3,10 @@ import ( "basic.com/dbapi.git" "encoding/json" + "fmt" "github.com/gin-gonic/gin" "github.com/satori/go.uuid" - "log" + "time" "webserver/extend/code" "webserver/extend/config" "webserver/extend/esutil" @@ -27,32 +28,18 @@ // @Failure 500 {string} json "{"code":500, msg:"杩斿洖閿欒淇℃伅", success:false}" // @Router /data/api-v/dbtable/queryDbTables/{isSync} [POST] func (dbt DbTableController) QueryDbTables(c *gin.Context) { - url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport + - "/" + config.EsInfo.EsIndex.DbTables.IndexName + "/_search" isSync := c.Params.ByName("isSync") - var setApi dbapi.SysSetApi - _, sysconf := setApi.GetServerInfo() - analyServerFilterStr := "" - if isSync == "1" { - analyServerFilterStr = "{\"term\":{\"analyServerId\":\"\"}}" // / 鍚屾搴� - } else if isSync == "2" { - analyServerFilterStr = "{\"term\":{\"analyServerId\":\"" + sysconf.ServerId + "\"}}" // 鏈湴搴� + var tApi dbapi.DbTableApi + b, data := tApi.QueryDbTables(isSync) + if b{ + util.ResponseFormat(c, code.Success, data) + } else { + util.ResponseFormat(c,code.ComError,[]interface{}{}) } - if analyServerFilterStr !="" { - analyServerFilterStr = ","+ analyServerFilterStr - } - params := "{\"query\":{\"bool\":{\"must\":[" + - "{\"term\":{\"isDelete\":\"0\"}}" + analyServerFilterStr + "]}}," + - "\"from\":0,\"size\":1000,\"sort\":{\"id\":{\"order\":\"asc\"}}}" - logger.Debug("璇锋眰url:%s;\n 璇锋眰鍙傛暟params:%s", url, params) - - data := esutil.GetEsDataReq(url, params, true) - //c.JSON(200, data) - util.ResponseFormat(c, code.Success, data) } -锟� + // 渚濇嵁搴曞簱id 鏌ヨ鏁版嵁 -func QueryDbTableInfo(tableId string) map[string]interface{} {锟� +func QueryDbTableInfo(tableId string) map[string]interface{} { url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport + "/" + config.EsInfo.EsIndex.DbTables.IndexName + "/" + config.EsInfo.EsIndex.DbTables.IndexName + "/" + tableId logger.Debug("璇锋眰url:%s;", url) @@ -71,32 +58,63 @@ // @Router /data/api-v/dbtable/updateDbTables [POST] func (dbt DbTableController) UpdateDbTables(c *gin.Context) { dbtable := new(models.Dbtables) - c.BindJSON(&dbtable) - uuid := c.Params.ByName("id") - if uuid == "" { - uuid = dbtable.Id - logger.Debug("body涓幏鍙栧簳搴搃d") + err := c.BindJSON(&dbtable) + if err !=nil || dbtable.Id == "" || dbtable.TableName == "" { + util.ResponseFormat(c,code.RequestParamError,"鍙傛暟鏈夎") + return } - url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport + - "/" + config.EsInfo.EsIndex.DbTables.IndexName + "/" + config.EsInfo.EsIndex.DbTables.IndexType + "/" + uuid + "/_update?refresh=wait_for" - dbtable.PriUpdate() - dbTableByte, err := json.Marshal(dbtable) - if err != nil { - log.Fatalf("Json marshaling failed锛�%s", err) - } - logger.Debug("%s\n", dbTableByte) - params := "{\"doc\":" + string(dbTableByte) + "}" - logger.Debug("璇锋眰url:%s;\n 璇锋眰鍙傛暟params:%s", url, params) - data := esutil.GetEsDataReq(url, params, false) - //c.JSON(200, changeEsRespData(data, "淇敼鎴愬姛")) - result := changeEsRespData(data, "淇敼鎴愬姛") - if result["success"].(bool) { - //code.Success.Message = "淇敼搴曞簱鎴愬姛" - util.ResponseFormat(c, code.Success, result["data"]) + paramBody := util.Struct2Map(dbtable) + var tApi dbapi.DbTableApi + b, data := tApi.UpdateDbTables(paramBody) + if b{ + util.ResponseFormat(c,code.UpdateSuccess,data) } else { - //code.ServiceInsideError.Message += result["msg"].(string) - util.ResponseFormat(c, code.ServiceInsideError, result["data"]) + util.ResponseFormat(c,code.ComError,"鏇存柊澶辫触") } + + //if dbtable.EndTime == "" { + // flag := UpdateEndTime(dbtable.Id) + // if flag == false { + // util.ResponseFormat(c, code.ServiceInsideError, "淇敼澶辫触") + // } + //} + // + //if dbtable.Enable == 0 { + // res := UpdateDbPersonsOfDbTable(dbtable.Id) + //} + //if result["success"].(bool) { + // util.ResponseFormat(c, code.Success, result["data"]) + //} else { + // util.ResponseFormat(c, code.ServiceInsideError, result["data"]) + //} +} + +func UpdateEndTime(id string) (flag bool) { + flag = false + url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport + + "/" + 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)) + 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["result"].(string) + if !ok { + fmt.Println("first result change error!") + return + } + if middle == "updated" { + flag = true + } + return flag } // @Summary 娣诲姞搴曞簱 @@ -110,36 +128,54 @@ // @Router /data/api-v/dbtable/addDbTableInfo [PUT] func (dbt DbTableController) AddDbTableInfo(c *gin.Context) { dbtable := new(models.Dbtables) - c.BindJSON(&dbtable) - tableId := uuid.NewV4().String() - dbtable.Id = tableId + err := c.BindJSON(&dbtable) + if err!=nil || dbtable.TableName==""{ + util.ResponseFormat(c,code.RequestParamError,"鍙傛暟鏈夎") + return + } + dbtable.Id = uuid.NewV4().String() if dbtable.AnalyServerId == "sync" { dbtable.AnalyServerId = "" } if dbtable.AnalyServerId == "local" { var setApi dbapi.SysSetApi - _, sysconf := setApi.GetServerInfo() + flag, sysconf := setApi.GetServerInfo() + if !flag { + util.ResponseFormat(c,code.ComError,"鏈嶅姟鍣ㄥ熀鏈厤缃湁璇�,璇锋鏌�") + return + } dbtable.AnalyServerId = sysconf.ServerId } - url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport + - "/" + config.EsInfo.EsIndex.DbTables.IndexName + "/" + config.EsInfo.EsIndex.DbTables.IndexType + "/" + tableId + "?refresh=wait_for" + dbtable.PriInsert() // 娣诲姞鏃堕棿鍜屽垱寤轰汉 - dbTableByte, err := json.Marshal(dbtable) - if err != nil { - log.Fatalf("Json marshaling failed锛�%s", err) + + currentTime := time.Now() + startTime := dbtable.StartTime + endTime := "" + if dbtable.EndTime != "" { + endTime = dbtable.EndTime } - //logger.Debugf("%s\n", dbTableByte) - params := string(dbTableByte) - logger.Debug("璇锋眰url:%s;\n 璇锋眰鍙傛暟params:%s", url, params) - data, _ := esutil.PutEsDataReq(url, params) - //c.JSON(200, changeEsRespData(data, "娣诲姞鎴愬姛")) - result := changeEsRespData(data, "娣诲姞鎴愬姛") - if result["success"].(bool) { - //code.Success.Message = "娣诲姞搴曞簱鎴愬姛" - util.ResponseFormat(c, code.Success, result["data"]) + st, _ := time.ParseInLocation("2006-01-02 15:04:05", startTime, time.Local) + if endTime != "" { + et, _ := time.ParseInLocation("2006-01-02 15:04:05", endTime, time.Local) + if et.After(currentTime) && st.Before(currentTime) { + dbtable.Enable = 1 + } else { + dbtable.Enable = 0 + } + } else if st.Before(currentTime) && endTime == "" { + dbtable.Enable = 1 } else { - //code.ServiceInsideError.Message += result["msg"].(string) - util.ResponseFormat(c, code.ServiceInsideError, result["data"]) + dbtable.Enable = 0 + } + + paramBody := util.Struct2Map(dbtable) + var tApi dbapi.DbTableApi + b, data := tApi.AddDbTableInfo(paramBody) + if b { + util.ResponseFormat(c,code.AddSuccess, data) + } else { + util.ResponseFormat(c,code.ComError,"鏂板澶辫触") } } @@ -148,25 +184,22 @@ // @Accept x-www-form-urlencoded // @Produce json // @Tags dbtable -// @Param uuid path string true "搴曞簱id " +// @Param id path string true "搴曞簱id " // @Success 200 {string} json "{"code":200, msg:"鐩綍缁撴瀯鏁版嵁", success:true}" // @Failure 500 {string} json "{"code":500, msg:"杩斿洖閿欒淇℃伅", success:false}" // @Router /data/api-v/dbtable/deleteDBtablesById/{id} [POST] func (dbt DbTableController) DeleteDbTables(c *gin.Context) { - uuid := c.Params.ByName("id") - url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport + - "/" + config.EsInfo.EsIndex.DbTables.IndexName + "/" + config.EsInfo.EsIndex.DbTables.IndexType + "/" + uuid + "/_update?refresh=wait_for" - params := "{\"doc\":{\"isDelete\":1}}" - logger.Debug("鍒犻櫎璇锋眰url:%s;\n 璇锋眰鍙傛暟params:%s", url, params) - data := esutil.GetEsDataReq(url, params, false) - //c.JSON(200, changeEsRespData(data, "鍒犻櫎鎴愬姛")) - result := changeEsRespData(data, "鍒犻櫎鎴愬姛") - if result["success"].(bool) { - //code.Success.Message = "鍒犻櫎搴曞簱鎴愬姛" - util.ResponseFormat(c, code.Success, result["data"]) + id := c.Params.ByName("id") + if id == "" { + util.ResponseFormat(c,code.RequestParamError,"鍙傛暟鏈夎") + return + } + var tApi dbapi.DbTableApi + b, data := tApi.DeleteById(id) + if b { + util.ResponseFormat(c,code.DelSuccess,data) } else { - //code.ServiceInsideError.Message += result["msg"].(string) - util.ResponseFormat(c, code.ServiceInsideError, result["data"]) + util.ResponseFormat(c,code.ComError,"鍒犻櫎澶辫触") } } -- Gitblit v1.8.0