zhangzengfei
2024-05-29 332fc6ad5edca596ecd23876aa9db7452b45f804
controller/captureCtl.go
@@ -2,14 +2,17 @@
import (
   "encoding/base64"
   "gat1400Exchange/config"
   "gat1400Exchange/pkg"
   "gat1400Exchange/service"
   "fmt"
   "math/rand"
   "net/http"
   "strconv"
   "time"
   "gat1400Exchange/config"
   "gat1400Exchange/pkg"
   "gat1400Exchange/pkg/logger"
   "gat1400Exchange/repository"
   "gat1400Exchange/service"
   "gat1400Exchange/vo"
   "github.com/gin-gonic/gin"
@@ -45,7 +48,7 @@
   // 如果开启了下级, 身份应该是消息代理, 不再转发到服务器
   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)
   }
@@ -80,15 +83,17 @@
   videoLabel := req.VideoLabelListObject.VideoLabelObject[0]
   logger.Debug("Receive new 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 +109,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 +134,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 +153,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{