liuxiaolong
2020-07-29 fc91703f3cbee4dac9e56c3da694fccb386f4ce3
service/SdkInstall.go
@@ -105,6 +105,87 @@
   }
}
//解压上传的算法安装包
func unPackPatchPackage(identifier string, ext string) (bool,error) {
   configPatchPath := ""
   if config.Server.PatchPath != "" {
      configPatchPath = config.Server.PatchPath
   } else {
      configPatchPath = "../patch"
   }
   //1.解压缩更新包
   unPackTargetPath := configPatchPath+"/"+identifier+"_basic/"
   unPackFilePath := configPatchPath+"/"+identifier+ext
   if util.Exists(unPackTargetPath) {
      //此版本已经更新过
      rmErr := os.RemoveAll(unPackTargetPath)
      if rmErr !=nil {
         return false,rmErr
      }
   }
   if !util.CreateDirectory(unPackTargetPath) {
      return false, errors.New("创建压缩文件夹失败")
   }
   logger.Debug("unPackFilePath:", unPackFilePath, "unPackPath:", unPackTargetPath)
   _,err := util.UnTarGzByCmd(unPackFilePath, unPackTargetPath)
   if err !=nil {
      logger.Debug("UnPack err:",err,"unPackFile:",unPackFilePath)
      return false, err
   }
   return true, nil
}
func (sv SdkInstallService) ShowInstallInfo(identifier string) (bool, map[string]interface{}) {
   configPatchPath := ""
   if config.Server.PatchPath != "" {
      configPatchPath = config.Server.PatchPath
   } else {
      configPatchPath = "../patch"
   }
   unPackTargetPath := configPatchPath+"/"+identifier+"_basic/"
   if util.Exists(unPackTargetPath) {
      targetFileName := ""
      err := filepath.Walk(unPackTargetPath, func(path string, f os.FileInfo, err error) error {
         if f == nil {
            return err
         }
         if f.IsDir() {
            targetFileName = f.Name()
         }
         return nil
      })
      if err != nil {
         return false, nil
      } else {
         unPackPath := unPackTargetPath + targetFileName +"/"
         //解压完成,获取安装包中的文件,开始安装
         //1.解析安装说明ins.inc
         incPath := unPackPath+"ins.inc"
         if util.Exists(incPath) {
            if incB, err := ioutil.ReadFile(incPath); err == nil {
               var ins InsInc
               if err = json.Unmarshal(incB, &ins); err == nil {
                  return true, map[string]interface{} {
                     "sdkName": ins.ProductName,
                     "installVersion": ins.InstallVersion,
                     "installContent": ins.InstallContent,
                  }
               } else {
                  return false, nil
               }
            } else {
               return false, nil
            }
         } else {
            return false, nil
         }
      }
   } else {
      return false, nil
   }
}
//安装sdk
func installSdk(identifier string, ext string) (bool, error) {
   configPatchPath := ""
@@ -129,25 +210,12 @@
      }
   }()
   if util.Exists(unPackTargetPath) {
      //此版本已经更新过
      rmErr := os.RemoveAll(unPackTargetPath)
      if rmErr !=nil {
         return false,rmErr
      }
   }
   if !util.CreateDirectory(unPackTargetPath) {
      return false, errors.New("创建压缩文件夹失败")
   if !util.Exists(unPackTargetPath) {//安装包不存在
      return false, errors.New("安装文件已不存在")
   }
   logger.Debug("unPackFilePath:", unPackFilePath, "unPackPath:", unPackTargetPath)
   _,err := util.UnTarGzByCmd(unPackFilePath, unPackTargetPath)
   if err !=nil {
      logger.Debug("UnPack err:",err,"unPackFile:",unPackFilePath)
      return false, err
   }
   targetFileName := ""
   err = filepath.Walk(unPackTargetPath, func(path string, f os.FileInfo, err error) error {
   err := filepath.Walk(unPackTargetPath, func(path string, f os.FileInfo, err error) error {
      if f == nil {
         return err
      }
@@ -160,6 +228,9 @@
      return false, err
   }
   unPackPath := unPackTargetPath + targetFileName +"/"
   if !util.Exists(unPackPath) {
      return false, errors.New("安装文件已不存在")
   }
   //解压完成,获取安装包中的文件,开始安装
   //1.解析安装说明ins.inc
   incPath := unPackPath+"ins.inc"
@@ -362,6 +433,10 @@
   ChCount          int       `json:"chCount"`
   AuthCount          int       `json:"authCount"`
   ServeYear         int       `json:"serveYear"`
   ProductName       string       `json:"productName"`
   InstallVersion       string       `json:"installVersion"`
   InstallContent       string       `json:"installContent"`
}
//算法和参数定义