| | |
| | | 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" |
| | |
| | | // @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) |
| | |
| | | // @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中获取底库id") |
| | | 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 添加底库 |
| | |
| | | // @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,"新增失败") |
| | | } |
| | | } |
| | | |
| | |
| | | // @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,"删除失败") |
| | | } |
| | | } |
| | | |