package controllers
|
|
import (
|
"basic.com/dbapi.git"
|
"encoding/json"
|
"github.com/gin-gonic/gin"
|
"github.com/satori/go.uuid"
|
"log"
|
"webserver/extend/code"
|
"webserver/extend/config"
|
"webserver/extend/esutil"
|
"webserver/extend/logger"
|
"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")
|
var setApi dbapi.SysSetApi
|
_, sysconf := setApi.GetServerInfo()
|
analyServerFilterStr := ""
|
if isSync == "1" {
|
analyServerFilterStr = "{\"term\":{\"analyServerId\":\"\"}}" // / 同步库
|
} else if isSync == "2" {
|
analyServerFilterStr = "{\"term\":{\"analyServerId\":\"" + sysconf.ServerId + "\"}}" // 本地库
|
}
|
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{} {
|
url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
|
"/" + config.EsInfo.EsIndex.DbTables.IndexName + "/" + config.EsInfo.EsIndex.DbTables.IndexName + "/" + tableId
|
logger.Debug("请求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("id")
|
if uuid == "" {
|
uuid = dbtable.Id
|
logger.Debug("body中获取底库id")
|
}
|
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"])
|
} 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.Id = tableId
|
if dbtable.AnalyServerId == "sync" {
|
dbtable.AnalyServerId = ""
|
}
|
if dbtable.AnalyServerId == "local" {
|
var setApi dbapi.SysSetApi
|
_, sysconf := setApi.GetServerInfo()
|
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)
|
}
|
//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"])
|
} 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/{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"])
|
} 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
|
}
|