From c7ec5e7a2762eb9cd2c9d2a23fc1de4677161a30 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期二, 11 二月 2025 10:14:08 +0800
Subject: [PATCH] 完善参数

---
 models/accessRegularity.go |   29 ++++++++++++++++++++++-------
 models/model.go            |    9 +++++----
 db/db.go                   |    3 ++-
 db/model_rule.go           |    5 +++--
 4 files changed, 32 insertions(+), 14 deletions(-)

diff --git a/db/db.go b/db/db.go
index 34ab3bc..6e78684 100644
--- a/db/db.go
+++ b/db/db.go
@@ -351,8 +351,9 @@
 				Unit:     "",
 				Range:    "",
 				Value:    "",
-				ValType:  "[{\"label\":\"杩沑", \"value\":\"in\"},{\"label\":\"鍑篭", \"value\":\"out\"}]",
+				ValType:  "string",
 				Operator: "==",
+				Options: "[{\"label\":\"杩沑", \"value\":\"in\"},{\"label\":\"鍑篭", \"value\":\"out\"}]",
 				Sort:     3,
 			},
 		},
diff --git a/db/model_rule.go b/db/model_rule.go
index a6aab41..9244338 100644
--- a/db/model_rule.go
+++ b/db/model_rule.go
@@ -17,19 +17,20 @@
 	RuleArg struct {
 		Alias    string `gorm:"column:alias" json:"alias"`         // 鍙傛暟鐨勫埆鍚�
 		Name     string `gorm:"column:name" json:"name"`           // 鍙傛暟鍚嶇О
-		Type     string `gorm:"column:type" json:"type"`           // 鍙傛暟绫诲瀷: input, option, range, image
+		Type     string `gorm:"column:type" json:"type"`           // 鍙傛暟绫诲瀷: input, select, range, image
 		Must     bool   `gorm:"column:must" json:"must"`           // 鏄惁蹇呭~
 		Unit     string `gorm:"column:unit" json:"unit"`           // 鍗曚綅
 		Range    string `gorm:"column:range" json:"range"`         // 鍊肩殑鑼冨洿锛宔g锛�0,100琛ㄧず浠�0鍒�100
 		Value    string `gorm:"column:value" json:"value"`         // 鍙傛暟鍊�
 		ValType  string `gorm:"column:val_type" json:"valType"`    // 鍙傛暟鍊肩被鍨� int, string, bool
 		Operator string `gorm:"column:operator" json:"operator"`   // 杩愮畻绗�
+		Options  string `gorm:"column:options" json:"options"`     // 閫夐」鐨勫閫夊弬鏁�
 		Sort     int    `gorm:"column:sort;default:0" json:"sort"` // 鍙傛暟椤哄簭
 	}
 
 	ModelRuleSet struct {
 		Alias    string      `json:"alias"`    // 鍙傛暟鐨勫埆鍚�
-		Type     string      `json:"type"`     // 鍙傛暟绫诲瀷: input, option, range, image
+		Type     string      `json:"type"`     // 鍙傛暟绫诲瀷: input, select, range, image
 		Name     string      `json:"name"`     // 鍙傛暟鍚嶇О
 		Value    interface{} `json:"value"`    // 鍙傛暟鍊�
 		ValType  string      `json:"valType"`  // 鍊肩被鍨�
diff --git a/models/accessRegularity.go b/models/accessRegularity.go
index 5d1b59b..301ac5d 100644
--- a/models/accessRegularity.go
+++ b/models/accessRegularity.go
@@ -174,10 +174,16 @@
 	return ""
 }
 
-func countValidDays(records []*service.ESRecordInfo, startHour, endHort int, direction string) int {
+func countValidDays(records []*service.ESRecordInfo, startHour, endHour int, direction string) int {
 	layout := "2006-01-02 15:04:05"             // 鏃堕棿鏍煎紡
 	lastDirectionMap := make(map[string]string) // 璁板綍鏈�鍚庝竴鏉� Direction
 	lastTimeMap := make(map[string]time.Time)   // 璁板綍鏈�鍚庝竴鏉℃椂闂�
+
+	// 鍒ゆ柇鏄惁璺ㄥぉ
+	var isCrossDay bool
+	if endHour < startHour {
+		isCrossDay = true
+	}
 
 	for _, record := range records {
 		// 瑙f瀽鏃堕棿
@@ -191,13 +197,22 @@
 		hour := t.Hour()
 		var key string
 
-		// 鍒ゆ柇鏃堕棿鑼冨洿锛屽苟褰掑睘鍒版煇涓�澶�
-		if hour >= startHour { // 21:00-23:59 褰掑睘褰撳ぉ
-			key = t.Format("2006-01-02")
-		} else if hour < endHort { // 00:00-02:59 褰掑睘鍓嶄竴澶�
-			key = t.AddDate(0, 0, -1).Format("2006-01-02")
+		if !isCrossDay {
+			// 鍒ゆ柇鏃堕棿鑼冨洿锛屽苟褰掑睘鍒版煇涓�澶�
+			if hour >= startHour && hour < endHour {
+				key = t.Format("2006-01-02")
+			} else {
+				continue // 涓嶅湪缁熻鑼冨洿鍐�
+			}
 		} else {
-			continue // 涓嶅湪缁熻鑼冨洿鍐�
+			// 鍒ゆ柇鏃堕棿鑼冨洿锛屽苟褰掑睘鍒版煇涓�澶�
+			if hour >= startHour { // 21:00-23:59 褰掑睘褰撳ぉ
+				key = t.Format("2006-01-02")
+			} else if hour < endHour { // 00:00-02:59 褰掑睘鍓嶄竴澶�
+				key = t.AddDate(0, 0, -1).Format("2006-01-02")
+			} else {
+				continue // 涓嶅湪缁熻鑼冨洿鍐�
+			}
 		}
 
 		// 璁板綍璇ユ椂闂存鍐呯殑鏈�鍚庝竴鏉℃暟鎹�
diff --git a/models/model.go b/models/model.go
index 7d9d983..4b1a51a 100644
--- a/models/model.go
+++ b/models/model.go
@@ -14,10 +14,11 @@
 }
 
 var modelRegistry = map[string]func() Model{
-	"gather":    func() Model { return &GatherModel{} },
-	"disappear": func() Model { return &DisappearModel{} },
-	"location":  func() Model { return &LocationModel{} },
-	"night":     func() Model { return &nightModel{} },
+	"gather":           func() Model { return &GatherModel{} },
+	"disappear":        func() Model { return &DisappearModel{} },
+	"location":         func() Model { return &LocationModel{} },
+	"night":            func() Model { return &nightModel{} },
+	"accessRegularity": func() Model { return &RegularityModel{} },
 	// 娣诲姞鍏朵粬妯″瀷
 }
 

--
Gitblit v1.8.0