From b823f4e3e3e81666ef7400c87c21684dd6f6de2a Mon Sep 17 00:00:00 2001
From: liuxiaolong <736321739@qq.com>
Date: 星期四, 05 三月 2020 16:46:20 +0800
Subject: [PATCH] dbperson add car

---
 controllers/fileController.go |  123 ++++++++++++++++++++++-------------------
 1 files changed, 66 insertions(+), 57 deletions(-)

diff --git a/controllers/fileController.go b/controllers/fileController.go
index 7ac8606..e2495b9 100644
--- a/controllers/fileController.go
+++ b/controllers/fileController.go
@@ -3,14 +3,15 @@
 import (
 	"basic.com/dbapi.git"
 	"basic.com/fileServer/WeedFSClient.git"
+	esApi "basic.com/pubsub/esutil.git"
 	"basic.com/pubsub/protomsg.git"
+	"basic.com/valib/logger.git"
 	"bytes"
 	"encoding/base64"
 	"encoding/json"
 	"errors"
 	"fmt"
 	"github.com/gin-gonic/gin"
-	"github.com/satori/go.uuid"
 	"gocv.io/x/gocv"
 	"image"
 	"image/color"
@@ -18,7 +19,6 @@
 	"io/ioutil"
 	"log"
 	"mime/multipart"
-	"net/http"
 	"path"
 	"sort"
 	"strconv"
@@ -29,11 +29,9 @@
 	"webserver/extend/code"
 	"webserver/extend/config"
 	"webserver/extend/esutil"
-	"basic.com/valib/logger.git"
 	"webserver/extend/util"
 	"webserver/models"
 	"webserver/service"
-	esApi "basic.com/pubsub/esutil.git"
 )
 
 type FileController struct {
@@ -51,57 +49,64 @@
 //var weedfsUri = "http://192.168.1.182:9500/submit"
 
 // @Security ApiKeyAuth
-// @Summary 渚濇嵁鍥剧墖娣诲姞搴曞簱浜哄憳
-// @Description  渚濇嵁鍥剧墖娣诲姞搴曞簱杩斿洖鏁版嵁浜哄憳
+// @Summary 鍥剧墖涓婁紶
+// @Description  鍥剧墖涓婁紶
 // @Accept  multipart/form-data
 // @Produce json
-// @Tags dbperson 搴曞簱浜哄憳
-// @Param file formData file true "搴曞簱浜哄憳鍥剧墖"
-// @Param tableId formData string false "搴曞簱id,鏈塱d 鍒欏姞鍏ュ簳搴擄紝鏃犲垯鍙笂浼犲浘鐗�"
-// @Success 200 {string} json "{"code":200, msg:"鐩綍缁撴瀯鏁版嵁", success:true}"
-// @Failure 500 {string} json "{"code":500,  msg:"杩斿洖閿欒淇℃伅", success:false}"
+// @Tags 鍥剧墖涓婁紶
+// @Param file formData file true "鍥剧墖"
+// @Param picType formData 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/dbperson/fileupload [POST]
 func (fc FileController) Fileupload(c *gin.Context) {
 	//寰楀埌涓婁紶鐨勬枃浠�
 	file, header, err := c.Request.FormFile("file") //image杩欎釜鏄痷plaodify鍙傛暟瀹氫箟涓殑   'fileObjName':'image'
-	tableId := c.Request.FormValue("tableId")
-	if err != nil {
-		c.String(http.StatusBadRequest, "Bad request")
+	picType := c.Request.FormValue("picType") //鍥剧墖绫诲瀷
+	if err != nil || (picType != "0" && picType != "1") {
+		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎")
 		return
 	}
 	//鏂囦欢鐨勫悕绉�
 	filename := header.Filename
-	fmt.Println(file, err, filename)
-	if err != nil {
-		log.Fatal(err)
-		filename = uuid.NewV4().String()
-	}
-	// fastdfs
-	{
-		//fileSuffix := path.Ext(filename)[1:] //鑾峰彇鏂囦欢鍚庣紑
-		//fmt.Println("鏂囦欢鍚庣紑 =", fileSuffix)
-		//data, _ := ioutil.ReadAll(file)
-		// fastdfs 涓婁紶  鏆傚簾寮�
-		//field := fdfsclient.UploadFileByBuffer(data, fileSuffix)
-	}
-	fileNameOnly, result, err := uploadFileReturnAddr(file, filename, tableId)
-	if err != nil {
-		if err.Error() == "NotFeatureFindError" {
-			util.ResponseFormat(c, code.NotFeatureFindError, filename)
-		} else {
-			util.ResponseFormat(c, code.ServiceInsideError, err.Error())
+	var result = make(map[string]string)
+	if picType == "1" {
+		fileNameOnly, _, err, faceFeature := uploadFileReturnAddr(file, filename, "", false)
+		if err != nil {
+			if err.Error() == "NotFeatureFindError" {
+				util.ResponseFormat(c, code.NotFeatureFindError, filename)
+			} else {
+				util.ResponseFormat(c, code.ServiceInsideError, err.Error())
+			}
+			return
 		}
-		return
-	}
-	if tableId != "" { //  涓婁紶
-		if result["success"].(bool) {
-			util.ResponseFormat(c, code.Success, result["data"])
-		} else {
-			util.ResponseFormat(c, code.ServiceInsideError, result["data"])
-		}
+		result["picUrl"] = fileNameOnly
+		result["faceFeature"] = faceFeature
 	} else {
-		util.ResponseFormat(c, code.Success, fileNameOnly)
+		localConf, err2 := cache.GetServerInfo()
+		if err2 !=nil || localConf.WebPicIp == "" {
+			logger.Debug("localConfig is wrong!!!")
+			util.ResponseFormat(c,code.ComError,"")
+			return
+		}
+		defer file.Close()
+		// weedfs 涓婁紶
+		fileBytes, err := ioutil.ReadAll(file)
+		if err !=nil {
+			util.ResponseFormat(c,code.ComError,"")
+			return
+		}
+		var weedfsUri = "http://"+localConf.WebPicIp+":"+strconv.Itoa(int(localConf.WebPicPort))+"/submit?collection=persistent"
+		weedFilePath, e := WeedFSClient.UploadFile(weedfsUri, filename, fileBytes)
+		if e != nil {
+			logger.Debug("WeedFSClient.UploadFile err:", e)
+			util.ResponseFormat(c,code.ComError,"UploadFile err")
+			return
+		}
+		result["picUrl"] = weedFilePath
 	}
+
+	util.ResponseFormat(c, code.Success, result)
 }
 
 
@@ -774,24 +779,24 @@
 log.Fatalln(err)
 }*/
 
-func uploadFileReturnAddr(file multipart.File, filename string, tableId string) (string, map[string]interface{}, error) {
+func uploadFileReturnAddr(file multipart.File, filename string, tableId string, add2Db bool) (string, map[string]interface{}, error, string) {
 	defer file.Close()
 	// weedfs 涓婁紶
 	fileBytes, err := ioutil.ReadAll(file)
 	if err !=nil {
-		return "",nil,err
+		return "",nil,err,""
 	}
 
 	//灏嗕笂浼犵殑鍥剧墖浜や汉鑴告娴嬪拰浜鸿劯鎻愬彇锛岃幏寰楃壒寰�
 	var faceBase64=""
 	faceArr, err, pI := service.GetFaceFeaFromSdk(fileBytes, time.Second*5)
 	if faceArr ==nil {
-		return "",nil,errors.New("NotFeatureFindError")
+		return "",nil,errors.New("NotFeatureFindError"),""
 	}
 	var rcFace *protomsg.Rect
 	if err ==nil && len(faceArr) >0 {
 		if len(faceArr) >1 {
-			return "",nil, errors.New("TooManyFaces")
+			return "",nil, errors.New("TooManyFaces"),""
 		}
 		for _,r := range faceArr {
 			//鎷垮埌浜鸿劯鐨勫潗鏍�
@@ -804,7 +809,7 @@
 	localConf, err2 := cache.GetServerInfo()
 	if err2 !=nil || localConf.WebPicIp == "" {
 		logger.Debug("localConfig is wrong!!!")
-		return "",nil,err2
+		return "",nil,err2,""
 	}
 	var weedfsUri = "http://"+localConf.WebPicIp+":"+strconv.Itoa(int(localConf.WebPicPort))+"/submit?collection=persistent"
 	//鏍规嵁浜鸿劯鍧愭爣鎵e嚭浜鸿劯灏忓浘
@@ -817,22 +822,26 @@
 	t1 = time.Now()
 	if e != nil {
 		logger.Debug("WeedFSClient.UploadFile err:", e)
-		return "", nil, e
+		return "", nil, e,""
 	}
 
 	ext := path.Ext(filename)
 	fileNameOnly := strings.TrimSuffix(filename, ext)
 
-	dbperson := new(models.Dbtablepersons)
-	dbperson.PersonPicUrl = weedFilePath //  鍥剧墖璺粡
-	dbperson.TableId = tableId           //
-	dbperson.PersonName = fileNameOnly       // 鍥剧墖鍚�
-	dbperson.Enable = 1 //榛樿鏈夋晥
-	dbperson.FaceFeature = faceBase64 // 鐗瑰緛鍊糱ase64 鐮�
+	var result map[string]interface{}
+	if add2Db {
+		dbperson := new(models.Dbtablepersons)
+		dbperson.PersonPicUrl = weedFilePath //  鍥剧墖璺粡
+		dbperson.TableId = tableId           //
+		dbperson.PersonName = fileNameOnly       // 鍥剧墖鍚�
+		dbperson.Enable = 1 //榛樿鏈夋晥
+		dbperson.FaceFeature = faceBase64 // 鐗瑰緛鍊糱ase64 鐮�
 
-	result := addDbPerson(dbperson)
+		result = addDbPerson(dbperson)
+	}
+
 	logger.Debug("addDbPerson鐢ㄦ椂锛�", time.Since(t1))
-	return fileNameOnly, result, nil
+	return fileNameOnly, result, nil,faceBase64
 
 }
 
@@ -889,7 +898,7 @@
 				lock.Unlock()
 				return
 			}
-			field, _, err1 := uploadFileReturnAddr(file, filename, tableId)
+			field, _, err1,_ := uploadFileReturnAddr(file, filename, tableId, true)
 			lock.Lock()
 			if err1 != nil || field == "" {
 				if err1 !=nil && err1.Error() == "NotFeatureFindError" {

--
Gitblit v1.8.0