package controllers import ( "basic.com/dbapi.git" "encoding/json" "strconv" "webserver/extend/logger" "github.com/gin-gonic/gin" "github.com/satori/go.uuid" "webserver/extend/code" "webserver/extend/config" "webserver/extend/esutil" "webserver/extend/util" "webserver/models" ) type DbPersonController struct { } // @Summary 添加底库人员 // @Description 添加底库人员 // @Accept json // @Produce json // @Tags dbperson 底库人员 // @Param obj body models.Dbtablepersons true "底库人员数据" // @Success 200 {object} json "{"code":200, msg:"目录结构数据", success:true}" // @Failure 500 {string} json "{"code":500, msg:"返回错误信息", success:false}" // @Failure 400 {object} json code.RequestParamError // @Router /data/api-v/dbperson/addDbPerson [PUT] func (dbc DbPersonController) AddDbPerson(c *gin.Context) { dbperson := new(models.Dbtablepersons) err := c.BindJSON(&dbperson) if err!=nil || dbperson.TableId == "" { // 底库id不存在 util.ResponseFormat(c,code.RequestParamError,"参数有误") return } var pApi dbapi.DbPersonApi paramBody := util.Struct2Map(dbperson) b, data := pApi.AddDbPerson(paramBody) if b { util.ResponseFormat(c, code.Success, data) } else { util.ResponseFormat(c, code.ServiceInsideError, "") } } func addDbPerson(dbperson *models.Dbtablepersons) (result map[string]interface{}) { personId := uuid.NewV4().String() dbperson.Id = personId dbperson.PriInsert() var pApi dbapi.DbPersonApi paramBody := util.Struct2Map(dbperson) b, _ := pApi.AddDbPerson(paramBody) result = map[string]interface{}{} if b { result["code"] = 200 data := make(map[string]interface{}) data["uuid"] = personId result["data"] = data result["success"] = true result["msg"] = "添加成功" } else { result["data"] = nil result["success"] = false result["msg"] = "服务器异常" result["code"] = 500 } return result } // @Summary 修改底库人员 // @Description 修改底库人员 // @Accept json // @Produce json // @Tags dbperson 底库人员 // @Param person body models.Dbtablepersons true "底库人员数据" // @Success 200 {string} json "{"code":200, msg:"目录结构数据", success:true}" // @Failure 500 {string} json "{"code":500, msg:"返回错误信息", success:false}" // @Router /data/api-v/dbperson/updateDbPerson [POST] func (dbc DbPersonController) UpdateDbPerson(c *gin.Context) { var dbperson models.Dbtablepersons err := c.BindJSON(&dbperson) if err !=nil || dbperson.Id == "" { util.ResponseFormat(c, code.RequestParamError, nil) return } dbperson.PriUpdate() var pApi dbapi.DbPersonApi paramBody := util.Struct2Map(dbperson) b, data := pApi.UpdateDbPerson(paramBody) if b { util.ResponseFormat(c, code.Success, data) } else { util.ResponseFormat(c, code.ServiceInsideError, "") } } func UpdateDbPersonsOfDbTable(id string) (message string) { url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport + "/" + config.EsInfo.EsIndex.Dbtablepersons.IndexName + "/_update_by_query?refresh" jsonDSL := ` { "script": { "lang": "painless", "inline": "ctx._source.enable = 0" }, "query": { "term": { "tableId": "` + id + `" } } } ` buf, err := esutil.EsReq("POST", url, []byte(jsonDSL)) if err != nil { logger.Debug("http request info is err!") message = "修改失败" } var info interface{} json.Unmarshal(buf, &info) out, ok := info.(map[string]interface{}) if !ok { logger.Debug("http response interface can not change map[string]interface{}") message = "修改失败" } middle, ok := out["updated"].(float64) if !ok { logger.Debug("first result change error!") message = "修改失败" } if middle >= 0 { logger.Debug("修改成功") message = "修改成功,更新状态条数为" + strconv.Itoa(int(middle)) } return message } // @Summary 删除底库人员 // @Description 删除库人员 // @Accept x-www-form-urlencoded // @Produce json // @Tags dbperson 底库人员 // @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/dbperson/deleteDbPersonById/{uuid} [POST] func (dbc DbPersonController) DeleteDbPerson(c *gin.Context) { id := c.Params.ByName("uuid") if id == "" { util.ResponseFormat(c,code.RequestParamError,"参数有误") return } var pApi dbapi.DbPersonApi b, data := pApi.DeleteDbPerson(id) if b { util.ResponseFormat(c, code.Success, data) } else { util.ResponseFormat(c, code.ServiceInsideError, "删除失败") } } // @Summary 删除底库人员 // @Description 删除库人员 // @Accept json // @Produce json // @Tags dbperson 底库人员 // @Param uuids body []string true "底库人员ids " // @Success 200 {string} json "{"code":200, msg:"目录结构数据", success:true}" // @Failure 500 {string} json "{"code":500, msg:"返回错误信息", success:false}" // @Router /data/api-v/dbperson/deleteMoreDbPerson [POST] func (dbc DbPersonController) DeleteMoreDbPerson(c *gin.Context) { uuids := make([]string, 0, 5) err := c.BindJSON(&uuids) if err !=nil || len(uuids)==0{ util.ResponseFormat(c,code.RequestParamError,"参数有误") return } var pApi dbapi.DbPersonApi paramBody := util.Struct2Map(uuids) b, _ := pApi.DeleteMoreDbPerson(paramBody) if b { util.ResponseFormat(c, code.Success, "删除底库人员成功") } else { util.ResponseFormat(c, code.ServiceInsideError, "删除失败") } } // @Summary 查询底库人员列表 // @Description 查询库人员列表 // @Accept json // @Produce json // @Tags dbperson 底库人员 // @Param reqMap body map false "{"tableId":"","orderName":"uuid","orderType":"desc","contentValue":"","page":1,"size":8}" // @Success 200 {string} json "{"code":200, "msg":"目录结构数据", "success":true,"data":{}}" // @Failure 500 {string} json "{code:500, msg:"返回错误信息", success:false,data:{}}" // @Router /data/api-v/dbperson/queryDbPersonsByTbId [POST] func (dbc DbPersonController) QueryDbPersonsByTbId(c *gin.Context) { reqBody := make(map[string]interface{}, 5) c.BindJSON(&reqBody) tableId := "" if reqBody["tableId"] != nil { tableId = reqBody["tableId"].(string) } if tableId == "" { util.ResponseFormat(c,code.RequestParamError,"参数有误,底库id不能为空") return } orderName := "id" if reqBody["orderName"] != nil { orderName = reqBody["orderName"].(string) } // 列名 orderType := "desc" if reqBody["orderType"] != nil { orderType = reqBody["orderType"].(string) } // 列类型 contentValue := "" if reqBody["contentValue"] != nil { contentValue = reqBody["contentValue"].(string) } //输入框内容 page := 1 if reqBody["page"] != nil { page = int(reqBody["page"].(float64)) } // 页码 size := 8 if reqBody["size"] != nil { size = int(reqBody["size"].(float64)) } // 条数 if tableId == "all" || tableId == "" { // / 所有人员 } if orderType == "desc" { orderType = "desc" } else { orderType = "asc" } var pApi dbapi.DbPersonApi paramBody := map[string]interface{}{ "tableId":tableId, "orderName":orderName, "orderType":orderType, "contentValue":contentValue, "page":page, "size":size, } b, data := pApi.QueryDbPersonsByTbId(paramBody) if b{ util.ResponseFormat(c,code.Success,data) } else { util.ResponseFormat(c,code.ComError,[]interface{}{}) } } // @Summary 查询底库人员列表 // @Description 查询库人员列表 // @Accept json // @Produce json // @Tags dbperson 底库人员 // @Param reqMap body map false "{"tableId":"","orderName":"uuid","orderType":"desc","contentValue":"","page":1,"size":8}" // @Success 200 {string} json "{"code":200, "msg":"目录结构数据", "success":true,"data":{}}" // @Failure 500 {string} json "{code:500, msg:"返回错误信息", success:false,data:{}}" // @Router /data/api-v/dbperson/queryDbPersonsByCampare [POST] func (dbc DbPersonController) QueryDbPersonsByCampare(c *gin.Context) { url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport + "/" + config.EsInfo.EsIndex.Dbtablepersons.IndexName + "/_search" // ?refresh=wait_for reqBody := make(map[string]interface{}, 5) c.BindJSON(&reqBody) tableId := "" if reqBody["tableId"] != nil { tableId = reqBody["tableId"].(string) } orderName := "_id" if reqBody["orderName"] != nil { orderName = reqBody["orderName"].(string) } // 列名 orderType := "desc" if reqBody["orderType"] != nil { orderType = reqBody["orderType"].(string) } // 列类型 faceUrl := "" var threshold float32 if reqBody["faceUrl"] != nil && reqBody["threshold"] != nil { faceUrl = reqBody["faceUrl"].(string) threshold = float32(reqBody["threshold"].(float64)) } else { util.ResponseFormat(c, code.RequestParamError, nil) // 图片路径有问题 return } //输入框内容 page := 1 if reqBody["page"] != nil { page = int(reqBody["page"].(float64)) } // 页码 size := 8 if reqBody["size"] != nil { size = int(reqBody["size"].(float64)) } // 条数 from := (page - 1) * size syncTerm := "" contentParam := "" if tableId == "all" || tableId == "" { // / 所有人员 } else { syncTerm = "{\"term\":{\"tableId\":\"" + tableId + "\"}}" // 底库人员 } if orderType == "desc" { orderType = "desc" } else { orderType = "asc" } //params := "{\"query\":{\"bool\":{\"filter\":[" + // "{\"term\":{\"isDelete\":\"0\"}}" + syncTerm + "]" + contentParam + "}},\"from\":" + strconv.Itoa(from) + ",\"size\":" + strconv.Itoa(size) + ",\"sort\":{\"" + orderName + "\":{\"order\":\"" + orderType + "\"}}}" params := "{\"query\":{\"bool\":{\"must_not\":[" + "{\"term\":{\"isDelete\":\"1\"}}],\"filter\":[" + syncTerm + "]" + contentParam + "}},\"from\":" + strconv.Itoa(from) + ",\"size\":" + strconv.Itoa(size) + ",\"sort\":{\"" + orderName + "\":{\"order\":\"" + orderType + "\"}}}" logger.Debug("请求url:%s;\n 请求参数params:%s", url, params) data := esutil.GetEsDataReq(url, params, true) featByte := make([]byte, 0, 1024) if len(faceUrl) > 3 { // linux /*fileName := picUrl // picIp 定义在 fileController weedfs 文件服务器 访问 路径 前缀 detect := gorun.GetSimpleFaceDetect(fileName) if len(detect) != 1 { util.ResponseFormat(c,code.TooManyFeatureFindError,"图片特征值过多") return }else { featByte = detect[0]["feature"].([]byte) }*/ // linux } to := page * size datalist := sourceCompare(data["datalist"].([]interface{}), false, featByte, threshold) total := len(datalist) if from > total { from = total } if to > total { to = total } data["datalist"] = datalist[from:to] data["total"] = len(datalist) //c.JSON(200, data) util.ResponseFormat(c, code.Success, data) }