From 9298b8b7228af9c07872b41bffc894a6d9dd4e59 Mon Sep 17 00:00:00 2001
From: liuxiaolong <736321739@qq.com>
Date: 星期四, 29 八月 2019 14:12:27 +0800
Subject: [PATCH] add UpdateFace

---
 controllers/dbtableperson.go |   76 ++++++++++++++++++++++++++++++++++++++
 1 files changed, 76 insertions(+), 0 deletions(-)

diff --git a/controllers/dbtableperson.go b/controllers/dbtableperson.go
index 22327b9..966de9d 100644
--- a/controllers/dbtableperson.go
+++ b/controllers/dbtableperson.go
@@ -2,9 +2,15 @@
 
 import (
 	"basic.com/dbapi.git"
+	"basic.com/fileServer/WeedFSClient.git"
+	"basic.com/pubsub/protomsg.git"
+	"encoding/base64"
 	"encoding/json"
+	"io/ioutil"
 	"strconv"
+	"time"
 	"webserver/extend/logger"
+	"webserver/service"
 
 	"github.com/gin-gonic/gin"
 	"github.com/satori/go.uuid"
@@ -98,6 +104,76 @@
 	}
 }
 
+// @Summary 鏇存柊搴曞簱浜鸿劯鐓х墖
+// @Description 鏇存柊搴曞簱浜鸿劯鐓х墖
+// @Accept  json
+// @Produce json
+// @Tags 搴曞簱浜哄憳
+// @Param id formData string true "浜哄憳id"
+// @Param file formData file true "浜鸿劯鍥剧墖"
+// @Success 200 {string} json "{"code":200, msg:"", success:true}"
+// @Failure 500 {string} json "{"code":500, msg:"", success:false}"
+// @Router /data/api-v/dbperson/updateFace [POST]
+func (dbc DbPersonController) UpdateFace(c *gin.Context) {
+	file, header, err := c.Request.FormFile("file")
+	id := c.Request.FormValue("id")
+	if err != nil || id == "" {
+		util.ResponseFormat(c,code.RequestParamError,"鍙傛暟鏈夎")
+		return
+	}
+	//鏂囦欢鐨勫悕绉�
+	filename := header.Filename
+	defer file.Close()
+	// weedfs 涓婁紶
+	fileBytes, err := ioutil.ReadAll(file)
+	if err !=nil {
+		util.ResponseFormat(c,code.ComError,"鍥剧墖璇诲彇澶辫触")
+		return
+	}
+
+	//灏嗕笂浼犵殑鍥剧墖浜や汉鑴告娴嬪拰浜鸿劯鎻愬彇锛岃幏寰楃壒寰�
+	var faceBase64=""
+	faceArr, err, pI := service.GetFaceFeaFromSdk(fileBytes, time.Second*5)
+	if faceArr ==nil {
+		util.ResponseFormat(c,code.ComError,"鏈埌鎻愬彇浜鸿劯")
+		return
+	}
+	var rcFace *protomsg.Rect
+	if err ==nil && len(faceArr) >0 {
+		if len(faceArr) >1 {
+			util.ResponseFormat(c,code.ComError,"浜鸿劯澶т簬涓�寮狅紝璇锋崲涓�寮犱汉鑴稿浘鐗�")
+			return
+		}
+		for _,r := range faceArr {
+			//鎷垮埌浜鸿劯鐨勫潗鏍�
+			rcFace = r.Pos.RcFace
+
+			faceBase64 = base64.StdEncoding.EncodeToString(r.Feats)//鑾峰彇鎻愬彇鍒扮殑绗竴寮犱汉鑴哥壒寰�
+			break
+		}
+	}
+	var weedfsUri = "http://"+config.WeedFs.Ip+":"+strconv.Itoa(config.WeedFs.UploadPort)+"/submit"
+	//鏍规嵁浜鸿劯鍧愭爣鎵e嚭浜鸿劯灏忓浘
+	t1 := time.Now()
+	cutFaceImgData := util.SubImg(*pI, int(rcFace.Left), int(rcFace.Top), int(rcFace.Right), int(rcFace.Bottom))
+	logger.Debug("SubImg鐢ㄦ椂锛�", time.Since(t1))
+	t1 = time.Now()
+	weedFilePath, e := WeedFSClient.UploadFile(weedfsUri, filename, cutFaceImgData)
+	logger.Debug("涓婁紶鍒皐eedfs鐢ㄦ椂:", time.Since(t1))
+	t1 = time.Now()
+	if e != nil {
+		util.ResponseFormat(c,code.ComError,"浜鸿劯涓婁紶澶辫触")
+		return
+	}
+	var dbpApi dbapi.DbPersonApi
+	b,d := dbpApi.UpdateFace(id,faceBase64,weedFilePath)
+	if b {
+		util.ResponseFormat(c,code.UpdateSuccess,d)
+	} else {
+		util.ResponseFormat(c,code.UpdateFail,"鏇存柊浜鸿劯澶辫触")
+	}
+}
+
 func UpdateDbPersonsOfDbTable(id string) (message string) {
 	url := "http://" + config.EsInfo.Masterip + ":" + config.EsInfo.Httpport +
 		"/" + config.EsInfo.EsIndex.Dbtablepersons.IndexName + "/_update_by_query?refresh"

--
Gitblit v1.8.0