package service
|
|
import (
|
"basic.com/valib/bhomeclient.git"
|
"basic.com/valib/bhomedbapi.git"
|
"basic.com/valib/logger.git"
|
"context"
|
"encoding/json"
|
"time"
|
"vamicro/system-service/models"
|
)
|
|
func CollectDeviceInfo(ctx context.Context, bk bhomeclient.Broker) {
|
tk := time.NewTicker(time.Second * 10)
|
for {
|
select {
|
case <-ctx.Done():
|
logger.Debug("ctx done")
|
return
|
case <-tk.C:
|
collect(bk)
|
default:
|
time.Sleep(time.Second)
|
}
|
}
|
}
|
|
type DevCollect struct {
|
DeviceList []models.Device `json:"deviceList"`
|
Sdks []SdkFill `json:"sdks"`
|
Apps []AppFill `json:"apps"`
|
}
|
|
type SdkFill struct {
|
models.DeviceSdk
|
SdkName string `json:"sdkName"` //汇总展现到页面上,此进程无法获取app和sdks表信息
|
IconBlob string `json:"iconBlob"`
|
IconBlob2 string `json:"iconBlob2"`
|
Version string `json:"version"`
|
Upgrade bool `json:"upgrade"` //判断是否需要升级
|
}
|
|
type AppFill struct {
|
models.DeviceApp
|
AppName string `json:"appName"` //汇总展现到页面上,此进程无法获取app和sdks表信息
|
IconBlob string `json:"iconBlob"`
|
IconBlob2 string `json:"iconBlob2"`
|
Version string `json:"version"`
|
IsDefault bool `json:"isDefault"`
|
Upgrade bool `json:"upgrade"` //判断是否需要升级
|
}
|
|
func collect(bk bhomeclient.Broker) {
|
var dc DevCollect
|
var d models.Device
|
var ds models.DeviceSdk
|
var da models.DeviceApp
|
dc.DeviceList = d.FindAll()
|
dsArr := ds.FindAll()
|
daArr := da.FindAll()
|
sdkApi := bhomedbapi.SdkApi{}
|
appApi := bhomedbapi.AppApi{}
|
sdkMap := sdkApi.FindAllMap()
|
appMap := appApi.FindAppMap()
|
for _, s := range dsArr {
|
sf := SdkFill{}
|
sf.DeviceSdk = s
|
if v,ok := sdkMap[s.SdkId];ok {
|
sf.SdkName = v.SdkName
|
sf.IconBlob = v.IconBlob
|
sf.IconBlob2 = v.IconBlob2
|
sf.Version = v.Version
|
|
}
|
dc.Sdks = append(dc.Sdks, sf)
|
}
|
for _, a := range daArr {
|
af := AppFill{}
|
af.DeviceApp = a
|
if v,ok := appMap[a.AppId];ok {
|
af.AppName = v.Name
|
af.IconBlob = v.IconBlob
|
af.IconBlob2 = v.IconBlob2
|
af.Version = v.Version
|
af.IsDefault = v.IsDefault
|
}
|
dc.Apps = append(dc.Apps, af)
|
}
|
data, err := json.Marshal(dc)
|
if err == nil {
|
bk.Publish("collect-manage-device-info", data)
|
} else {
|
logger.Error("marshal err:", err)
|
}
|
}
|