From d0bc216665a6d53135641ff009014a02a3774dd9 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期三, 24 七月 2019 18:06:02 +0800
Subject: [PATCH] 事件推送
---
go.sum | 4
insertdata/insertDataToEs.go | 22 +++
go.mod | 4
ruleserver/ruleToformula.go | 2
labelFilter/readyDataForLabel.go | 14 ++
labelFilter/ruleForLabel.go | 166 +++++++++++++++++++++++++++++---
ruleserver/timeTicker.go | 32 +++---
7 files changed, 199 insertions(+), 45 deletions(-)
diff --git a/go.mod b/go.mod
index 2d6649d..ff7e8a6 100644
--- a/go.mod
+++ b/go.mod
@@ -3,9 +3,9 @@
go 1.12
require (
- basic.com/dbapi.git v0.0.0-20190701055817-73bca225181f
+ basic.com/dbapi.git v0.0.0-20190724082851-b6ae90344405
basic.com/pubsub/cache.git v0.0.0-20190718093725-6a413e1d7d48
- basic.com/pubsub/protomsg.git v0.0.0-20190722020214-73680afe2ba3
+ basic.com/pubsub/protomsg.git v0.0.0-20190724081647-e1995f9a80e8
basic.com/pubsub/sdkcompare.git v0.0.0-20190715013640-f536a4647d00
basic.com/valib/deliver.git v0.0.0-20190531095353-25d8c3b20051
basic.com/valib/gopherdiscovery.git v0.0.0-20190605034340-15d89d8b4e28
diff --git a/go.sum b/go.sum
index 8120819..3769a80 100644
--- a/go.sum
+++ b/go.sum
@@ -1,5 +1,7 @@
basic.com/dbapi.git v0.0.0-20190701055817-73bca225181f h1:CVB4pmUXTPPFN7w/DQfU1YWg2Tp2gG93TTr1M5W86sE=
basic.com/dbapi.git v0.0.0-20190701055817-73bca225181f/go.mod h1:eDXPnxaz6jZPDvBSk7ya7oSASWPCuUEgRTJCjsfKt/Q=
+basic.com/dbapi.git v0.0.0-20190724082851-b6ae90344405 h1:BJzdtGipKxQAaptrwUNOVQZ3Qx4jbeAf72wkqBmm5vE=
+basic.com/dbapi.git v0.0.0-20190724082851-b6ae90344405/go.mod h1:eDXPnxaz6jZPDvBSk7ya7oSASWPCuUEgRTJCjsfKt/Q=
basic.com/pubsub/cache.git v0.0.0-20190712095028-e73efb4afc3b h1:UAasACFqEYUBCuZkkdxYVc1QmSyB7McvNHS36QxDJp4=
basic.com/pubsub/cache.git v0.0.0-20190712095028-e73efb4afc3b/go.mod h1:gHLJZz2ee1cGL0X0ae69fs56bAxkDgEQwDhhXZJNUcY=
basic.com/pubsub/cache.git v0.0.0-20190718024458-be52360c4814 h1:KoSik/aiJNDt3d+qRKExLW4pNHZ7vU1wXHhWXxZi4qo=
@@ -8,6 +10,8 @@
basic.com/pubsub/cache.git v0.0.0-20190718093725-6a413e1d7d48/go.mod h1:gHLJZz2ee1cGL0X0ae69fs56bAxkDgEQwDhhXZJNUcY=
basic.com/pubsub/protomsg.git v0.0.0-20190722020214-73680afe2ba3 h1:qgY1QFopeLa24Q9LGToXAVkbU9+QUMLzTxRsYur0tgs=
basic.com/pubsub/protomsg.git v0.0.0-20190722020214-73680afe2ba3/go.mod h1:un5NV5VWQoblVLZfx1Rt5vyLgwR0jI92d3VJhfrJhWU=
+basic.com/pubsub/protomsg.git v0.0.0-20190724081647-e1995f9a80e8 h1:hZYUcHcivGiofP3mGUWOOv6zKFAQp1V2uAkhjAXFfys=
+basic.com/pubsub/protomsg.git v0.0.0-20190724081647-e1995f9a80e8/go.mod h1:un5NV5VWQoblVLZfx1Rt5vyLgwR0jI92d3VJhfrJhWU=
basic.com/pubsub/sdkcompare.git v0.0.0-20190715013640-f536a4647d00 h1:sK+Tx7rvM9J2WnNIwrzMDjZSylWiKNfQO0prUBfKsDk=
basic.com/pubsub/sdkcompare.git v0.0.0-20190715013640-f536a4647d00/go.mod h1:8by33F9E1w17Pw/rDgJGJXAo122w0wDENG14hiMS+RE=
basic.com/valib/deliver.git v0.0.0-20190531095353-25d8c3b20051 h1:9flC2o3kasaM2Y6I+mY+mxmve/pyAY/UzGQZLT3lFHM=
diff --git a/insertdata/insertDataToEs.go b/insertdata/insertDataToEs.go
index 651fd81..23557b6 100644
--- a/insertdata/insertDataToEs.go
+++ b/insertdata/insertDataToEs.go
@@ -135,7 +135,7 @@
if msg.RuleResult["face"] != nil && len(msg.RuleResult["face"].([]ruleserver.FaceResult)) > 0 {
logger.Info("寰�ES鎻掍汉鑴告暟鎹�")
for _, faceResult := range msg.RuleResult["face"].([]ruleserver.FaceResult) {
- for _,face := range faceResult.Args {
+ for _, face := range faceResult.Args {
// 涓婁紶澶у浘
// 瑙e帇缂╁苟涓婁紶鍥剧墖
bdata, err := util.UnCompress(msg.Data)
@@ -344,10 +344,26 @@
logger.Error("鏌ヨ鎽勫儚鏈轰俊鎭け璐�")
}
serverIp, err := GetLocalIP()
+ url := []string{}
+ url = append(url,strings.Split(resp["fileUrl"].(string), "/")[1])
if msg.RuleResult["cacheData"] != nil {
InsertYolo(msg.RuleResult["cacheData"].(ruleserver.ResultMsg))
// 鎶婄紦瀛樼殑鏁版嵁涓婁紶鍚庡緱鍒板湴鍧�瀛樿繘鍘�
-
+ // 瑙e帇缂╁苟涓婁紶鍥剧墖
+ msg1 := msg.RuleResult["cacheData"].(ruleserver.ResultMsg)
+ bdata, err := util.UnCompress(msg1.Data)
+ if err != nil {
+ panic("瑙e帇缂╁浘鐗囨椂鍑虹幇閿欒")
+ }
+ i := protomsg.Image{}
+ err = proto.Unmarshal(bdata, &i)
+ resp1, err1 := util.DrawPolygonOnImage(msg.Cid, i, msg.RuleResult["yolo"].([]ruleserver.Result), weedfsUrl)
+ if err1 != nil {
+ logger.Error("缂撳瓨鏁版嵁鐢绘鎴栦笂浼犲浘鐗囨湇鍔″櫒鍑洪敊", err)
+ } else {
+ logger.Info("涓婁紶鐨勫浘鐗囦俊鎭細", resp1)
+ }
+ url = append(url,strings.Split(resp1["fileUrl"].(string), "/")[1])
}
peraction := Personaction{
uuid.NewV4().String(),
@@ -363,7 +379,7 @@
localConfig.ServerName,
serverIp,
"",
- []string{strings.Split(resp["fileUrl"].(string), "/")[1]},
+ url,
i.Timestamp,
"",
isAlarm,
diff --git a/labelFilter/readyDataForLabel.go b/labelFilter/readyDataForLabel.go
index 143302f..613f407 100644
--- a/labelFilter/readyDataForLabel.go
+++ b/labelFilter/readyDataForLabel.go
@@ -12,8 +12,8 @@
CameraAddr string
TaskId string
Time string
- Persons []ruleserver.Arg
- DefenceLevel string
+ Persons []ruleserver.FaceResult
+ DefenceLevel []int32
}
// 鎶婃暟鎹閰嶅埌label
func (label *Label)DataFormatToLabel(result ruleserver.ResultMsg) {
@@ -25,8 +25,14 @@
label.CameraName = camera.Name
label.CameraAddr = camera.Addr
label.TaskId = result.Tasklab.Taskid
- label.Persons = result.RuleResult["face"].([]ruleserver.Arg)
- //labelData.DefenceLevel = result.
+ for _,faceGroup := range result.RuleResult["face"].([]ruleserver.FaceResult) {
+ label.Persons = append(label.Persons,faceGroup)
+ label.DefenceLevel = append(label.DefenceLevel,faceGroup.AlarmLevel)
+ }
+ for _,yoloGroup := range result.RuleResult["yolo"].([]ruleserver.FaceResult) {
+ label.DefenceLevel = append(label.DefenceLevel,yoloGroup.AlarmLevel)
+ }
+ Judge(label,result)
}
// 浠庣紦瀛樹腑鏌ュ嚭鎵�鏈夌殑瑙勫垯鏁版嵁
diff --git a/labelFilter/ruleForLabel.go b/labelFilter/ruleForLabel.go
index 0300723..fe905b2 100644
--- a/labelFilter/ruleForLabel.go
+++ b/labelFilter/ruleForLabel.go
@@ -1,27 +1,85 @@
package labelFilter
import (
+ "basic.com/dbapi.git"
+ "basic.com/pubsub/protomsg.git"
"github.com/knetic/govaluate"
"ruleprocess/logger"
"ruleprocess/ruleserver"
+ "strconv"
+ "time"
)
-func Judge(){
+func Judge(label *Label, result ruleserver.ResultMsg){
//鎷垮埌鎵�鏈夎鍒欑粍
-
+ var api dbapi.EventPushApi
+ b,allRules := api.FindAllDetails()
+ if !b {
+ logger.Error("鏌ヨ鏃堕棿鎺ㄩ�佽鍒欏け璐ワ紒")
+ }
//閬嶅巻鎵�鏈夌殑瑙勫垯缁勶紝鐪嬬湅绗﹀悎鍝釜瑙勫垯缁勶紝灏辨妸鏁版嵁鎻掑叆鍒板摢涓鍒欑粍鐨勭洰鏍囨満鍣ㄤ笂
-
- //鍏堝垽鏂椂闂磋鍒欙紝涓嶇鍚堟瑙勫垯锛岀洿鎺ョ暐杩�
-
- //閬嶅巻瑙勫垯缁勪腑鐨勫皬瑙勫垯锛屾瘡涓皬瑙勫垯寰楀嚭涓�涓猻tring绫诲瀷鐨刡ool鍊硷紝鐒跺悗鐢� && 鎴� || 鎷兼帴璧锋潵
-
- //寰楀嚭鎬荤殑鍒ゆ柇缁撴灉
+ for _,ruleGroup := range allRules {
+ // 鍏堣繃鏃堕棿瑙勫垯
+ timeJudge(label,ruleGroup)
+ result := ""
+ var Connector string
+ if ruleGroup.IsSatisfyAll {
+ Connector = "&&"
+ } else {
+ Connector = "||"
+ }
+ for _,rule := range ruleGroup.Rules {
+ // 杩囨瘡涓�涓皬瑙勫垯
+ if rule.TopicType == "camera" {
+ result = Connector + cameraJudge(label,rule)
+ }
+ if rule.TopicType == "baseLibrary" {
+ result = Connector + baseJudge(label,rule)
+ }
+ if rule.TopicType == "task" {
+ result = Connector + taskJudge(label,rule)
+ }
+ if rule.TopicType == "person" {
+ result = Connector + taskJudge(label,rule)
+ }
+ if rule.TopicType == "defence" {
+ result = Connector + defenceJudge(label,rule)
+ }
+ }
+ // 寰楀嚭鎬荤殑鍒ゆ柇缁撴灉
+ if result != "" {
+ result = result[2:] // 鎶婂墠涓や綅瀛楃鍘绘帀
+ expression, err:= govaluate.NewEvaluableExpression(result);
+ if err != nil {
+ logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒")
+ }
+ result, err1:= expression.Evaluate(nil)
+ if err1 != nil {
+ logger.Error("甯﹀叆鍙傛暟鏈夎")
+ }
+ if result.(bool) {
+ logger.Info("閫氳繃瑙勫垯锛岃〃杈惧紡涓猴細",result)
+ // 鎺ㄩ�佹湇鍔″櫒
+ pushData(ruleGroup.IpPorts,result.(ruleserver.ResultMsg))
+ } else {
+ logger.Info("娌¢�氳繃瑙勫垯,琛ㄨ揪寮忎负锛�",result)
+ }
+ }
+ }
//绗﹀悎鏈鍒欑粍鐨勫氨鎶婃暟鎹帹閫佸埌璇ョ洰鐨勬湇鍔″櫒涓�
}
// 鏄惁绗﹀悎鏃堕棿瑙勫垯
-func timeJudge(label *Label,groupRule *GroupRule) string{
-
+func timeJudge(label *Label,groupRule protomsg.EventPush) string{
+ timeNow := time.Now().Format("2006-01-02 15:04:05")
+ flag1 := isBefore(groupRule.TimeStart,timeNow)
+ flag2 := isBefore(timeNow,groupRule.TimeEnd)
+ if flag1 && flag2 {
+ return "true"
+ } else {
+ logger.Info("涓嶅湪瑙勫畾鐨勬椂闂磋寖鍥村唴锛�")
+ return "false"
+ }
}
// 浼犲叆涓や釜鏃堕棿鐨勫瓧绗︿覆锛屽垽鏂涓�涓椂闂存槸鍚﹀皬浜庣浜屼釜鏃堕棿
func isBefore(time1 string,time2 string) bool{
@@ -40,25 +98,95 @@
}
// 鏄惁绗﹀悎鎽勫儚鏈鸿鍒�
-func cameraJudge(label *Label,rule *Rule) string{
- return "true"
+func cameraJudge(label *Label,rule *protomsg.EventPushRule) string{
+ if rule.TopicArg == "cameraName" {
+ if label.CameraName == rule.RuleValue {
+ logger.Info("绗﹀悎鎽勫儚鏈哄悕绉拌鍒�")
+ return "true"
+ } else {
+ logger.Info("涓嶇鍚堟憚鍍忔満鍚嶇О瑙勫垯")
+ return "false"
+ }
+ }
+ if rule.TopicArg == "cameraLocation" {
+ if label.CameraAddr == rule.RuleValue {
+ logger.Info("绗﹀悎鎽勫儚鏈轰綅缃鍒�")
+ return "true"
+ } else {
+ logger.Info("涓嶇鍚堟憚鍍忔満浣嶇疆瑙勫垯")
+ return "false"
+ }
+ }
+ return ""
}
// 鏄惁绗﹀悎搴曞簱瑙勫垯
-func baseJudge(label *Label,rule *Rule) string{
- return "true"
+func baseJudge(label *Label,rule *protomsg.EventPushRule) string{
+ flag := "false"
+ for _,personGroup := range label.Persons {
+ for _,arg := range personGroup.Args {
+ for _,liker := range arg.Liker{
+ if liker.TableId == rule.RuleValue {
+ logger.Info("绗﹀悎搴曞簱瑙勫垯锛�")
+ flag = "true"
+ }
+ }
+ }
+ }
+ return flag
}
//鏄惁绗﹀悎浜哄憳瑙勫垯
-func personJudge(label *Label,rule *Rule) string{
- return "true"
+func personJudge(label *Label,rule *protomsg.EventPushRule) string{
+ for _,personGroup := range label.Persons {
+ for _,person := range personGroup.Args {
+ if rule.TopicArg == "sex" && strconv.Itoa(int(person.ThftRes.Gender)) == rule.RuleValue{
+ logger.Info("绗﹀悎浜哄憳鎬у埆瑙勫垯锛�")
+ return "true"
+ }
+ if rule.TopicArg == "race" && strconv.Itoa(int(person.ThftRes.Race)) == rule.RuleValue {
+ logger.Info("绗﹀悎浜哄憳绉嶆棌瑙勫垯锛�")
+ return "true"
+ }
+ if rule.TopicArg == "age" && strconv.Itoa(int(person.ThftRes.Age)) == rule.RuleValue {
+ logger.Info("绗﹀悎浜哄憳骞撮緞瑙勫垯锛�")
+ return "true"
+ }
+ if rule.TopicArg == "others" {
+ // 鍏朵粬杩欎釜鍊煎厛杩欎箞澶勭悊
+ return "true"
+ }
+ }
+ if strconv.Itoa(int(personGroup.AlarmLevel)) == rule.RuleValue {
+ logger.Info("绗﹀悎浜哄憳鎶ヨ绛夌骇瑙勫垯锛�")
+ return "true"
+ }
+ }
+ logger.Info("涓嶇鍚堜汉鍛樿鍒�")
+ return "false"
}
// 鏄惁绗﹀悎甯冮槻绛夌骇瑙勫垯
-func defenceJudge(label *Label,rule *Rule) string{
- return "true"
+func defenceJudge(label *Label,rule *protomsg.EventPushRule) string{
+ for _,def := range label.DefenceLevel {
+ if strconv.Itoa(int(def)) == rule.RuleValue {
+ logger.Info("绗﹀悎甯冮槻绛夌骇瑙勫垯锛�")
+ return "true"
+ }
+ }
+ logger.Info("涓嶇鍚堝竷闃茬瓑绾ц鍒�")
+ return "false"
+}
+// 鏄惁绗﹀悎浠诲姟瑙勫垯
+func taskJudge(label *Label,rule *protomsg.EventPushRule) string{
+ if label.TaskId == rule.RuleValue {
+ logger.Info("绗﹀悎浠诲姟瑙勫垯!")
+ return "true"
+ }
+ logger.Info("涓嶇鍚堜换鍔¤鍒�")
+ return "false"
}
// 璋冪敤鐩爣鏈嶅姟鍣ㄧ殑鎻掑叆鎺ュ彛
-func pushData (data ruleserver.ResultMsg){
+func pushData (urls []*protomsg.PushIpPort, data ruleserver.ResultMsg){
}
\ No newline at end of file
diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go
index a64c0ab..1dd709b 100644
--- a/ruleserver/ruleToformula.go
+++ b/ruleserver/ruleToformula.go
@@ -584,7 +584,7 @@
timeLength, _ := strconv.Atoi(rule.SdkArgValue)
timeEle := TimeElement{N: timeLength, InitN: timeLength, AlarmFlag: false, BufferFlag: 10, CacheSdkData: ResultMsg{message, args.RuleResult}} // 鎵旇繘鍘讳竴涓畾鏃跺櫒鍏冪礌锛堝苟缂撳瓨褰撳墠鐢婚潰甯ф暟鎹級
//TimeEleList = make(map[string]timeElement)
- TimeEleList[groupId+" "+rule.Id] = &timeEle // 瀹氭椂鍣ㄥ厓绱犱互鎽勫儚鏈篿d鎷兼帴鍖哄煙id涓洪敭
+ TimeEleList[groupId+" "+rule.Id] = &timeEle // 瀹氭椂鍣ㄥ厓绱犱互缁勮鍒檌d鍜屽綋鍓嶆寔缁椂闂村皬瑙勫垯id涓洪敭
logger.Info("鍒涘缓浜嗚鏁板櫒骞朵笖璁℃暟鍣ㄩ泦鍚堜负锛�", TimeEleList)
}
}
diff --git a/ruleserver/timeTicker.go b/ruleserver/timeTicker.go
index 0809fb4..d8126a7 100644
--- a/ruleserver/timeTicker.go
+++ b/ruleserver/timeTicker.go
@@ -14,12 +14,12 @@
// 瀹氭椂鍣ㄥ厓绱�
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 {
@@ -45,7 +45,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,19 +67,18 @@
TimeTicker()
}
-
// 鍒ゆ柇鏄惁绗﹀悎瀹氭椂鍣ㄦ潯浠�
-func TimerAlarm(args *SdkDatas,groupId string,result bool) (string) {
- var flagTime string //
+func TimerAlarm(args *SdkDatas, groupId string, result bool) (string) {
+ var flagTime string //
// 鍒ゆ柇鏈夋棤姝よ鍒欑粍鐨勫畾鏃跺櫒
flag := false
- for k,_ := range TimeEleList {
- logger.Debug("-----------------鐪嬬湅杩欎釜key鍜実roupId",k,groupId)
+ for k, _ := range TimeEleList {
+ logger.Debug("-----------------鐪嬬湅杩欎釜key鍜実roupId", k, groupId)
if strings.Contains(k, groupId) {
flag = true
}
}
- if flag { // 鏈夊畾鏃跺櫒
+ if flag { // 鏈夊畾鏃跺櫒
if result { // 缁撴灉涓虹湡
for k, timeEle := range TimeEleList {
if strings.Contains(k, groupId) {
@@ -99,7 +98,7 @@
flagTime = "00"
// 鏈夊畾鏃跺櫒浣嗕笉涓�0鎶婂凡鎵撶殑鏍囩鍒犻櫎
args.RuleResult = nil
- logger.Debug("------------------------缁撴灉涓虹湡浣嗚鏁板櫒涓嶅埌0锛屼笉鎶ヨ,姝ゆ椂鐨勮鏁板櫒鐨勫�间负锛�",timeEle.N)
+ logger.Debug("------------------------缁撴灉涓虹湡浣嗚鏁板櫒涓嶅埌0锛屼笉鎶ヨ,姝ゆ椂鐨勮鏁板櫒鐨勫�间负锛�", timeEle.N)
}
}
}
@@ -108,17 +107,17 @@
if strings.Contains(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)
+ delete(TimeEleList, k)
} else {
if timeEle.BufferFlag > 0 {
timeEle.BufferFlag--
}
}
} else {
- delete(TimeEleList,k)
+ delete(TimeEleList, k)
}
}
}
@@ -134,6 +133,7 @@
}
return flagTime
}
+
// 缁撴瀯浣撴牴鎹煇瀛楁鎺掑簭
type SubList []*RuleResult
--
Gitblit v1.8.0