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