From 5b6c7ec8a47ba7f3d25378b3ff4d0e9db3de724e Mon Sep 17 00:00:00 2001 From: oldsheeppp Date: Thu, 7 Nov 2024 22:12:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=B0=8F=E7=BB=86=E8=8A=82?= =?UTF-8?q?=E7=9A=84=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Code/backend/cmd/config/config.json | 2 +- Code/backend/cmd/manager/main.go | 13 +- Code/backend/internal/api/camera.go | 131 ++++++++++++------ .../internal/api/personDetectionRecord.go | 36 +++++ .../model/person_detection_record.gen.go | 1 + .../query/person_detection_record.gen.go | 6 +- ...itelist-172.29.46.104-20241101120030-1.jpg | Bin 0 -> 42609 bytes 7 files changed, 135 insertions(+), 54 deletions(-) create mode 100644 Code/backend/public/2024/11/01/12/00/whitelist-172.29.46.104-20241101120030-1.jpg diff --git a/Code/backend/cmd/config/config.json b/Code/backend/cmd/config/config.json index ad60087..f7c1325 100644 --- a/Code/backend/cmd/config/config.json +++ b/Code/backend/cmd/config/config.json @@ -2,5 +2,5 @@ "backendport": 8080, "name": "node1", "database": "initqwe", - "picPath": "/home/backend/picture" + "picturePath": "D:/intelligent/intelligent_backend/public/images" } \ No newline at end of file diff --git a/Code/backend/cmd/manager/main.go b/Code/backend/cmd/manager/main.go index 99978f2..31f0f54 100644 --- a/Code/backend/cmd/manager/main.go +++ b/Code/backend/cmd/manager/main.go @@ -4,12 +4,10 @@ import ( "go_backend/cmd/config" "go_backend/internal/api" "go_backend/internal/dbs" - scheduledtask "go_backend/internal/scheduled_task" "go_backend/internal/utils" "strconv" "github.com/gin-gonic/gin" - "github.com/robfig/cron/v3" ) func main() { @@ -31,11 +29,14 @@ func main() { api.CreateDetectionRecord(r.Group("")) api.GetDetectionRecord(r.Group("")) api.GetTrajectoryRecordList(r.Group("")) - println(config.AllConfig.Port) + api.GetTargetTrajectory(r.Group("")) + api.GetSingleDetectionRecord(r.Group("")) + api.GetAllCamerasIncludeFolder(r.Group("")) - c := cron.New() - c.AddFunc("@every 1m", scheduledtask.MergeTrajectory) - c.Start() + r.Static("/images", config.AllConfig.PicturePath) + //c := cron.New() + //c.AddFunc("@every 1m", scheduledtask.MergeTrajectory) + //c.Start() // _ = r.Run(":" + strconv.Itoa(config.AllConfig.Port)) _ = r.Run(":" + strconv.Itoa(8080)) diff --git a/Code/backend/internal/api/camera.go b/Code/backend/internal/api/camera.go index ec9b522..691f227 100644 --- a/Code/backend/internal/api/camera.go +++ b/Code/backend/internal/api/camera.go @@ -5,7 +5,8 @@ import ( "github.com/gin-gonic/gin" "go_backend/internal/dbs" "go_backend/internal/model" - "go_backend/internal/utils" + "gorm.io/gorm" + "strconv" ) type CameraVO struct { @@ -24,61 +25,99 @@ type CameraVO struct { ChildVO []*CameraVO `json:"child"` } -func GetAllCameras(router *gin.RouterGroup) { +func GetAllCamerasIncludeFolder(router *gin.RouterGroup) { router.GET("/camerasList", func(c *gin.Context) { - cameras := make([]model.Camera, 0) db := dbs.GetGormDB() - db.Find(&cameras) - - cameraMap := make(map[int][]model.Camera) - - for _, camera := range cameras { - cameraMap[int(camera.ViewPriority)] = append(cameraMap[(int(camera.ViewPriority))], camera) - } + cameraVOList, _ := getCameraListMethod(false, db) + Success(c, cameraVOList) + }) +} +func GetAllCameras(router *gin.RouterGroup) { + router.GET("/camerasOnly", func(c *gin.Context) { + db := dbs.GetGormDB() + _, cameraList := getCameraListMethod(true, db) cameraVOList := make([]*CameraVO, 0) - level := 0 - - cameraRecord := make(map[int]*CameraVO) - - for priority, cameraArray := range cameraMap { - if priority == 0 { - for _, camera := range cameraArray { - vo := transVO(camera) - cameraVOList = append(cameraVOList, &vo) - cameraRecord[int(camera.ID)] = &vo - } - level += 1 - continue - } - - if priority == level { - tempRecord := make(map[int]*CameraVO) - - for _, camera := range cameraArray { - vo := transVO(camera) - parentId := vo.ParentCategoryID[len(vo.ParentCategoryID)-1] - if pointer, exists := cameraRecord[parentId]; exists { - pointer.ChildVO = append(pointer.ChildVO, &vo) - utils.PrintSlice(vo.ParentCategoryID) - newParent := make([]int, 0) - utils.PrintSlice(pointer.ParentCategoryID) - for _, id := range pointer.ParentCategoryID { - newParent = append(newParent, id) - } - newParent = append(newParent, parentId) - vo.ParentCategoryID = newParent - tempRecord[int(vo.ID)] = &vo - } - } - cameraRecord = tempRecord - level += 1 + for _, camera := range cameraList { + // 查看缓存Map中有无对应address,有的话直接读取 + var address string + cameraId, _ := strconv.Atoi(camera.CameraID) + if _, exists := Camera2AddressMap[cameraId]; exists { + address = Camera2AddressMap[cameraId] + } else { + address = mergeAddress(*camera, db) + Camera2AddressMap[cameraId] = address } + vo := transVO(*camera) + vo.DisplayName = address + cameraVOList = append(cameraVOList, &vo) } Success(c, cameraVOList) }) } +func getCameraListMethod(isCameraOnly bool, db *gorm.DB) ([]*CameraVO, []*model.Camera) { + cameras := make([]model.Camera, 0) + db.Find(&cameras) + + cameraMap := make(map[int][]model.Camera) + + for _, camera := range cameras { + cameraMap[int(camera.ViewPriority)] = append(cameraMap[(int(camera.ViewPriority))], camera) + } + + cameraList := make([]*model.Camera, 0) + cameraVOList := make([]*CameraVO, 0) + level := 0 + + cameraRecord := make(map[int]*CameraVO) + + for priority, cameraArray := range cameraMap { + if priority == 0 { + for _, camera := range cameraArray { + vo := transVO(camera) + if isCameraOnly { + if camera.Type == "camera" { + cameraList = append(cameraList, &camera) + } + } else { + cameraVOList = append(cameraVOList, &vo) + } + cameraRecord[int(camera.ID)] = &vo + } + level += 1 + continue + } + + if priority == level { + tempRecord := make(map[int]*CameraVO) + + for _, camera := range cameraArray { + vo := transVO(camera) + parentId := vo.ParentCategoryID[len(vo.ParentCategoryID)-1] + if pointer, exists := cameraRecord[parentId]; exists { + if isCameraOnly { + if camera.Type == "camera" { + cameraList = append(cameraList, &camera) + } + } + pointer.ChildVO = append(pointer.ChildVO, &vo) + newParent := make([]int, 0) + for _, id := range pointer.ParentCategoryID { + newParent = append(newParent, id) + } + newParent = append(newParent, parentId) + vo.ParentCategoryID = newParent + tempRecord[int(vo.ID)] = &vo + } + } + cameraRecord = tempRecord + level += 1 + } + } + return cameraVOList, cameraList +} + type Node struct { ParentID int `json:"parent_id"` DisplayName string `json:"display_name"` diff --git a/Code/backend/internal/api/personDetectionRecord.go b/Code/backend/internal/api/personDetectionRecord.go index 69ecb0a..7b2ae86 100644 --- a/Code/backend/internal/api/personDetectionRecord.go +++ b/Code/backend/internal/api/personDetectionRecord.go @@ -75,6 +75,42 @@ func GetDetectionRecord(router *gin.RouterGroup) { }) } +func GetSingleDetectionRecord(router *gin.RouterGroup) { + router.GET("/detection/single", func(c *gin.Context) { + detectionRecords := make([]model.PersonDetectionRecord, 0) + db := dbs.GetGormDB() + db.Limit(1).Find(&detectionRecords) + detectionVOS := make([]DetectionVO, 0) + // 搜索对应的摄像头 + record := detectionRecords[0] + var cameras []model.Camera + cameraId, _ := strconv.Atoi(record.CameraID) + result := db.Model(model.Camera{}). + Where("camera_id = ?", cameraId). + Find(&cameras) + if result.Error != nil { + fmt.Println(result.Error) + return + } + if len(cameras) > 1 { + fmt.Println("对应摄像头id ", record.CameraID, " 超过一个") + } + // 查看缓存Map中有无对应address,有的话直接读取 + var address string + if _, exists := Camera2AddressMap[cameraId]; exists { + address = Camera2AddressMap[cameraId] + } else { + address = mergeAddress(cameras[0], db) + Camera2AddressMap[cameraId] = address + } + detectionVOS = append(detectionVOS, transToDetectionVO(record, address)) + + var count int64 + db.Model(model.PersonDetectionRecord{}).Count(&count) + Success(c, detectionVOS[0]) + }) +} + func mergeAddress(cameraTarget model.Camera, db *gorm.DB) string { var addressArray []string var address string diff --git a/Code/backend/internal/model/person_detection_record.gen.go b/Code/backend/internal/model/person_detection_record.gen.go index 4034a34..07bc9bd 100644 --- a/Code/backend/internal/model/person_detection_record.gen.go +++ b/Code/backend/internal/model/person_detection_record.gen.go @@ -14,6 +14,7 @@ const TableNamePersonDetectionRecord = "person_detection_record" type PersonDetectionRecord struct { ID int64 `gorm:"column:id;primaryKey;autoIncrement:true" json:"id"` EventID string `gorm:"column:event_id" json:"event_id"` + DetectionPicURL string `gorm:"column:detection_pic_url" json:"detection_pic_url"` AlarmType string `gorm:"column:alarm_type" json:"alarm_type"` PersonType string `gorm:"column:person_type" json:"person_type"` CameraID string `gorm:"column:camera_id" json:"camera_id"` diff --git a/Code/backend/internal/query/person_detection_record.gen.go b/Code/backend/internal/query/person_detection_record.gen.go index 65355e0..89e9876 100644 --- a/Code/backend/internal/query/person_detection_record.gen.go +++ b/Code/backend/internal/query/person_detection_record.gen.go @@ -29,6 +29,7 @@ func newPersonDetectionRecord(db *gorm.DB, opts ...gen.DOOption) personDetection _personDetectionRecord.ALL = field.NewAsterisk(tableName) _personDetectionRecord.ID = field.NewInt64(tableName, "id") _personDetectionRecord.EventID = field.NewString(tableName, "event_id") + _personDetectionRecord.DetectionPicURL = field.NewString(tableName, "detection_pic_url") _personDetectionRecord.AlarmType = field.NewString(tableName, "alarm_type") _personDetectionRecord.PersonType = field.NewString(tableName, "person_type") _personDetectionRecord.CameraID = field.NewString(tableName, "camera_id") @@ -51,6 +52,7 @@ type personDetectionRecord struct { ALL field.Asterisk ID field.Int64 EventID field.String + DetectionPicURL field.String AlarmType field.String PersonType field.String CameraID field.String @@ -79,6 +81,7 @@ func (p *personDetectionRecord) updateTableName(table string) *personDetectionRe p.ALL = field.NewAsterisk(table) p.ID = field.NewInt64(table, "id") p.EventID = field.NewString(table, "event_id") + p.DetectionPicURL = field.NewString(table, "detection_pic_url") p.AlarmType = field.NewString(table, "alarm_type") p.PersonType = field.NewString(table, "person_type") p.CameraID = field.NewString(table, "camera_id") @@ -117,9 +120,10 @@ func (p *personDetectionRecord) GetFieldByName(fieldName string) (field.OrderExp } func (p *personDetectionRecord) fillFieldMap() { - p.fieldMap = make(map[string]field.Expr, 12) + p.fieldMap = make(map[string]field.Expr, 13) p.fieldMap["id"] = p.ID p.fieldMap["event_id"] = p.EventID + p.fieldMap["detection_pic_url"] = p.DetectionPicURL p.fieldMap["alarm_type"] = p.AlarmType p.fieldMap["person_type"] = p.PersonType p.fieldMap["camera_id"] = p.CameraID diff --git a/Code/backend/public/2024/11/01/12/00/whitelist-172.29.46.104-20241101120030-1.jpg b/Code/backend/public/2024/11/01/12/00/whitelist-172.29.46.104-20241101120030-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0e6e22132ba8c14a01106fcbcedf18ffad442c4a GIT binary patch literal 42609 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