package controllers import ( "encoding/json" "fmt" "github.com/gin-gonic/gin" "github.com/satori/go.uuid" "log" "webserver/extend/code" "webserver/extend/config" "webserver/extend/esutil" "webserver/extend/util" "webserver/models" ) type DbTableController struct { } // @Summary 显示底库列表 // @Description 显示同步或本地库列表 // @Accept x-www-form-urlencoded // @Produce json // @Tags dbtable // @Param isSync path string true "是否同步库 1 同步库 2本地库 qita 全部库" // @Success 200 {string} json "{"code":200, msg:"目录结构数据", success:true}" // @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\"}}" // / 本地库 } 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) data := esutil.GetEsDataInfo(url, true) return data } // @Summary 修改底库 // @Description 修改同步或本地库 // @Accept json // @Produce json // @Tags dbtable // @Param table body models.Dbtables true "底库数据" // @Success 200 {string} json "{"code":200, msg:"目录结构数据", success:true}" // @Failure 500 {string} json "{"code":500, msg:"返回错误信息", success:false}" // @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("uuid") if uuid == "" { uuid = dbtable.Uuid fmt.Println("body中获取底库uuid") } 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"]) } else { //code.ServiceInsideError.Message += result["msg"].(string) util.ResponseFormat(c, code.ServiceInsideError, result["data"]) } } // @Summary 添加底库 // @Description 添加同步或本地库 // @Accept json // @Produce json // @Tags dbtable // @Param obj body models.Dbtables true "底库数据" // @Success 200 {string} json "{"code":200, msg:"目录结构数据", success:true}" // @Failure 500 {string} json "{"code":500, msg:"返回错误信息", success:false}" // @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.Uuid = 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) } //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"]) } else { //code.ServiceInsideError.Message += result["msg"].(string) util.ResponseFormat(c, code.ServiceInsideError, result["data"]) } } // @Summary 删除底库 // @Description 删除同步或本地库 // @Accept x-www-form-urlencoded // @Produce json // @Tags dbtable // @Param uuid 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] func (dbt DbTableController) DeleteDbTables(c *gin.Context) { uuid := c.Params.ByName("uuid") 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"]) } else { //code.ServiceInsideError.Message += result["msg"].(string) util.ResponseFormat(c, code.ServiceInsideError, result["data"]) } } func changeEsRespData(respData map[string]interface{}, successMsg string) (result map[string]interface{}) { id := respData["_id"] result = map[string]interface{}{} if id != "" { result["code"] = 200 data := make(map[string]interface{}) data["uuid"] = id result["data"] = data result["success"] = true result["msg"] = successMsg } else { result["data"] = nil result["success"] = false status := respData["status"] if status != nil { result["code"] = status result["msg"] = respData["error"].(map[string]interface{})["reason"] } else { result["msg"] = "服务器异常" result["code"] = 500 } } return result }