qixiaoning
9 天以前 eac932eb827c93e2e998ac1210c3f5e548af0dbf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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)
        }
    }
}
 
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)
    }
}