From ed50fd820fa8299f328e85400a08db997e86b349 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期五, 09 八月 2019 18:04:54 +0800
Subject: [PATCH] 加个取联动数据的判断以防偶尔的nil导致宕机

---
 ruleserver/timeTicker.go |   65 ++++++++++++++++----------------
 1 files changed, 33 insertions(+), 32 deletions(-)

diff --git a/ruleserver/timeTicker.go b/ruleserver/timeTicker.go
index 0809fb4..2449663 100644
--- a/ruleserver/timeTicker.go
+++ b/ruleserver/timeTicker.go
@@ -14,25 +14,26 @@
 
 // 瀹氭椂鍣ㄥ厓绱�
 type TimeElement struct {
-	N            int                  // 鎸夋椂闂翠緷娆¢�掑噺鐨勫綋鍓嶅��
-	InitN        int                  // 璧嬪�煎悗灏变笉鍙樼殑鍒濆鍊�
-	BufferFlag   int                  // 缂撳啿瀹归敊浣� 杩炵画n甯alse鎵嶄负false
-	AlarmFlag    bool                 // 鎶ヨ鏍囧織浣� 瀹氭椂鍣ㄥ紑鍚悗绗竴娆℃姤璀︽椂浼氳缃负true 寰�鍚庡啀鏉ユ姤璀︿篃涓嶄細鎻掕繘ES
+	N            int       // 鎸夋椂闂翠緷娆¢�掑噺鐨勫綋鍓嶅��
+	InitN        int       // 璧嬪�煎悗灏变笉鍙樼殑鍒濆鍊�
+	BufferFlag   int       // 缂撳啿瀹归敊浣� 杩炵画n甯alse鎵嶄负false
+	AlarmFlag    bool      // 鎶ヨ鏍囧織浣� 瀹氭椂鍣ㄥ紑鍚悗绗竴娆℃姤璀︽椂浼氳缃负true 寰�鍚庡啀鏉ユ姤璀︿篃涓嶄細鎻掕繘ES
 	CacheSdkData ResultMsg // 瀹氭椂鍣ㄧ殑缂撳瓨鏁版嵁 鎸佺画鏃堕棿绫荤殑寮�鍚畾鏃跺櫒鏃惰缂撳瓨涓�甯�
-	GroupId      string               // 鑱斿姩瑙勫垯闇�瑕佽褰曚笅姝ゆ椂鐨勮鍒欑粍id
+	GroupId      string    // 鑱斿姩瑙勫垯闇�瑕佽褰曚笅姝ゆ椂鐨勮鍒欑粍id
 	RuleResults  []*RuleResult
 }
 type RuleResult struct {
 	// 姣忎釜鎽勫儚鏈轰竴涓粨鏋勪綋
-	CameraId    string // 鎽勫儚鏈篿d
-	Sort        int32  // 鎽勫儚鏈哄湪瑙勫垯缁勪腑搴忓彿
-	Result      string // 鎽勫儚鏈鸿繃婊ゆ暟鎹緱鍑虹殑缁撴灉
-	RuleWithPre string // 鎽勫儚鏈轰箣闂寸殑杩炴帴绗�
+	CameraId    string    // 鎽勫儚鏈篿d
+	Sort        int32     // 鎽勫儚鏈哄湪瑙勫垯缁勪腑搴忓彿
+	Result      string    // 鎽勫儚鏈鸿繃婊ゆ暟鎹緱鍑虹殑缁撴灉
+	RuleWithPre string    // 鎽勫儚鏈轰箣闂寸殑杩炴帴绗�
+	CacheData   ResultMsg // 缂撳瓨褰撳墠甯ф暟鎹�
 }
 
 func TimeTicker() {
-	logger.Info("瀹氭椂鍣ㄦ墽琛屼簡")
-	fmt.Println("瀹氭椂鍣ㄦ墽琛屼簡")
+	//logger.Info("瀹氭椂鍣ㄦ墽琛屼簡")
+	//fmt.Println("瀹氭椂鍣ㄦ墽琛屼簡")
 	ticker := time.NewTicker(1 * time.Second)
 	go func(ticker *time.Ticker) {
 		defer ticker.Stop()
@@ -45,7 +46,7 @@
 				for k, timeEle := range TimeEleList {
 					if timeEle.N > 0 {
 						timeEle.N = timeEle.N - 1
-						logger.Error("-------------------------------------鎵撳嵃瀹氭椂鍣ㄥ厓绱犲綋鍓嶅��-----------------------------------------锛�", timeEle.N)
+						logger.Error("-------------------------------------鎵撳嵃瀹氭椂鍣ㄨ鏁板厓绱犲綋鍓嶅��-----------------------------------------锛�", timeEle.N)
 					}
 					if timeEle.GroupId != "" && timeEle.N == 0 {
 						// 璇存槑鏄仈鍔ㄤ换鍔$殑鏃堕棿绐楀彛 鍒扮偣鍎夸簡璇ラ攢姣佷簡,鍐嶆潵浜嗗啀鍒涘缓
@@ -67,73 +68,73 @@
 	TimeTicker()
 }
 
-
 // 鍒ゆ柇鏄惁绗﹀悎瀹氭椂鍣ㄦ潯浠�
-func TimerAlarm(args *SdkDatas,groupId string,result bool) (string) {
-	var flagTime string  //
+func TimerAlarm(oth *Others, groupId string, result bool) (string) {
+	var flagTime string //
 	// 鍒ゆ柇鏈夋棤姝よ鍒欑粍鐨勫畾鏃跺櫒
 	flag := false
-	for k,_ := range TimeEleList {
-		logger.Debug("-----------------鐪嬬湅杩欎釜key鍜実roupId",k,groupId)
-		if strings.Contains(k, groupId) {
+	for k, _ := range TimeEleList {
+		//logger.Debug("-----------------鐪嬬湅杩欎釜key鍜実roupId", k, groupId)
+		if strings.Contains(k, groupId) && k != groupId{
 			flag = true
 		}
 	}
-	if flag {     // 鏈夊畾鏃跺櫒
+	if flag { // 鏈夊畾鏃跺櫒
 		if result { // 缁撴灉涓虹湡
 			for k, timeEle := range TimeEleList {
-				if strings.Contains(k, groupId) {
+				if strings.Contains(k, groupId) && k != groupId{
 					if timeEle.N == 0 && timeEle.AlarmFlag {
 						logger.Debug("-------------------------绗﹀悎鎸佺画鏃堕棿瑙勫垯浣嗗苟涓嶆槸棣栨锛屼笉鎶ヨ")
 						flagTime = "11"
-						args.RuleResult["timeLabel"] = flagTime
+						oth.TimeLabel = flagTime
 					}
 					if timeEle.N == 0 && !timeEle.AlarmFlag { // 杩欑粍瑙勫垯鐨勫畾鏃跺櫒瑕佸叏閮ㄧ瓑浜�0   鏆備笖璁や负涓�缁勮鍒欏彧鏈変竴涓畾鏃跺櫒
 						logger.Debug("鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺��-------------棣栨绗﹀悎鎸佺画鏃堕棿瑙勫垯骞舵姤璀�")
 						flagTime = "10"
 						timeEle.AlarmFlag = true
-						args.RuleResult["cacheData"] = timeEle.CacheSdkData
-						args.RuleResult["timeLabel"] = flagTime
+						oth.CacheData = []ResultMsg{}
+						oth.CacheData = append(oth.CacheData,timeEle.CacheSdkData)
+						oth.TimeLabel = flagTime
 					}
 					if timeEle.N != 0 {
 						flagTime = "00"
 						// 鏈夊畾鏃跺櫒浣嗕笉涓�0鎶婂凡鎵撶殑鏍囩鍒犻櫎
-						args.RuleResult = nil
-						logger.Debug("------------------------缁撴灉涓虹湡浣嗚鏁板櫒涓嶅埌0锛屼笉鎶ヨ,姝ゆ椂鐨勮鏁板櫒鐨勫�间负锛�",timeEle.N)
+						// args.RuleResult = nil
+						logger.Debug("------------------------缁撴灉涓虹湡浣嗚鏁板櫒涓嶅埌0锛屼笉鎶ヨ,姝ゆ椂鐨勮鏁板櫒", k, "鐨勫�间负锛�", timeEle.N)
 					}
 				}
 			}
 		} else { // 缁撴灉涓哄亣
 			for k, timeEle := range TimeEleList {
-				if strings.Contains(k, groupId) {
+				if strings.Contains(k, groupId) && k != groupId{
 					if timeEle.AlarmFlag {
 						if timeEle.BufferFlag == 0 {
-							logger.Debug("------------------------------鏉�姝诲畾鏃跺櫒锛屾姤璀︽甯х姸鎬佹敼鍙樼殑鏁版嵁锛屾鏃剁殑璁℃暟鍣ㄧ殑鍊间负",timeEle.N)
+							logger.Debug("------------------------------鏉�姝诲畾鏃跺櫒锛屾姤璀︽甯х姸鎬佹敼鍙樼殑鏁版嵁锛屾鏃剁殑璁℃暟鍣ㄧ殑鍊间负", timeEle.N)
 							flagTime = "12"
-							args.RuleResult["timeLabel"] = flagTime
-							delete(TimeEleList,k)
+							oth.TimeLabel = flagTime
+							delete(TimeEleList, k)
 						} else {
 							if timeEle.BufferFlag > 0 {
 								timeEle.BufferFlag--
 							}
 						}
 					} else {
-						delete(TimeEleList,k)
+						delete(TimeEleList, k)
 					}
 				}
 			}
-
 		}
 	} else { // 鏃犲畾鏃跺櫒
 		if result {
 			flagTime = "01"
-			args.RuleResult["timeLabel"] = flagTime
+			oth.TimeLabel = flagTime
 		} else {
 			flagTime = "00"
 		}
 	}
 	return flagTime
 }
+
 // 缁撴瀯浣撴牴鎹煇瀛楁鎺掑簭
 type SubList []*RuleResult
 

--
Gitblit v1.8.0