| | |
| | | |
| | | 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 { |
| | |
| | | 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 |
| | |
| | | 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 |
| | |
| | | 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 删除底库人员 |
| | |
| | | // @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 |
| | |
| | | // @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"]) |
| | | } |
| | | } |
| | | |
| | |
| | | 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" { |
| | |
| | | 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 查询库人员列表 |
| | |
| | | // @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 := "" |
| | |
| | | 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 |
| | | } |
| | | //输入框内容 |
| | |
| | | if tableId == "all" || tableId == "" { |
| | | // / 所有人员 |
| | | } else { |
| | | syncTerm = ",{\"term\":{\"tableId\":\"" + tableId + "\"}}" // 底库人员 |
| | | syncTerm = "{\"term\":{\"tableId\":\"" + tableId + "\"}}" // 底库人员 |
| | | } |
| | | if orderType == "desc" { |
| | | orderType = "desc" |
| | |
| | | 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) |
| | |
| | | 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) |
| | | } |
| | | |