From 4a15c5ab69122cc4921d67f849a928842e299c21 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期六, 30 三月 2024 11:21:11 +0800
Subject: [PATCH] 修正楼层匹配的逻辑

---
 models/device.go          |    1 +
 repository/captureRepo.go |   15 ++++++++++-----
 models/positions.go       |    3 ++-
 3 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/models/device.go b/models/device.go
index 854ae65..89d2fb1 100644
--- a/models/device.go
+++ b/models/device.go
@@ -63,6 +63,7 @@
 			DeviceId:   d.Id,
 			Pos:        d.Pos,
 			CreateTime: time.Now().Unix(),
+			TimeString: time.Now().Format("2006-01-02 15:04:05"),
 		}
 
 		db.Create(&pos)
diff --git a/models/positions.go b/models/positions.go
index f8dbdb5..5e61a07 100644
--- a/models/positions.go
+++ b/models/positions.go
@@ -5,6 +5,7 @@
 	DeviceId   string `gorm:"column:device_id;" json:"device_id"`
 	Pos        string `gorm:"column:pos" json:"pos"`
 	CreateTime int64  `gorm:"column:create_time;"`
+	TimeString string `gorm:"column:time_string;"`
 }
 
 func (d *Positions) TableName() string {
@@ -12,5 +13,5 @@
 }
 
 func (d *Positions) FindDevicePosition(devId string, timestamp int64) error {
-	return db.Table(d.TableName()).Where("device_id = ? AND create_time < ?", devId, timestamp).Order("create_time desc").First(&d).Error
+	return db.Table(d.TableName()).Where("device_id = ? AND create_time <= ?", devId, timestamp).Order("create_time desc").First(&d).Error
 }
diff --git a/repository/captureRepo.go b/repository/captureRepo.go
index f4d5c5a..c4ea02f 100644
--- a/repository/captureRepo.go
+++ b/repository/captureRepo.go
@@ -75,14 +75,19 @@
 	}
 
 	// 鍖归厤妤煎眰
-	aTime, err := time.ParseInLocation("20060102150405", appearTime, time.Local)
+	faceAppearTime, err := time.ParseInLocation("20060102150405", appearTime, time.Local)
 	if err != nil {
 		logger.Warn("Parse face appear time error,%s", err.Error())
-		aTime = time.Now()
+		faceAppearTime = time.Now()
 	}
 
+	// 鐢垫鍋滄鐨勬椂闂�
+	devStopTime := time.Now().Format("2006-01-02 15:04:05")
 	var devPos models.Positions
-	_ = devPos.FindDevicePosition(deviceId, aTime.Unix())
+	_ = devPos.FindDevicePosition(deviceId, faceAppearTime.Unix()+5) // 鍔�5绉掔數姊叧闂ㄧ殑鏃堕棿
+	if devPos.TimeString != "" {
+		devStopTime = devPos.TimeString
+	}
 
 	imageBytes, err := base64.StdEncoding.DecodeString(faceImage)
 	if err != nil {
@@ -98,8 +103,8 @@
 		CameraAddr:    device.Addr + devPos.Pos,
 		CameraName:    device.Name,
 		PicMaxUrl:     []string{""},
-		PicDate:       time.Now().Format("2006-01-02 15:04:05"),
-		LikeDate:      time.Now().Format("2006-01-02 15:04:05"),
+		PicDate:       faceAppearTime.Format("2006-01-02 15:04:05"),
+		LikeDate:      devStopTime,
 		AnalyServerId: deviceId,
 		DataSource:    "camera",
 		TargetInfo:    []vo.TargetInfo{{TargetId: faceId}},

--
Gitblit v1.8.0