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 | 197 ++++++++++++++++++++++++++++++------------------ 1 files changed, 122 insertions(+), 75 deletions(-) diff --git a/controllers/dbtablesCon.go b/controllers/dbtablesCon.go index 2eb472c..fd8ddd0 100644 --- a/controllers/dbtablesCon.go +++ b/controllers/dbtablesCon.go @@ -1,14 +1,16 @@ package controllers 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" + "webserver/extend/logger" "webserver/extend/util" "webserver/models" ) @@ -26,30 +28,21 @@ // @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") - syncTerm := "" - if isSync == "1" { - syncTerm = ",{\"term\":{\"isSync\":\"1\"}}" // 鍚屾搴� - } else if isSync == "2" { - syncTerm = ",{\"term\":{\"isSync\":\"2\"}}" // / 鏈湴搴� + var tApi dbapi.DbTableApi + b, data := tApi.QueryDbTables(isSync) + if b{ + util.ResponseFormat(c, code.Success, data) + } else { + util.ResponseFormat(c,code.ComError,[]interface{}{}) } - params := "{\"query\":{\"bool\":{\"must\":[" + - "{\"term\":{\"isDelete\":\"0\"}}" + syncTerm + "]}}," + - "\"from\":0,\"size\":100,\"sort\":{\"id\":{\"order\":\"asc\"}}}" - fmt.Print("璇锋眰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{} { url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport + "/" + config.EsInfo.EsIndex.DbTables.IndexName + "/" + config.EsInfo.EsIndex.DbTables.IndexName + "/" + tableId - fmt.Print("璇锋眰url:%s;", url) + logger.Debug("璇锋眰url:%s;", url) data := esutil.GetEsDataInfo(url, true) return data } @@ -65,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 - fmt.Println("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" - dbtable.PriUpdate() - dbTableByte, err := json.Marshal(dbtable) - if err != nil { - log.Fatalf("Json marshaling failed锛�%s", err) - } - fmt.Printf("%s\n", dbTableByte) - params := "{\"doc\":" + string(dbTableByte) + "}" - fmt.Print("璇锋眰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 娣诲姞搴曞簱 @@ -104,28 +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 - url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport + - "/" + config.EsInfo.EsIndex.DbTables.IndexName + "/" + config.EsInfo.EsIndex.DbTables.IndexType + "/" + tableId - dbtable.PriInsert() // 娣诲姞鏃堕棿鍜屽垱寤轰汉 - dbTableByte, err := json.Marshal(dbtable) - if err != nil { - log.Fatalf("Json marshaling failed锛�%s", err) + err := c.BindJSON(&dbtable) + if err!=nil || dbtable.TableName==""{ + util.ResponseFormat(c,code.RequestParamError,"鍙傛暟鏈夎") + return } - //fmt.Printf("%s\n", dbTableByte) - params := string(dbTableByte) - fmt.Print("璇锋眰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"]) + dbtable.Id = uuid.NewV4().String() + if dbtable.AnalyServerId == "sync" { + dbtable.AnalyServerId = "" + } + if dbtable.AnalyServerId == "local" { + var setApi dbapi.SysSetApi + flag, sysconf := setApi.GetServerInfo() + if !flag { + util.ResponseFormat(c,code.ComError,"鏈嶅姟鍣ㄥ熀鏈厤缃湁璇�,璇锋鏌�") + return + } + dbtable.AnalyServerId = sysconf.ServerId + } + + dbtable.PriInsert() // 娣诲姞鏃堕棿鍜屽垱寤轰汉 + + currentTime := time.Now() + startTime := dbtable.StartTime + endTime := "" + if dbtable.EndTime != "" { + endTime = dbtable.EndTime + } + 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,"鏂板澶辫触") } } @@ -134,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/{uuid} [POST] +// @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" - params := "{\"doc\":{\"isDelete\":\"1\"}}" - fmt.Print("鍒犻櫎璇锋眰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