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