package service
|
|
import (
|
"basic.com/pubsub/protomsg.git"
|
"basic.com/valib/bhomeclient.git"
|
"basic.com/valib/bhomedbapi.git"
|
"encoding/json"
|
"time"
|
"vamicro/config"
|
"vamicro/extend/util"
|
"vamicro/system-service/models"
|
)
|
|
type ResourceConfigService struct {
|
|
}
|
|
func WatchEsAndWeedfsIp(bk bhomeclient.Broker) {
|
for {
|
initEsAndWeedfsIp(bk)
|
|
InitAppPermissions()
|
|
time.Sleep(3 * time.Second)
|
}
|
}
|
|
func initEsAndWeedfsIp(bk bhomeclient.Broker) {
|
devTyp := GetDevType(config.Server.DeviceType)
|
bp := false
|
if devTyp == DevType_Analysis { //只做分析(盒子),盒子必须加入集群才能正常工作
|
var clusterE models.Cluster
|
clusters, err := clusterE.FindAll()
|
if err ==nil && clusters !=nil && len(clusters) >0 {
|
c := clusters[0]
|
var nodeE models.Node
|
nodes, e := nodeE.FindNodesByClusterId(c.ClusterId)
|
if e == nil && nodes !=nil && len(nodes) >0 {
|
var ipArr []string
|
for _,n :=range nodes {
|
if !n.IsDelete {
|
typ := GetDevType(n.DeviceType)
|
if typ == DevType_Storage || typ == DevType_Analysis_Storage {
|
if ip,b := util.IpCheck(n.NodeIp);b {
|
ipArr = append(ipArr, ip)
|
}
|
}
|
}
|
}
|
if len(ipArr) > 0 {
|
var localConf models.LocalConfig
|
err := localConf.Select()
|
if err == nil {
|
found := false
|
for _,ipStr := range ipArr {
|
if ipStr == localConf.AlarmIp {
|
found = true
|
break
|
}
|
}
|
if !found { //当前设置的ip不可用,设置一个新的ip
|
localConf.AlarmIp = ipArr[0]
|
localConf.WebPicIp = ipArr[0]
|
localConf.Update()
|
bp = true
|
}
|
}
|
}
|
}
|
}
|
|
} else if devTyp == DevType_Storage || devTyp == DevType_Analysis_Storage { //分析带存储或者只存储,取本机即可
|
localIp, _, _ := util.GetLocalIP(config.Server.NetworkAdapter)
|
if localIp != "" {
|
var localConf models.LocalConfig
|
err := localConf.Select()
|
if err == nil {
|
if localConf.AlarmIp != localIp || localConf.WebPicIp != localIp {
|
localConf.AlarmIp = localIp
|
localConf.WebPicIp = localIp
|
localConf.Update()
|
bp = true
|
}
|
}
|
}
|
}
|
if bp {
|
pMsg := protomsg.DbChangeMessage{
|
Table:protomsg.TableChanged_T_Server,
|
Action:protomsg.DbAction_Update,
|
}
|
pb, _ := json.Marshal(pMsg)
|
bk.Publish(ProcName, pb)
|
}
|
}
|
|
func (rcs *ResourceConfigService) Save(reqBody models.ResourceConfig) bool {
|
b := false
|
if reqBody.IpType == models.IpType_Local {
|
localIp, _, _ := util.GetLocalIP(config.Server.NetworkAdapter)
|
if localIp != reqBody.ServiceIp {
|
reqBody.ServiceIp = localIp
|
}
|
}
|
|
var tmpConfig models.ResourceConfig
|
err := tmpConfig.Select()
|
if err == nil {
|
if reqBody.Update() {
|
b = true
|
}
|
} else {
|
if reqBody.Insert() {
|
b = true
|
}
|
}
|
if b {
|
gbIp := reqBody.ServiceIp //要么是本机ip,要么是漂移ip
|
if gbIp != "" {
|
//判断是否需要刷新国标,条件国标服务ip有变化
|
var gbApi bhomedbapi.Gb28181Api
|
flag, gbConfig := gbApi.Show()
|
if flag {
|
gbApi.Gb28181TreeRefresh(gbConfig.Id)
|
}
|
}
|
}
|
return b
|
}
|