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 }