liuxiaolong
2019-08-16 4622e4986f10bcb6fbccff97b04c225d7dcf58fe
controllers/dbtableperson.go
@@ -2,18 +2,18 @@
import (
   "encoding/json"
   "fmt"
   "log"
   "strconv"
   "time"
   "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"
   "github.com/satori/go.uuid"
)
type DbPersonController struct {
@@ -49,17 +49,27 @@
func addDbPerson(dbperson *models.Dbtablepersons) (result map[string]interface{}) {
   personId := uuid.NewV4().String() //  以后替代 依据生成规则
   dbperson.Uuid = personId
   dbperson.Id = personId
   dbperson.PriInsert()
   url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
      "/" + config.EsInfo.EsIndex.Dbtablepersons.IndexName + "/" + config.EsInfo.EsIndex.Dbtablepersons.IndexType + "/" + personId+"?refresh=wait_for"
      "/" + config.EsInfo.EsIndex.Dbtablepersons.IndexName + "/" + config.EsInfo.EsIndex.Dbtablepersons.IndexType + "/" + personId + "?refresh=wait_for"
   personbytes, e := json.Marshal(dbperson)
   if e != nil {
      fmt.Print("Json marshaling failed:%s\n", e)
      logger.Debug("Json marshaling failed:%s\n", e)
   }
   params := string(personbytes)
   fmt.Print("请求url:%s;\n 请求参数params:%s", url, params)
   data ,_ := esutil.PutEsDataReq(url, params)
   data, _ := esutil.PutEsDataReq(url, params)
   //if data["_id"] !=""{
   //   //通知比对进程缓存更新
   //   discovery.AddDbMessage(&protomsg.EsPersonCacheChange{
   //      Type: protomsg.EsCacheChanged_T_DbTablePerson,
   //      PersonId: personId,
   //      TableId: []string{ dbperson.TableId },
   //      Feature: dbperson.FaceFeature,
   //      Action: protomsg.DbAction_Insert,
   //   })
   //}
   //c.JSON(200, changeEsRespData(data, "添加人员成功"))
   result = changeEsRespData(data, "添加成功")
   return result
@@ -77,7 +87,7 @@
func (dbc DbPersonController) UpdateDbPerson(c *gin.Context) {
   var dbperson models.Dbtablepersons
   c.BindJSON(&dbperson)
   personid := dbperson.Uuid
   personid := dbperson.Id
   if personid == "" {
      util.ResponseFormat(c, code.RequestParamError, nil)
      return
@@ -89,19 +99,76 @@
   if err != nil {
      log.Fatalf("Json marshaling failed:%s", err)
   }
   //fmt.Printf("%s\n", dbTableByte)
   //logger.Debugf("%s\n", dbTableByte)
   params := "{\"doc\":" + string(dbTableByte) + "}"
   fmt.Print("请求url:%s;\n 请求参数params:%s", url, params)
   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 = "修改底库人员成功"
      //if dbperson.Enable == 1 {
      //   discovery.AddDbMessage(&protomsg.EsPersonCacheChange{
      //      Type: protomsg.EsCacheChanged_T_DbTablePerson,
      //      PersonId: dbperson.Id,
      //      TableId: []string{ dbperson.TableId },
      //      Feature: "",
      //      Action: protomsg.DbAction_Insert,
      //   })
      //} else {
      //   discovery.AddDbMessage(&protomsg.EsPersonCacheChange{
      //      Type: protomsg.EsCacheChanged_T_DbTablePerson,
      //      PersonId: dbperson.Id,
      //      TableId: []string{ dbperson.TableId },
      //      Feature: "",
      //      Action: protomsg.DbAction_Delete,
      //   })
      //}
      util.ResponseFormat(c, code.Success, result["data"])
   } else {
      //code.ServiceInsideError.Message += result["msg"].(string)
      util.ResponseFormat(c, code.ServiceInsideError, result["data"])
   }
}
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 删除底库人员
@@ -113,23 +180,41 @@
// @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) {
   uuid := c.Params.ByName("uuid")
   url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
      "/" + config.EsInfo.EsIndex.Dbtablepersons.IndexName + "/" + config.EsInfo.EsIndex.Dbtablepersons.IndexType + "/" + uuid + "/_update?refresh=wait_for"
   params := "{\"doc\":{\"del_flag\":\"1\",\"update_time\":\"" + time.Now().Format("2006-01-02 15:04:05") + "\"}}"
   fmt.Print("删除请求url:%s;\n 请求参数params:%s", url, params)
   params := "{\"doc\":{\"isDelete\":\"1\",\"updateTime\":\"" + time.Now().Format("2006-01-02 15:04:05") + "\"}}"
   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 = "删除底库人员成功"
      //通知比对进程,此人已删除
      //dbperArr, e := esApi.Dbpersoninfosbyid([]string{uuid}, config.EsInfo.EsIndex.Dbtablepersons.IndexName, config.EsInfo.Masterip, config.EsInfo.Httpport)
      //if e ==nil && len(dbperArr) > 0{
      //   if dbperArr[0].TableId !=""{
      //      discovery.AddDbMessage(&protomsg.EsPersonCacheChange{
      //         Type: protomsg.EsCacheChanged_T_DbTablePerson,
      //         PersonId: uuid,
      //         TableId: []string{ dbperArr[0].TableId },
      //         Feature: "",
      //         Action: protomsg.DbAction_Delete,
      //      })
      //   }
      //}
      util.ResponseFormat(c, code.Success, result["data"])
   } else {
      //code.ServiceInsideError.Message += result["msg"].(string)
      util.ResponseFormat(c, code.ServiceInsideError, result["data"])
   }
}
// @Summary 删除底库人员
// @Description 删除库人员
// @Accept  json
@@ -139,25 +224,39 @@
// @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)
func (dbc DbPersonController) DeleteMoreDbPerson(c *gin.Context) {
   uuids := make([]string, 0, 5)
   c.BindJSON(&uuids)
   bytes, _ := json.Marshal(uuids)
   s := string(bytes)
   url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
      "/" + config.EsInfo.EsIndex.Dbtablepersons.IndexName + "/_update_by_query?refresh=wait_for"  //   + config.EsInfo.EsIndex.Dbtablepersons.IndexType + "/"  + "/" + s
   params := "{\"script\":{\"lang\":\"painless\",\"inline\":\"ctx._source.del_flag = \\\"1\\\";" +
      "ctx._source.update_time = \\\"" + time.Now().Format("2006-01-02 15:04:05") + "\\\"\"},\"query\":{\"terms\":{\"_id\":"+s+"}}}"
   fmt.Print("删除请求url:%s;\n 请求参数params:%s", url, params)
      "/" + config.EsInfo.EsIndex.Dbtablepersons.IndexName + "/_update_by_query?refresh" //   + config.EsInfo.EsIndex.Dbtablepersons.IndexType + "/"  + "/" + s
   params := "{\"script\":{\"lang\":\"painless\",\"inline\":\"ctx._source.isDelete = \\\"1\\\";" +
      "ctx._source.updateTime = \\\"" + time.Now().Format("2006-01-02 15:04:05") + "\\\"\"},\"query\":{\"terms\":{\"_id\":" + s + "}}}"
   logger.Debug("删除请求url:%s;\n 请求参数params:%s", url, params)
   data := esutil.GetEsDataReq(url, params, false)
   //c.JSON(200, changeEsRespData(data,"删除成功"))
   //result := changeEsRespData(data, "删除成功")
   if data["error"] == nil {
      //code.Success.Message = "删除底库人员成功"
      util.ResponseFormat(c, code.Success,"删除底库人员成功" )
      //dbperArr, e := esApi.Dbpersoninfosbyid(uuids, config.EsInfo.EsIndex.Dbtablepersons.IndexName, config.EsInfo.Masterip, config.EsInfo.Httpport)
      //if e ==nil && len(dbperArr) > 0{
      //   for _,esPer :=range dbperArr {
      //      if esPer.TableId !=""{
      //         discovery.AddDbMessage(&protomsg.EsPersonCacheChange{
      //            Type: protomsg.EsCacheChanged_T_DbTablePerson,
      //            PersonId: esPer.Id,
      //            TableId: []string{ esPer.TableId },
      //            Feature: "",
      //            Action: protomsg.DbAction_Delete,
      //         })
      //      }
      //   }
      //}
      util.ResponseFormat(c, code.Success, "删除底库人员成功")
   } else {
      //code.ServiceInsideError.Message += result["msg"].(string)
      util.ResponseFormat(c, code.ServiceInsideError,data["error"])
      util.ResponseFormat(c, code.ServiceInsideError, data["error"])
   }
}
@@ -205,11 +304,11 @@
   if tableId == "all" || tableId == "" {
      // / 所有人员
   } else {
      syncTerm = ",{\"term\":{\"tableId\":\"" + tableId + "\"}}" // 底库人员
      syncTerm = "{\"term\":{\"tableId\":\"" + tableId + "\"}}" // 底库人员
   }
   if contentValue != "" {
      contentParam = ",\"must\":[{\"multi_match\":{\"query\":\"" + contentValue + "\",\"type\":\"best_fields\"," +
         "\"fields\":[\"personName\",\"sex\",\"idcard\",\"phoneNum\"],\"tie_breaker\":0.3}}]"
         "\"fields\":[\"personName\",\"sex\",\"idCard\",\"phoneNum\"],\"tie_breaker\":0.3}}]"
   }
   if orderType == "desc" {
@@ -218,14 +317,12 @@
      orderType = "asc"
   }
   params := "{\"query\":{\"bool\":{\"filter\":[" +
      "{\"term\":{\"del_flag\":\"0\"}}" + syncTerm + "]" + contentParam + "}},\"from\":" + strconv.Itoa(from) + ",\"size\":" + strconv.Itoa(size) + ",\"sort\":{\"" + orderName + "\":{\"order\":\"" + orderType + "\"}}}"
   fmt.Print("请求url:%s;\n 请求参数params:%s", url, params)
   params := "{\"query\":{\"bool\":{\"must_not\":[" +
      "{\"term\":{\"isDelete\":\"1\"}}],\"filter\":[" + syncTerm + "]" + contentParam + "}},\"from\":" + strconv.Itoa(from) + ",\"size\":" + strconv.Itoa(size) + ",\"sort\":{\"" + orderName + "\":{\"order\":\"" + orderType + "\"}}}"
   data := esutil.GetEsDataReq(url, params, true)
   //c.JSON(200, data)
   util.ResponseFormat(c, code.Success, data)
}
// @Summary 查询底库人员列表
// @Description 查询库人员列表
@@ -238,7 +335,7 @@
// @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
      "/" + config.EsInfo.EsIndex.Dbtablepersons.IndexName + "/_search" // ?refresh=wait_for
   reqBody := make(map[string]interface{}, 5)
   c.BindJSON(&reqBody)
   tableId := ""
@@ -253,12 +350,13 @@
   if reqBody["orderType"] != nil {
      orderType = reqBody["orderType"].(string)
   } // 列类型
   faceUrl := ""; var  threshold float32
   if reqBody["faceUrl"] != nil && reqBody["threshold"] != nil{
   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);  // 图片路径有问题
   } else {
      util.ResponseFormat(c, code.RequestParamError, nil) // 图片路径有问题
      return
   }
   //输入框内容
@@ -276,7 +374,7 @@
   if tableId == "all" || tableId == "" {
      // / 所有人员
   } else {
      syncTerm = ",{\"term\":{\"tableId\":\"" + tableId + "\"}}" // 底库人员
      syncTerm = "{\"term\":{\"tableId\":\"" + tableId + "\"}}" // 底库人员
   }
   if orderType == "desc" {
      orderType = "desc"
@@ -284,11 +382,13 @@
      orderType = "asc"
   }
   params := "{\"query\":{\"bool\":{\"filter\":[" +
      "{\"term\":{\"del_flag\":\"0\"}}" + syncTerm + "]" + contentParam + "}},\"from\":" + strconv.Itoa(from) + ",\"size\":" + strconv.Itoa(size) + ",\"sort\":{\"" + orderName + "\":{\"order\":\"" + orderType + "\"}}}"
   fmt.Print("请求url:%s;\n 请求参数params:%s", url, params)
   //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)
   featByte := make([]byte, 0, 1024)
   if len(faceUrl) > 3 { //   linux
      /*fileName := picUrl   // picIp 定义在 fileController weedfs 文件服务器 访问 路径 前缀
      detect := gorun.GetSimpleFaceDetect(fileName)
@@ -299,14 +399,17 @@
         featByte = detect[0]["feature"].([]byte)
      }*/ //   linux
   }
   to := page*size
   datalist := sourceCompare(data["datalist"].([]interface{}),false,featByte,threshold )
   to := page * size
   datalist := sourceCompare(data["datalist"].([]interface{}), false, featByte, threshold)
   total := len(datalist)
   if from > total { from = total }
   if to > total {   to = total }
   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)
}