package controllers import ( "basic.com/dbapi.git" "basic.com/valib/logger.git" "github.com/gin-gonic/gin" "github.com/satori/go.uuid" "time" "webserver/extend/code" "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}" // @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{}{}) } } // @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 // @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 == "" || (dbtable.Enable !=0 && dbtable.Enable !=1) { 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"]) //} } 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 // @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) { 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 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 }