| | |
| | | |
| | | import ( |
| | | "basic.com/dbapi.git" |
| | | "encoding/json" |
| | | "basic.com/valib/logger.git" |
| | | "github.com/gin-gonic/gin" |
| | | "github.com/satori/go.uuid" |
| | | "log" |
| | | "time" |
| | | "webserver/extend/code" |
| | | "webserver/extend/config" |
| | | "webserver/extend/esutil" |
| | | "webserver/extend/logger" |
| | | "webserver/extend/util" |
| | | "webserver/models" |
| | | ) |
| | |
| | | type DbTableController struct { |
| | | } |
| | | |
| | | // @Security ApiKeyAuth |
| | | // @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}" |
| | | // @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 + "\"}}" // 本地库 |
| | | 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{} { |
| | | 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 |
| | | } |
| | | |
| | | // @Security ApiKeyAuth |
| | | // @Summary 查询本机所有底库列表 |
| | | // @Description 查询本机所有底库列表 |
| | | // @Accept x-www-form-urlencoded |
| | | // @Produce json |
| | | // @Tags dbtable |
| | | // @Param isDelete query string true "0:查未删除,1:查已删除,其他:查所有" |
| | | // @Success 200 {string} json "{"code":200, msg:"", success:true}" |
| | | // @Failure 500 {string} json "{"code":500, msg:"", success:false}" |
| | | // @Router /data/api-v/dbtable/findAllDbTablesByCurServer [GET] |
| | | func (dbt DbTableController) FindAllDbTablesByCurServer(c *gin.Context) { |
| | | var api dbapi.DbTableApi |
| | | isDeleteStr := c.Query("isDelete") |
| | | if isDeleteStr == "" { |
| | | isDeleteStr = "0" |
| | | } |
| | | arr,e := api.FindAllDbTablesByCurServer(isDeleteStr) |
| | | if e == nil { |
| | | util.ResponseFormat(c,code.Success, arr) |
| | | } else { |
| | | util.ResponseFormat(c,code.ComError,[]interface{}{}) |
| | | } |
| | | } |
| | | |
| | | // @Security ApiKeyAuth |
| | | // @Summary 修改底库 |
| | | // @Description 修改同步或本地库 |
| | | // @Accept json |
| | |
| | | // @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 == "" || (dbtable.Enable !=0 && dbtable.Enable !=1) { |
| | | 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"]) |
| | | //} |
| | | } |
| | | |
| | | type DbTStatusVo struct { |
| | | Id string `json:"id"` |
| | | Enable int `json:"enable"` |
| | | } |
| | | |
| | | // @Security ApiKeyAuth |
| | | // @Summary 修改底库状态 |
| | | // @Description 修改同步或本地库底库状态 |
| | | // @Accept json |
| | | // @Produce json |
| | | // @Tags dbtable |
| | | // @Param obj body controllers.DbTStatusVo true "底库状态修改参数" |
| | | // @Success 200 {string} json "{"code":200, msg:"目录结构数据", success:true}" |
| | | // @Failure 500 {string} json "{"code":500, msg:"返回错误信息", success:false}" |
| | | // @Router /data/api-v/dbtable/updateDbTableStatus [POST] |
| | | func (dbt DbTableController) UpdateDbTableStatus(c *gin.Context) { |
| | | var ds DbTStatusVo |
| | | err := c.BindJSON(&ds) |
| | | if err !=nil || ds.Id == "" || (ds.Enable !=0 && ds.Enable !=1) { |
| | | util.ResponseFormat(c,code.RequestParamError,"参数有误") |
| | | return |
| | | } |
| | | |
| | | var dtApi dbapi.DbTableApi |
| | | dts, err := dtApi.DbtablesById([]string{ds.Id}) |
| | | if err !=nil || dts == nil { |
| | | util.ResponseFormat(c,code.RequestParamError,"底库不存在") |
| | | return |
| | | } |
| | | if ds.Enable == 1 { |
| | | str := dts[0].StartTime |
| | | etr := dts[0].EndTime |
| | | ct := time.Now() |
| | | st, _ := time.ParseInLocation("2006-01-02 15:04:05", str, time.Local) |
| | | b := false |
| | | if etr != "" { |
| | | et,_ := time.ParseInLocation("2006-01-02 15:04:05", etr, time.Local) |
| | | if et.After(ct) && st.Before(ct) { |
| | | b = true |
| | | } |
| | | } else { |
| | | if st.Before(ct) { |
| | | b = true |
| | | } |
| | | } |
| | | //b 为true才允许开启 |
| | | if !b { |
| | | util.ResponseFormat(c,code.UpdateFail,"当前不允许启用") |
| | | return |
| | | } |
| | | } |
| | | |
| | | b,_ := dtApi.UpdateDbTableStatus(ds.Id, ds.Enable) |
| | | if b { |
| | | util.ResponseFormat(c,code.UpdateSuccess,"更新成功") |
| | | } else { |
| | | util.ResponseFormat(c,code.ComError,"更新失败") |
| | | } |
| | | } |
| | | |
| | | // @Security ApiKeyAuth |
| | | // @Summary 添加底库 |
| | | // @Description 添加同步或本地库 |
| | | // @Accept json |
| | |
| | | // @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 { |
| | | //code.ServiceInsideError.Message += result["msg"].(string) |
| | | util.ResponseFormat(c, code.ServiceInsideError, result["data"]) |
| | | if st.Before(currentTime) { |
| | | dbtable.Enable = 1 |
| | | } else { |
| | | dbtable.Enable = 0 |
| | | } |
| | | } |
| | | |
| | | logger.Debug("AddDbTableInfo dbtable.Enable:",dbtable.Enable,",startTime:",startTime,",endTime:",endTime,",st:",st,",curTime:",currentTime) |
| | | |
| | | 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, data) |
| | | } |
| | | } |
| | | |
| | | // @Security ApiKeyAuth |
| | | // @Summary 删除底库 |
| | | // @Description 删除同步或本地库 |
| | | // @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,"删除失败") |
| | | } |
| | | } |
| | | |