package controllers
|
|
import (
|
"basic.com/dbapi.git"
|
"encoding/json"
|
"fmt"
|
"github.com/gin-gonic/gin"
|
"github.com/satori/go.uuid"
|
"time"
|
"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) {
|
isSync := c.Params.ByName("isSync")
|
var tApi dbapi.DbTableApi
|
b, data := tApi.QueryDbTables(isSync)
|
if b{
|
util.ResponseFormat(c, code.Success, data)
|
} else {
|
util.ResponseFormat(c,code.ComError,[]interface{}{})
|
}
|
}
|
|
// 依据底库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)
|
err := c.BindJSON(&dbtable)
|
if err !=nil || dbtable.Id == "" || dbtable.TableName == "" {
|
util.ResponseFormat(c,code.RequestParamError,"参数有误")
|
return
|
}
|
paramBody := util.Struct2Map(dbtable)
|
var tApi dbapi.DbTableApi
|
b, data := tApi.UpdateDbTables(paramBody)
|
if b{
|
util.ResponseFormat(c,code.UpdateSuccess,data)
|
} else {
|
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 添加底库
|
// @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)
|
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
|
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 {
|
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,"新增失败")
|
}
|
}
|
|
// @Summary 删除底库
|
// @Description 删除同步或本地库
|
// @Accept x-www-form-urlencoded
|
// @Produce json
|
// @Tags dbtable
|
// @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) {
|
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 {
|
util.ResponseFormat(c,code.ComError,"删除失败")
|
}
|
}
|
|
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
|
}
|