From 63645d248c765244488cd34dbc1bb6528ca6b7c7 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期二, 05 九月 2023 09:58:13 +0800 Subject: [PATCH] 修复编译 --- system-service/service/devInfoSync.go | 604 +++++++++++++++++++++++++++--------------------------- 1 files changed, 302 insertions(+), 302 deletions(-) diff --git a/system-service/service/devInfoSync.go b/system-service/service/devInfoSync.go index 9831d91..21ddcd0 100644 --- a/system-service/service/devInfoSync.go +++ b/system-service/service/devInfoSync.go @@ -1,302 +1,302 @@ -package service - -import ( - "encoding/json" - "os/exec" - "reflect" - "strconv" - "strings" - "time" - "vamicro/config" - "vamicro/extend/util" - "vamicro/system-service/models" - "vamicro/system-service/sys" - "vamicro/system-service/vo" - - "basic.com/valib/bhomedbapi.git" - "basic.com/valib/licence.git" - "basic.com/valib/logger.git" - uuid "github.com/satori/go.uuid" - "github.com/shirou/gopsutil/cpu" - "github.com/shirou/gopsutil/host" - "github.com/shirou/gopsutil/mem" -) - -func StartSyncDev() { - tk := time.NewTicker(30 * time.Second) - for { - select { - case <-tk.C: - syncDevToCloud() - default: - time.Sleep(2 * time.Second) - } - } -} - -const ( - token = "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQ3NDUwMjU5MjMsInVzZXIiOiJ7XCJpZFwiOlwiZTZjY2QzNmQtNGYxNi00NmZjLTg4ZDUtMDczNjU4NjZkMjA1XCIsXCJwZXJtaXNzaW9uc1wiOltcInByb2R1Y3RNYW5nZTpwdWJsaXNoXCIsXCJjb2RlTWFuZ2U6dmlld1wiLFwiZGV2aWNlTWFuYWdlOmFkZFwiLFwiYWRtaW5NYW5hZ2VcIixcIm9yZGVyTWFuZ2VcIixcImRldmljZU1hbmFnZTp2aWV3XCIsXCJwcm9kdWN0TWFuZ2U6YWRkXCIsXCJhZG1pbk1hbmFnZTp2aWV3XCIsXCJjb2RlTWFuZ2U6YWRkXCIsXCJwcm9kdWN0TWFuZ2U6b2ZmU2FsZVwiLFwib3JkZXJNYW5nZTpjYW5jZWxcIixcInByb2R1Y3RDZW50ZXI6ZG93bmxvYWRcIixcInByb2R1Y3RDZW50ZXI6YnV5XCIsXCJwcm9kdWN0TWFuZ2U6dmlld1wiLFwiYXBpXCIsXCJob21lXCIsXCJvcmRlck1hbmdlOnBheVwiLFwiYWRtaW5NYW5hZ2U6YWRkXCIsXCJvcmRlck1hbmdlOmRvd25sb2FkXCIsXCJwcm9kdWN0Q2VudGVyXCIsXCJkZXZpY2VNYW5hZ2U6dW5iaW5kXCIsXCJvcmRlck1hbmdlOnZpZXdcIixcImFkbWluTWFuYWdlOmVkaXRcIixcImRldmljZU1hbmFnZVwiLFwidmlwTWFuYWdlOmFkZFwiLFwidmlwTWFuYWdlOnZpZXdcIixcInByb2R1Y3RDZW50ZXI6dmlld1wiLFwidmlwTWFuYWdlOmVkaXRcIixcInZpcE1hbmFnZVwiLFwicHJvZHVjdE1hbmdlOmVkaXRcIixcImNvZGVNYW5nZVwiLFwicHJvZHVjdE1hbmdlXCJdLFwidXNlcm5hbWVcIjpcImJhc2ljXCJ9In0.vwjAFkWuEyadRLvIOGK8LFE3MjpY3SQ7j6AlTXnQDG8" - tokenForSaas = "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQ3NDUwMjU5MjMsInVzZXIiOiJ7XCJpZFwiOlwiZTZjY2QzNmQtNGYxNi00NmZjLTg4ZDUtMDczNjU4NjZkMjA1XCIsXCJwZXJtaXNzaW9uc1wiOltcInByb2R1Y3RNYW5nZTpwdWJsaXNoXCIsXCJjb2RlTWFuZ2U6dmlld1wiLFwiZGV2aWNlTWFuYWdlOmFkZFwiLFwiYWRtaW5NYW5hZ2VcIixcIm9yZGVyTWFuZ2VcIixcImRldmljZU1hbmFnZTp2aWV3XCIsXCJwcm9kdWN0TWFuZ2U6YWRkXCIsXCJhZG1pbk1hbmFnZTp2aWV3XCIsXCJjb2RlTWFuZ2U6YWRkXCIsXCJwcm9kdWN0TWFuZ2U6b2ZmU2FsZVwiLFwib3JkZXJNYW5nZTpjYW5jZWxcIixcInByb2R1Y3RDZW50ZXI6ZG93bmxvYWRcIixcInByb2R1Y3RDZW50ZXI6YnV5XCIsXCJwcm9kdWN0TWFuZ2U6dmlld1wiLFwiYXBpXCIsXCJob21lXCIsXCJvcmRlck1hbmdlOnBheVwiLFwiYWRtaW5NYW5hZ2U6YWRkXCIsXCJvcmRlck1hbmdlOmRvd25sb2FkXCIsXCJwcm9kdWN0Q2VudGVyXCIsXCJkZXZpY2VNYW5hZ2U6dW5iaW5kXCIsXCJvcmRlck1hbmdlOnZpZXdcIixcImFkbWluTWFuYWdlOmVkaXRcIixcImRldmljZU1hbmFnZVwiLFwidmlwTWFuYWdlOmFkZFwiLFwidmlwTWFuYWdlOnZpZXdcIixcInByb2R1Y3RDZW50ZXI6dmlld1wiLFwidmlwTWFuYWdlOmVkaXRcIixcInZpcE1hbmFnZVwiLFwicHJvZHVjdE1hbmdlOmVkaXRcIixcImNvZGVNYW5nZVwiLFwicHJvZHVjdE1hbmdlXCJdLFwidXNlcm5hbWVcIjpcImJhc2ljXCJ9In0.vwjAFkWuEyadRLvIOGK8LFE3MjpY3SQ7j6AlTXnQDG8" -) - -var lstSync *vo.SyncDevInfo - -/* -璁惧淇℃伅鍚屾鍒板晢鍩庝簯绔� -*/ -func syncDevToCloud() { - var sysconf models.LocalConfig - err := sysconf.Select() - if err != nil { // 鏌ヨ鏄惁瀛樺湪 - return - } - i := vo.SyncDevInfo{} - ipv4, mask, _ := sys.GetLocalIP(config.Server.NetworkAdapter) - gateway, _ := sys.GetDefaultRoute(config.Server.NetworkAdapter) - dns, _ := sys.GetDnsServer() - machineCode := licence.GetMachineCode() - //1.鏀堕泦璁惧鍩烘湰淇℃伅 - i.Detail = vo.DevDetail{ - ServerId: config.Server.AnalyServerId, - MachineCode: machineCode, - ServerName: sysconf.ServerName, - ServerPort: sys.GetNginxListenPort(), - Ip: ipv4, - SubMask: mask, - Gateway: gateway, - Dns: dns, - DeviceNum: config.Server.DeviceNum, - DeviceType: config.Server.DeviceType, - DeviceModel: config.Server.DeviceModel, - DeviceSerialNum: config.Server.DeviceSerialNum, - MasterVersion: config.Server.MasterVersion, - WebVersion: "1.0.0", - DeviceDesc: config.Server.DeviceDesc, - ChannelCount: int(sysconf.RealMax), - NeedAuthPwd: sysconf.NeedAuthPwd, - AuthPwd: sysconf.AuthPwd, - } - if strings.HasPrefix(util.GetPlatform(), "X86") { - vg, _ := util.NvidiaVGpu() - i.Detail.VGpu = vg - } - cmd := exec.Command("/bin/sh", "-c", "lsblk -d | grep -v part | grep -v SWAP | grep -v M | grep disk | awk '{printf $4\" \"}'") - disks, _ := cmd.Output() - cpu, _ := cpu.Info() - mem, _ := mem.VirtualMemory() - hi, _ := host.Info() - i.Detail.Disk = string(disks) - i.Detail.Runtime = util.TimeSpan(time.Unix(int64(hi.BootTime), 0)) - if cpu != nil && len(cpu) > 0 { - i.Detail.Cpu = cpu[0].ModelName - } - if mem != nil { - i.Detail.Mem = mem.Total - } - - var initE models.SysInit - if i2, _ := initE.Select(); i2 > 0 { - i.Detail.FirstUseTime = initE.InitTime - i.Detail.ProvinceId = initE.ProvinceId - i.Detail.CityId = initE.CityId - i.Detail.CountyId = initE.CountyId - } - bSn, e := HttpRCT("POST", "http://127.0.0.1:8888/data/api-v/version/snBus", nil, 3*time.Second) - if e == nil { - var dRet bhomedbapi.Result - if e := json.Unmarshal(bSn, &dRet); e == nil && dRet.Success { - type tis struct { - InstallTime string `json:"installTime"` - } - var is tis - if bts, e := json.Marshal(dRet.Data); e == nil { - if e = json.Unmarshal(bts, &is); e == nil { - i.Detail.InstallTime = is.InstallTime - } - } - } - } - - //2.鏀堕泦宸插畨瑁呯畻娉� - var sdkApi bhomedbapi.SdkApi - sdks := sdkApi.FindAll("") - //3.鏀堕泦宸插畨瑁呭簲鐢� - var appApi bhomedbapi.AppApi - aps := appApi.FindAll("") - - i.Sdks = sdks - i.Apps = aps - - diff := true - if lstSync != nil { - if reflect.DeepEqual(i, *lstSync) { - diff = false - } - } - - // 鍚屾璁惧鏁版嵁鍒皊aas 宸茶縼绉昏嚦saas-service - //if config.SaasConf.Url != "" { - // body := util.Struct2Map(i) - // url := "http://" + config.SaasConf.Url + "/data/api-d/device/syncDevToCloud" - // - // header := map[string]string{ - // "Authorization": tokenForSaas, - // } - // data, err := util.DoPostRequest(url, util.CONTENT_TYPE_JSON, body, nil, header, 10*time.Second) - // if err != nil { - // logger.Error("send devInfo to saas cloud err:", err, string(data)) - // } else { - // logger.Debug("syncDevToCloud to saas result:", string(data)) - // var result bhomedbapi.Result - // err = json.Unmarshal(data, &result) - // if err != nil { - // logger.Error("unmarshal err:", err) - // } - // } - //} - - if diff { - // 鍚屾璁惧淇℃伅鍒板晢鍩� - if util.GetShopUrl() != "" { - body := util.Struct2Map(i) - url := "http://" + util.GetShopUrl() + "/data/api-d/device/syncDevToCloud" - header := map[string]string{ - "Authorization": token, - } - data, err := util.DoPostRequest(url, util.CONTENT_TYPE_JSON, body, nil, header, 10*time.Second) - if err != nil { - logger.Error("send devInfo to cloud err:", err) - return - } - logger.Debug("syncDevToCloud result:", string(data)) - var result bhomedbapi.Result - err = json.Unmarshal(data, &result) - if err != nil { - logger.Error("unmarshal err:", err) - return - } - if result.Success { - lstSync = &i - } else { - logger.Error("syncDevToCloud result:", result) - } - } - - //鏌ョ湅鏄惁鏈夌鐞嗚妭鐐圭鐞嗙潃姝ゅ彴璁惧 - syncToDevManager(i) - - //闇�瑕佷富鍔ㄩ�氱煡serf1鏇存柊鏁版嵁锛岃澶囩鐞哸pp鐨勬暟鎹粠serf1涓幏鍙栫殑 - - } -} - -func syncToDevManager(info vo.SyncDevInfo) error { - var ad models.AuthDevice - managers := ad.FindByStatus(models.AuthStatus_Agreed) //鑾峰彇宸叉巿鏉冪殑璁惧鍒楄〃 - if len(managers) > 0 { - //鍐欏叆device,deviceApp鍙奷eviceSdk琛ㄤ腑閫氳繃serf鍚屾鍒板叾瀹冭妭鐐� - tx := models.GetDB().Begin() - var err error - defer func() { - if err != nil && tx != nil { - logger.Debug("syncToDevManager err:", err) - tx.Rollback() - } - }() - var dE models.Device - dc, e := dE.FindByDevId(info.Detail.ServerId) - if e == nil && dc > 0 { //宸插瓨鍦ㄥ垯鏇存柊 - cd := vo.Copy2DeviceModel(info.Detail) - cd.Id = dE.Id - cd.ActivateCode = dE.ActivateCode - cd.ProductId = dE.ProductId - cd.UserId = dE.UserId - cd.Address = dE.Address - cd.DevGpu = dE.DevGpu - cd.InstallTime = dE.InstallTime - cd.FirstUseTime = dE.FirstUseTime - cd.ClusterId = dE.ClusterId - cd.ClusterName = dE.ClusterName - cd.Status = dE.Status - cd.CreateTime = dE.CreateTime - cd.UpdateTime = dE.UpdateTime - if err = tx.Table(cd.TableName()).Save(&cd).Error; err != nil { - return err - } - } else { //鍒涘缓 - cd := vo.Copy2DeviceModel(info.Detail) - cd.Id = uuid.NewV4().String() - if err = tx.Table(cd.TableName()).Create(&cd).Error; err != nil { - return err - } - } - if len(info.Apps) > 0 { - for _, a := range info.Apps { - var da models.DeviceApp - if row, _ := da.Exist(config.Server.AnalyServerId, a.Id); row > 0 { - da.MachineCode = info.Detail.MachineCode - da.ExpireTime = "" - da.ActivateCode = "" - da.InstallTime = "" - if err = tx.Table(da.TableName()).Where("id=?", da.Id).Update(&da).Error; err != nil { - return err - } - } else { - tmp := models.DeviceApp{ - Id: uuid.NewV4().String(), - DevId: config.Server.AnalyServerId, - MachineCode: info.Detail.MachineCode, - ActivateCode: "", - AppId: a.Id, - ExpireTime: "", - InstallTime: "", - } - if err = tx.Table(tmp.TableName()).Create(&tmp).Error; err != nil { - return err - } - } - } - } - if len(info.Sdks) > 0 { - for _, s := range info.Sdks { - var ds models.DeviceSdk - if row, _ := ds.Exist(config.Server.AnalyServerId, s.Id); row > 0 { - ds.MachineCode = info.Detail.MachineCode - ds.ExpireTime = "" - ds.ActivateCode = "" - ds.InstallTime = "" - if err = tx.Table(ds.TableName()).Where("id=?", ds.Id).Update(&ds).Error; err != nil { - return err - } - } else { - tmp := models.DeviceSdk{ - Id: uuid.NewV4().String(), - DevId: config.Server.AnalyServerId, - MachineCode: info.Detail.MachineCode, - ActivateCode: "", - SdkId: s.Id, - ExpireTime: "", - InstallTime: "", - } - if err = tx.Table(tmp.TableName()).Create(&tmp).Error; err != nil { - return err - } - } - } - } - - tx.Commit() - return nil - } - return nil -} - -//璁$畻鎸佺画鏃堕暱 -func timeSpan(startTime time.Time) string { - sp := time.Since(startTime) - day := strconv.Itoa(int(sp.Hours() / 24)) //澶╂暟 - hour := strconv.Itoa(int(sp.Hours()) % 24) //灏忔椂鏁� - minute := strconv.Itoa(int(sp.Minutes()) % 60) //鍒嗛挓鏁� - sec := strconv.Itoa(int(sp.Seconds()) % 60) //绉掓暟 - return day + "澶�" + hour + "鏃�" + minute + "鍒�" + sec + "绉�" -} +package service + +import ( + "encoding/json" + "os/exec" + "reflect" + "strconv" + "strings" + "time" + "vamicro/config" + "vamicro/extend/util" + "vamicro/system-service/models" + "vamicro/system-service/sys" + "vamicro/system-service/vo" + + "basic.com/valib/bhomedbapi.git" + "basic.com/valib/licence.git" + "basic.com/valib/logger.git" + uuid "github.com/satori/go.uuid" + "github.com/shirou/gopsutil/cpu" + "github.com/shirou/gopsutil/host" + "github.com/shirou/gopsutil/mem" +) + +func StartSyncDev() { + tk := time.NewTicker(30 * time.Second) + for { + select { + case <-tk.C: + syncDevToCloud() + default: + time.Sleep(2 * time.Second) + } + } +} + +const ( + token = "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQ3NDUwMjU5MjMsInVzZXIiOiJ7XCJpZFwiOlwiZTZjY2QzNmQtNGYxNi00NmZjLTg4ZDUtMDczNjU4NjZkMjA1XCIsXCJwZXJtaXNzaW9uc1wiOltcInByb2R1Y3RNYW5nZTpwdWJsaXNoXCIsXCJjb2RlTWFuZ2U6dmlld1wiLFwiZGV2aWNlTWFuYWdlOmFkZFwiLFwiYWRtaW5NYW5hZ2VcIixcIm9yZGVyTWFuZ2VcIixcImRldmljZU1hbmFnZTp2aWV3XCIsXCJwcm9kdWN0TWFuZ2U6YWRkXCIsXCJhZG1pbk1hbmFnZTp2aWV3XCIsXCJjb2RlTWFuZ2U6YWRkXCIsXCJwcm9kdWN0TWFuZ2U6b2ZmU2FsZVwiLFwib3JkZXJNYW5nZTpjYW5jZWxcIixcInByb2R1Y3RDZW50ZXI6ZG93bmxvYWRcIixcInByb2R1Y3RDZW50ZXI6YnV5XCIsXCJwcm9kdWN0TWFuZ2U6dmlld1wiLFwiYXBpXCIsXCJob21lXCIsXCJvcmRlck1hbmdlOnBheVwiLFwiYWRtaW5NYW5hZ2U6YWRkXCIsXCJvcmRlck1hbmdlOmRvd25sb2FkXCIsXCJwcm9kdWN0Q2VudGVyXCIsXCJkZXZpY2VNYW5hZ2U6dW5iaW5kXCIsXCJvcmRlck1hbmdlOnZpZXdcIixcImFkbWluTWFuYWdlOmVkaXRcIixcImRldmljZU1hbmFnZVwiLFwidmlwTWFuYWdlOmFkZFwiLFwidmlwTWFuYWdlOnZpZXdcIixcInByb2R1Y3RDZW50ZXI6dmlld1wiLFwidmlwTWFuYWdlOmVkaXRcIixcInZpcE1hbmFnZVwiLFwicHJvZHVjdE1hbmdlOmVkaXRcIixcImNvZGVNYW5nZVwiLFwicHJvZHVjdE1hbmdlXCJdLFwidXNlcm5hbWVcIjpcImJhc2ljXCJ9In0.vwjAFkWuEyadRLvIOGK8LFE3MjpY3SQ7j6AlTXnQDG8" + tokenForSaas = "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQ3NDUwMjU5MjMsInVzZXIiOiJ7XCJpZFwiOlwiZTZjY2QzNmQtNGYxNi00NmZjLTg4ZDUtMDczNjU4NjZkMjA1XCIsXCJwZXJtaXNzaW9uc1wiOltcInByb2R1Y3RNYW5nZTpwdWJsaXNoXCIsXCJjb2RlTWFuZ2U6dmlld1wiLFwiZGV2aWNlTWFuYWdlOmFkZFwiLFwiYWRtaW5NYW5hZ2VcIixcIm9yZGVyTWFuZ2VcIixcImRldmljZU1hbmFnZTp2aWV3XCIsXCJwcm9kdWN0TWFuZ2U6YWRkXCIsXCJhZG1pbk1hbmFnZTp2aWV3XCIsXCJjb2RlTWFuZ2U6YWRkXCIsXCJwcm9kdWN0TWFuZ2U6b2ZmU2FsZVwiLFwib3JkZXJNYW5nZTpjYW5jZWxcIixcInByb2R1Y3RDZW50ZXI6ZG93bmxvYWRcIixcInByb2R1Y3RDZW50ZXI6YnV5XCIsXCJwcm9kdWN0TWFuZ2U6dmlld1wiLFwiYXBpXCIsXCJob21lXCIsXCJvcmRlck1hbmdlOnBheVwiLFwiYWRtaW5NYW5hZ2U6YWRkXCIsXCJvcmRlck1hbmdlOmRvd25sb2FkXCIsXCJwcm9kdWN0Q2VudGVyXCIsXCJkZXZpY2VNYW5hZ2U6dW5iaW5kXCIsXCJvcmRlck1hbmdlOnZpZXdcIixcImFkbWluTWFuYWdlOmVkaXRcIixcImRldmljZU1hbmFnZVwiLFwidmlwTWFuYWdlOmFkZFwiLFwidmlwTWFuYWdlOnZpZXdcIixcInByb2R1Y3RDZW50ZXI6dmlld1wiLFwidmlwTWFuYWdlOmVkaXRcIixcInZpcE1hbmFnZVwiLFwicHJvZHVjdE1hbmdlOmVkaXRcIixcImNvZGVNYW5nZVwiLFwicHJvZHVjdE1hbmdlXCJdLFwidXNlcm5hbWVcIjpcImJhc2ljXCJ9In0.vwjAFkWuEyadRLvIOGK8LFE3MjpY3SQ7j6AlTXnQDG8" +) + +var lstSync *vo.SyncDevInfo + +/* +璁惧淇℃伅鍚屾鍒板晢鍩庝簯绔� +*/ +func syncDevToCloud() { + var sysconf models.LocalConfig + err := sysconf.Select() + if err != nil { // 鏌ヨ鏄惁瀛樺湪 + return + } + i := vo.SyncDevInfo{} + ipv4, mask, _ := sys.GetLocalIP(config.Server.NetworkAdapter) + gateway, _ := sys.GetDefaultRoute(config.Server.NetworkAdapter) + dns, _ := sys.GetDnsServer() + machineCode := licence.GetMachineCode() + //1.鏀堕泦璁惧鍩烘湰淇℃伅 + i.Detail = vo.DevDetail{ + ServerId: config.Server.AnalyServerId, + MachineCode: machineCode, + ServerName: sysconf.ServerName, + ServerPort: sys.GetNginxListenPort(), + Ip: ipv4, + SubMask: mask, + Gateway: gateway, + Dns: dns, + DeviceNum: config.Server.DeviceNum, + DeviceType: config.Server.DeviceType, + DeviceModel: config.Server.DeviceModel, + DeviceSerialNum: config.Server.DeviceSerialNum, + MasterVersion: config.Server.MasterVersion, + WebVersion: "1.0.0", + DeviceDesc: config.Server.DeviceDesc, + ChannelCount: int(sysconf.RealMax), + NeedAuthPwd: sysconf.NeedAuthPwd, + AuthPwd: sysconf.AuthPwd, + } + if strings.HasPrefix(util.GetPlatform(), "X86") { + vg, _ := util.NvidiaVGpu() + i.Detail.VGpu = vg + } + cmd := exec.Command("/bin/sh", "-c", "lsblk -d | grep -v part | grep -v SWAP | grep -v M | grep disk | awk '{printf $4\" \"}'") + disks, _ := cmd.Output() + cpu, _ := cpu.Info() + mem, _ := mem.VirtualMemory() + hi, _ := host.Info() + i.Detail.Disk = string(disks) + i.Detail.Runtime = util.TimeSpan(time.Unix(int64(hi.BootTime), 0)) + if cpu != nil && len(cpu) > 0 { + i.Detail.Cpu = cpu[0].ModelName + } + if mem != nil { + i.Detail.Mem = mem.Total + } + + var initE models.SysInit + if i2, _ := initE.Select(); i2 > 0 { + i.Detail.FirstUseTime = initE.InitTime + i.Detail.ProvinceId = initE.ProvinceId + i.Detail.CityId = initE.CityId + i.Detail.CountyId = initE.CountyId + } + bSn, e := HttpRCT("POST", "http://127.0.0.1:8888/data/api-v/version/snBus", nil, 3*time.Second) + if e == nil { + var dRet bhomedbapi.Result + if e := json.Unmarshal(bSn, &dRet); e == nil && dRet.Success { + type tis struct { + InstallTime string `json:"installTime"` + } + var is tis + if bts, e := json.Marshal(dRet.Data); e == nil { + if e = json.Unmarshal(bts, &is); e == nil { + i.Detail.InstallTime = is.InstallTime + } + } + } + } + + //2.鏀堕泦宸插畨瑁呯畻娉� + var sdkApi bhomedbapi.SdkApi + sdks := sdkApi.FindAll("") + //3.鏀堕泦宸插畨瑁呭簲鐢� + var appApi bhomedbapi.AppApi + aps := appApi.FindAll("") + + i.Sdks = sdks + i.Apps = aps + + diff := true + if lstSync != nil { + if reflect.DeepEqual(i, *lstSync) { + diff = false + } + } + + // 鍚屾璁惧鏁版嵁鍒皊aas 宸茶縼绉昏嚦saas-service + //if config.SaasConf.Url != "" { + // body := util.Struct2Map(i) + // url := "http://" + config.SaasConf.Url + "/data/api-d/device/syncDevToCloud" + // + // header := map[string]string{ + // "Authorization": tokenForSaas, + // } + // data, err := util.DoPostRequest(url, util.CONTENT_TYPE_JSON, body, nil, header, 10*time.Second) + // if err != nil { + // logger.Error("send devInfo to saas cloud err:", err, string(data)) + // } else { + // logger.Debug("syncDevToCloud to saas result:", string(data)) + // var result bhomedbapi.Result + // err = json.Unmarshal(data, &result) + // if err != nil { + // logger.Error("unmarshal err:", err) + // } + // } + //} + + if diff { + // 鍚屾璁惧淇℃伅鍒板晢鍩� + if util.GetShopUrl() != "" { + body := util.Struct2Map(i) + url := "http://" + util.GetShopUrl() + "/data/api-d/device/syncDevToCloud" + header := map[string]string{ + "Authorization": token, + } + data, err := util.DoPostRequest(url, util.CONTENT_TYPE_JSON, body, nil, header, 10*time.Second) + if err != nil { + logger.Error("send devInfo to cloud err:", err) + return + } + logger.Debug("syncDevToCloud result:", string(data)) + var result bhomedbapi.Result + err = json.Unmarshal(data, &result) + if err != nil { + logger.Error("unmarshal err:", err) + return + } + if result.Success { + lstSync = &i + } else { + logger.Error("syncDevToCloud result:", result) + } + } + + //鏌ョ湅鏄惁鏈夌鐞嗚妭鐐圭鐞嗙潃姝ゅ彴璁惧 + syncToDevManager(i) + + //闇�瑕佷富鍔ㄩ�氱煡serf1鏇存柊鏁版嵁锛岃澶囩鐞哸pp鐨勬暟鎹粠serf1涓幏鍙栫殑 + + } +} + +func syncToDevManager(info vo.SyncDevInfo) error { + var ad models.AuthDevice + managers := ad.FindByStatus(models.AuthStatus_Agreed) //鑾峰彇宸叉巿鏉冪殑璁惧鍒楄〃 + if len(managers) > 0 { + //鍐欏叆device,deviceApp鍙奷eviceSdk琛ㄤ腑閫氳繃serf鍚屾鍒板叾瀹冭妭鐐� + tx := models.GetDB().Begin() + var err error + defer func() { + if err != nil && tx != nil { + logger.Debug("syncToDevManager err:", err) + tx.Rollback() + } + }() + var dE models.Device + dc, e := dE.FindByDevId(info.Detail.ServerId) + if e == nil && dc > 0 { //宸插瓨鍦ㄥ垯鏇存柊 + cd := vo.Copy2DeviceModel(info.Detail) + cd.Id = dE.Id + cd.ActivateCode = dE.ActivateCode + cd.ProductId = dE.ProductId + cd.UserId = dE.UserId + cd.Address = dE.Address + cd.DevGpu = dE.DevGpu + cd.InstallTime = dE.InstallTime + cd.FirstUseTime = dE.FirstUseTime + cd.ClusterId = dE.ClusterId + cd.ClusterName = dE.ClusterName + cd.Status = dE.Status + cd.CreateTime = dE.CreateTime + cd.UpdateTime = dE.UpdateTime + if err = tx.Table(cd.TableName()).Save(&cd).Error; err != nil { + return err + } + } else { //鍒涘缓 + cd := vo.Copy2DeviceModel(info.Detail) + cd.Id = uuid.NewV4().String() + if err = tx.Table(cd.TableName()).Create(&cd).Error; err != nil { + return err + } + } + if len(info.Apps) > 0 { + for _, a := range info.Apps { + var da models.DeviceApp + if row, _ := da.Exist(config.Server.AnalyServerId, a.Id); row > 0 { + da.MachineCode = info.Detail.MachineCode + da.ExpireTime = "" + da.ActivateCode = "" + da.InstallTime = "" + if err = tx.Table(da.TableName()).Where("id=?", da.Id).Update(&da).Error; err != nil { + return err + } + } else { + tmp := models.DeviceApp{ + Id: uuid.NewV4().String(), + DevId: config.Server.AnalyServerId, + MachineCode: info.Detail.MachineCode, + ActivateCode: "", + AppId: a.Id, + ExpireTime: "", + InstallTime: "", + } + if err = tx.Table(tmp.TableName()).Create(&tmp).Error; err != nil { + return err + } + } + } + } + if len(info.Sdks) > 0 { + for _, s := range info.Sdks { + var ds models.DeviceSdk + if row, _ := ds.Exist(config.Server.AnalyServerId, s.Id); row > 0 { + ds.MachineCode = info.Detail.MachineCode + ds.ExpireTime = "" + ds.ActivateCode = "" + ds.InstallTime = "" + if err = tx.Table(ds.TableName()).Where("id=?", ds.Id).Update(&ds).Error; err != nil { + return err + } + } else { + tmp := models.DeviceSdk{ + Id: uuid.NewV4().String(), + DevId: config.Server.AnalyServerId, + MachineCode: info.Detail.MachineCode, + ActivateCode: "", + SdkId: s.Id, + ExpireTime: "", + InstallTime: "", + } + if err = tx.Table(tmp.TableName()).Create(&tmp).Error; err != nil { + return err + } + } + } + } + + tx.Commit() + return nil + } + return nil +} + +//璁$畻鎸佺画鏃堕暱 +func timeSpan(startTime time.Time) string { + sp := time.Since(startTime) + day := strconv.Itoa(int(sp.Hours() / 24)) //澶╂暟 + hour := strconv.Itoa(int(sp.Hours()) % 24) //灏忔椂鏁� + minute := strconv.Itoa(int(sp.Minutes()) % 60) //鍒嗛挓鏁� + sec := strconv.Itoa(int(sp.Seconds()) % 60) //绉掓暟 + return day + "澶�" + hour + "鏃�" + minute + "鍒�" + sec + "绉�" +} -- Gitblit v1.8.0