zhangzengfei
2023-09-04 e8e536d1cb52d2126c8c7ce2ba1c7a76f7208678
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
94
95
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)
    }
}