liuxiaolong
2020-06-05 7277a23ca81123a95cbf60cbda65ca2fd6e27c17
service/SdkDownLoad.go
@@ -12,6 +12,9 @@
   "os"
   "path/filepath"
   "strings"
   "webserver/extend/config"
   reqUtil "webserver/extend/util"
   "webserver/util"
@@ -127,30 +130,59 @@
   }
}
func GetSdkList(sdkName string) []map[string]interface{} {
   // 待返回的数据
   sdks, idsCache := queryDatabase(sdkName)
   // 查询本地已经存在的算法和远端的全部算法, 然后和已安装的比对, 返回全部可用的算法组. 未安装的算法在前端走下载流程
   localSdks := GetLocalSdks()
   for _, sdk := range localSdks {
      id := sdk["id"].(string)
      if !idsCache[id] {
         idsCache[id] = true
         sdk["enable"] = false
         sdk["installed"] = false
         // 不返回参数信息
         delete(sdk, "args")
         sdks = append(sdks, sdk)
func GetSdkList(sdkName string) []SdkInsOrUpgrade {
   var api dbapi.SdkApi
   localSdks := api.FindAll(sdkName) //本地已安装所有算法
   localSdkM := make(map[string]SdkInsOrUpgrade)
   for _,ls :=range localSdks {
      siou := SdkInsOrUpgrade{
         Installed: true,
      }
      siou.Sdk = Sdk{
         Id: ls.Id,
         IpcId: ls.IpcId,
         SdkType: ls.SdkType,
         SdkName: ls.SdkName,
         Icon: ls.Icon,
         Url: ls.Url,
         CreateTime: ls.CreateTime,
         CreateBy: ls.CreateBy,
         UpdateTime: ls.UpdateTime,
         Enable: ls.Enable,
         DelFlag: int(ls.DelFlag),
         IconBlob: ls.IconBlob,
         Version: ls.Version,
      }
      localSdkM[siou.Id] = siou
   }
   // 目前还没有远端算法库,
   // remoteSdks := getRemoteSdks()
   //远端可用的算法
   remoteSdks := findAllMySdk()
   for sdkId,sdk := range remoteSdks {
      if v,ok := localSdkM[sdkId];ok { //本地已安装
         ls := v
         if shouldVersionBeUpgrade(ls.Version, sdk.Version) { //判断版本号是否需要升级
            ls.Installed = true
            ls.IsUpgrade = true //需要升级
            ls.RemoteVersion = sdk.Version //远端的版本号
         }
         localSdkM[sdkId] = ls
      } else { //本地未安装,需要安装
         bIns := SdkInsOrUpgrade{
            RemoteVersion: sdk.Version,
            IsUpgrade: false,
            Installed: false,
         }
         bIns.Sdk = sdk
         localSdkM[sdkId] = bIns
      }
   }
   sdks := make([]SdkInsOrUpgrade, 0)
   for _,v := range localSdkM {
      sdks = append(sdks, v)
   }
   return sdks
}
@@ -177,6 +209,42 @@
   return sdks, ids
}
type shopSdks struct {
   Sdks []Sdk `json:"sdks"`
}
func findAllMySdk() map[string]Sdk {
   token := "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1OTEzODA3ODksInVzZXIiOiJ7XCJpZFwiOlwiZTZjY2QzNmQtNGYxNi00NmZjLTg4ZDUtMDczNjU4NjZkMjA1XCIsXCJwZXJtaXNzaW9uc1wiOltcIm9yZGVyTWFuZ2U6ZG93bmxvYWRcIixcImRldmljZU1hbmFnZTp1bmJpbmRcIixcImNvZGVNYW5nZVwiLFwidmlwTWFuYWdlOmFkZFwiLFwiYWRtaW5NYW5hZ2U6ZWRpdFwiLFwiY29kZU1hbmdlOnZpZXdcIixcImNvZGVNYW5nZTphZGRcIixcImFkbWluTWFuYWdlXCIsXCJvcmRlck1hbmdlOmNhbmNlbFwiLFwicHJvZHVjdENlbnRlcjpidXlcIixcInByb2R1Y3RDZW50ZXJcIixcInByb2R1Y3RNYW5nZTp2aWV3XCIsXCJ2aXBNYW5hZ2U6dmlld1wiLFwib3JkZXJNYW5nZVwiLFwicHJvZHVjdENlbnRlcjp2aWV3XCIsXCJkZXZpY2VNYW5hZ2VcIixcImFkbWluTWFuYWdlOmFkZFwiLFwicHJvZHVjdE1hbmdlOmFkZFwiLFwiYWRtaW5NYW5hZ2U6dmlld1wiLFwicHJvZHVjdE1hbmdlXCIsXCJvcmRlck1hbmdlOnZpZXdcIixcImRldmljZU1hbmFnZTp2aWV3XCIsXCJvcmRlck1hbmdlOnBheVwiLFwidmlwTWFuYWdlOmVkaXRcIixcInZpcE1hbmFnZVwiLFwicHJvZHVjdE1hbmdlOmVkaXRcIixcInByb2R1Y3RNYW5nZTpwdWJsaXNoXCIsXCJkZXZpY2VNYW5hZ2U6YWRkXCIsXCJhcGlcIixcImhvbWVcIixcInByb2R1Y3RNYW5nZTpvZmZTYWxlXCIsXCJwcm9kdWN0Q2VudGVyOmRvd25sb2FkXCJdLFwidXNlcm5hbWVcIjpcImJhc2ljXCJ9In0.HwRobdFLtMK7ni5OKk4_NAyqpKGuUlUbqF3HBJMJuOk"
   url := "http://192.168.20.10:7004/data/api-s/sdk/findAllMySdk"
   fmt.Println("token:", token, "url:", url)
   paramBody := map[string]interface{} {
      "serverId": config.Server.AnalyServerId,
      "machineCode": "",
   }
   header := map[string]string {
      "Authorization": token,
   }
   respBody, err := reqUtil.DoPostRequest(url, reqUtil.CONTENT_TYPE_JSON, paramBody, nil, header)
   if err != nil {
      return nil
   }
   var res dbapi.Result
   if err = json.Unmarshal(respBody, &res); err != nil {
      return nil
   }
   bytes, _ := json.Marshal(res.Data)
   var ss shopSdks
   if err := json.Unmarshal(bytes, &ss);err != nil {
      return nil
   }
   m := make(map[string]Sdk)
   for _,s := range ss.Sdks {
      m[s.Id] = s
   }
   return m
}
func GetLocalSdks() []map[string]interface{} {
   var algos = []map[string]interface{}{}