From 5bf9f5cc0ad2689de4e34d628d8ac3168df5142a Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期五, 23 八月 2024 17:41:41 +0800
Subject: [PATCH] 修复编译bug
---
controller/captureCtl.go | 128 ++++++++++++++++++++++++++++++++++--------
1 files changed, 103 insertions(+), 25 deletions(-)
diff --git a/controller/captureCtl.go b/controller/captureCtl.go
index a6fc5cb..79efc0f 100644
--- a/controller/captureCtl.go
+++ b/controller/captureCtl.go
@@ -2,14 +2,19 @@
import (
"encoding/base64"
- "gat1400Exchange/config"
- "gat1400Exchange/pkg"
- "gat1400Exchange/service"
+ "fmt"
+ "math/rand"
"net/http"
+ "path"
+ "strconv"
"time"
+ "gat1400Exchange/config"
+ "gat1400Exchange/pkg"
"gat1400Exchange/pkg/logger"
"gat1400Exchange/repository"
+ "gat1400Exchange/service"
+ "gat1400Exchange/util"
"gat1400Exchange/vo"
"github.com/gin-gonic/gin"
@@ -41,17 +46,44 @@
}
face := req.FaceListObject.FaceObject[0]
- logger.Debug("Receive new message, Id:%s Ip:%s faceId:%s, LeftTopX:%d, appearTime:%s", c.RemoteIP(), face.DeviceID, face.FaceID, face.LeftTopX, face.FaceAppearTime)
+ logger.Debug("Receive new face message, ip:%s, device id:%s faceId:%s, LeftTopX:%d, appearTime:%s", c.RemoteIP(), face.DeviceID, face.FaceID, face.LeftTopX, face.FaceAppearTime)
+
+ if config.ClientConf.UploadType == "url" {
+ for idx, img := range face.SubImageList.SubImageInfoObject {
+ if img.Type != "14" {
+ continue
+ }
+
+ imageBytes, err := base64.StdEncoding.DecodeString(img.Data)
+ if err != nil {
+ logger.Warn("Decode Small Image Base64 String failure, %s", err.Error())
+ c.AbortWithStatus(http.StatusBadRequest)
+ return
+ }
+
+ today := time.Now().Format("2006-01-02")
+ imagePath := path.Join(config.LogConf.Path, "gat1400_face_images", today, img.ImageID+".jpeg")
+ err = util.WriteToFile(imagePath, imageBytes)
+ if err == nil {
+ face.SubImageList.SubImageInfoObject[idx].Data = ""
+ face.SubImageList.SubImageInfoObject[idx].StoragePath = config.ImageConf.ImageUriPrefix + "/" + today + "/" + img.ImageID + ".jpeg"
+ }
+ }
+ }
// 濡傛灉寮�鍚簡涓嬬骇, 韬唤搴旇鏄秷鎭唬鐞�, 涓嶅啀杞彂鍒版湇鍔″櫒
if config.ClientConf.Enable && config.ServeConf.Role == "agent" {
- go a.Repository.VIIDMsgForward(&req)
+ go a.Repository.VIIDFaceMsgForward(&req)
} else if config.ServeConf.Role == "cascade" {
go service.AddFaceNotification(&face)
}
if config.ForwardConf.SyncServer != "" {
go a.Repository.FaceForward(req.FaceListObject.FaceObject)
+ }
+
+ if config.ForwardConf.RecordServer != "" {
+ go a.Repository.PubRecordMessage(face.DeviceID, face.FaceID)
}
rspMsg := vo.ResponseStatus{
@@ -78,17 +110,19 @@
}
videoLabel := req.VideoLabelListObject.VideoLabelObject[0]
- logger.Debug("Receive new message, Id:%s Ip:%s ", videoLabel.VideoLabelID, c.RemoteIP())
+ logger.Debug("Receive new videoLabel message, Id:%s Ip:%s ", videoLabel.VideoLabelID, c.RemoteIP())
- // 杞汉鑴告秷鎭�
- var face vo.FaceObject
- face.FaceID = videoLabel.VideoLabelID
- face.InfoKind = 1
- face.SourceID = videoLabel.VideoImageID
- face.DeviceID = videoLabel.IVADeviceID
- face.LocationMarkTime = videoLabel.CreateTimeAbs
- face.FaceAppearTime = videoLabel.BehaviorAnalysisObject.BehaviorBeginTime
- face.FaceDisAppearTime = videoLabel.BehaviorAnalysisObject.BehaviorEndTime
+ // 杞汉鍛樻秷鎭�
+ var person vo.PersonObject
+ person.PersonID = videoLabel.VideoLabelID[0:41] + "01" + videoLabel.VideoLabelID[43:48]
+ person.InfoKind = "1"
+ person.DeviceID = videoLabel.IVADeviceID
+ person.SourceID = videoLabel.VideoImageID
+ person.LocationMarkTime = videoLabel.BehaviorAnalysisObject.BehaviorBeginTime
+ person.PersonAppearTime = videoLabel.BehaviorAnalysisObject.BehaviorBeginTime
+ person.PersonDisAppearTime = videoLabel.BehaviorAnalysisObject.BehaviorEndTime
+ person.IsDriver = 2
+ person.IsCriminalInvolved = 2
var hasTargetImage bool
var bgImageWith, bgImageHeight int
@@ -104,8 +138,8 @@
bgImage = &videoLabel.SubImageList.SubImageInfoObject[idx]
}
- face.SubImageList.SubImageInfoObject = append(
- face.SubImageList.SubImageInfoObject,
+ person.SubImageList.SubImageInfoObject = append(
+ person.SubImageList.SubImageInfoObject,
videoLabel.SubImageList.SubImageInfoObject[idx],
)
}
@@ -129,8 +163,15 @@
return
}
+ imageId := bgImage.ImageID[37:41]
+ imageNumber, err := strconv.Atoi(imageId)
+ if err != nil {
+ imageNumber = rand.Intn(90000) + 10000
+ } else {
+ imageNumber++
+ }
var subImageInfo = vo.SubImageInfoObject{
- ImageID: bgImage.ImageID + "1",
+ ImageID: fmt.Sprintf("%s%d", bgImage.ImageID[0:37], imageNumber),
EventSort: 10,
DeviceID: bgImage.DeviceID,
StoragePath: "",
@@ -141,23 +182,23 @@
Height: subRect.Top - subRect.Bottom,
Data: base64.StdEncoding.EncodeToString(subImage),
}
- face.SubImageList.SubImageInfoObject = append(
- face.SubImageList.SubImageInfoObject,
+ person.SubImageList.SubImageInfoObject = append(
+ person.SubImageList.SubImageInfoObject,
subImageInfo,
)
}
// 濡傛灉寮�鍚簡涓嬬骇, 韬唤搴旇鏄秷鎭唬鐞�, 涓嶅啀杞彂鍒版湇鍔″櫒
if config.ClientConf.Enable && config.ServeConf.Role == "agent" {
- var faceObjList vo.RequestFaceList
- faceObjList.FaceListObject.FaceObject = append(faceObjList.FaceListObject.FaceObject, face)
- go a.Repository.VIIDMsgForward(&faceObjList)
+ var personList vo.RequestPersonList
+ personList.PersonListObject.PersonObject = append(personList.PersonListObject.PersonObject, person)
+ go a.Repository.VIIDPersonMsgForward(&personList)
} else if config.ServeConf.Role == "cascade" {
- go service.AddFaceNotification(&face)
+ go service.AddPersonNotification(&person)
}
if config.ForwardConf.SyncServer != "" {
- go a.Repository.FaceForward([]vo.FaceObject{face})
+ go a.Repository.PersonForward([]vo.PersonObject{person})
}
rspMsg := vo.ResponseStatus{
@@ -170,3 +211,40 @@
c.JSON(http.StatusOK, gin.H{"ResponseStatusObject": rspMsg})
}
+
+func (a CaptureController) Persons(c *gin.Context) {
+ var req vo.RequestPersonList
+ if err := c.BindJSON(&req); err != nil {
+ c.AbortWithStatus(http.StatusBadRequest)
+ return
+ }
+
+ if len(req.PersonListObject.PersonObject) == 0 {
+ c.AbortWithStatus(http.StatusBadRequest)
+ return
+ }
+
+ person := req.PersonListObject.PersonObject[0]
+ logger.Debug("Receive new person message, ip:%s, device Id:%s personId:%s, appearTime:%s", c.RemoteIP(), person.DeviceID, person.PersonID, person.PersonAppearTime)
+
+ // 濡傛灉寮�鍚簡涓嬬骇, 韬唤搴旇鏄秷鎭唬鐞�, 涓嶅啀杞彂鍒版湇鍔″櫒
+ if config.ClientConf.Enable && config.ServeConf.Role == "agent" {
+ go a.Repository.VIIDPersonMsgForward(&req)
+ } else if config.ServeConf.Role == "cascade" {
+ go service.AddPersonNotification(&person)
+ }
+
+ if config.ForwardConf.SyncServer != "" {
+ go a.Repository.PersonForward(req.PersonListObject.PersonObject)
+ }
+
+ rspMsg := vo.ResponseStatus{
+ RequestURL: c.FullPath(),
+ StatusCode: vo.StatusSuccess,
+ StatusString: vo.StatusString[vo.StatusSuccess],
+ Id: person.PersonID,
+ LocalTime: time.Now().Format("20060102150405"),
+ }
+
+ c.JSON(http.StatusOK, gin.H{"ResponseStatusObject": rspMsg})
+}
--
Gitblit v1.8.0