From 28c5cf41c5064579dd62f79fd40dc5990e9565b2 Mon Sep 17 00:00:00 2001
From: sunty <1172534965@qq.com>
Date: 星期一, 09 九月 2024 20:52:54 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 task/engine.go |   59 +++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 53 insertions(+), 6 deletions(-)

diff --git a/task/engine.go b/task/engine.go
index 9ec9330..0594e10 100644
--- a/task/engine.go
+++ b/task/engine.go
@@ -4,9 +4,13 @@
 	"basic.com/valib/logger.git"
 	"ruleModelEngine/cache"
 	"ruleModelEngine/db"
+	"time"
 )
 
 func UnderageClimbingToRooftop(taskPerson db.TaskPerson) bool {
+	if taskPerson.Floor == "" {
+		return false
+	}
 	age, err := db.GetAgeById(taskPerson.DocumentNumber)
 	if err != nil {
 		logger.Error("GetAgeById: ", err)
@@ -30,14 +34,57 @@
 	}
 	return false
 }
-func ClimbingFloorsIllegally(taskPerson db.TaskPerson) bool {
-
-	return true
+func ClimbingFloorsIllegally(taskPerson db.TaskPerson, hours int, times int) bool {
+	layout := "2006-01-02 15:04:05"
+	picDate, err := time.Parse(layout, taskPerson.PicDate)
+	startTime := picDate.Add(time.Duration(-hours) * time.Hour).Format(layout)
+	floors, err := db.QueryCheckDataByDocumentNumber(taskPerson.DocumentNumber, startTime, taskPerson.PicDate)
+	if err != nil {
+		logger.Error("QueryCheckDataByDocumentNumber: ", err)
+		return false
+	}
+	if floors >= times {
+		return true
+	}
+	return false
 }
-func EnteringButNotLeaving(taskPerson db.TaskPerson) bool {
 
-	return true
+func EnteringButNotLeaving(docNumber string, communityId string, cameraIds []string, days int) bool {
+	total, err := db.QueryTimesByDocNumberDays(docNumber, communityId, cameraIds, days-1)
+	if err != nil {
+		logger.Error("QueryTimesByDocNumberDays err: ", err)
+	}
+	if total == 0 {
+		return true
+	}
+
+	return false
 }
+
 func registeredAddressNotMatchActualResidence(taskPerson db.TaskPerson) bool {
-	return true
+	idCard := db.GetIdCardById(taskPerson.DocumentNumber)
+	if idCard == "" {
+		return false
+	}
+
+	if _, ok := cache.PublicHouse[taskPerson.CommunityId]; !ok {
+		return false
+	}
+
+	// 鏈夎韩浠借瘉鍙�, 灏忓尯灞炰簬鍏鎴�, 鍏鎴跨櫥璁拌韩浠借瘉鍙锋病鏈夎鏉¤褰�, 杩斿洖true
+	personStatus := db.GetDBPersonStatus(taskPerson.DocumentNumber, taskPerson.CommunityId)
+	logger.Debugf("Actual residence get person id:%s status: %s", taskPerson.DocumentNumber, personStatus)
+	if personStatus == "resident" || personStatus == "permanent_resident" {
+		if _, ok := cache.PublicHouse[taskPerson.CommunityId][idCard]; !ok {
+			// 鎺у埗绋嬪簭杩愯鏈熼棿鍙緭鍑轰竴娆℃姤璀�
+			if _, ok := cache.PublicHouseAlarmCache[idCard]; ok {
+				return false
+			} else {
+				cache.PublicHouseAlarmCache[idCard] = struct{}{}
+				return true
+			}
+		}
+	}
+
+	return false
 }

--
Gitblit v1.8.0