Files
PandaX/pkg/initialize/event.go
2024-12-04 21:47:24 +08:00

43 lines
1.1 KiB
Go

package initialize
import (
"encoding/json"
"pandax/apps/device/services"
ruleEntity "pandax/apps/rule/entity"
"pandax/pkg/events"
"pandax/pkg/global"
"pandax/pkg/rule_engine"
"pandax/pkg/tool"
)
// 初始化事件监听
func InitEvents() {
// 监听规则链改变 更新所有绑定改规则链的产品
global.EventEmitter.On(events.ProductChainRuleEvent, func(ruleId string, codeData string) {
global.Log.Infof("规则链%s变更", ruleId)
list, _ := services.ProductModelDao.FindListByRule(ruleId)
if list != nil {
var lfData ruleEntity.RuleDataJson
err := tool.StringToStruct(codeData, &lfData)
if err != nil {
global.Log.Error("规则链序列化失败", err)
return
}
code, err := json.Marshal(lfData.DataCode)
if err != nil {
global.Log.Error("规则链序列化失败", err)
return
}
//新建规则链实体
instance, err := rule_engine.NewRuleChainInstance(ruleId, code)
if err != nil {
global.Log.Error("规则链初始化失败", err)
return
}
for _, product := range *list {
rule_engine.RuleEngine.SaveRuleInstance(product.Id, instance)
}
}
})
}