liuxiaolong
2020-08-03 99443c7fb779a289f7aa3d3436e195a81480ac88
findAllSdk add installed flag, add 5s timeout
3个文件已修改
64 ■■■■■ 已修改文件
controllers/sdk.go 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
extend/util/requtil.go 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/SdkDownLoad.go 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/sdk.go
@@ -75,14 +75,16 @@
// @Produce json
// @Tags 算法
// @Param sdkName query string false "可选参数"
// @Param installed query bool true "查已安装或者查所有"
// @Success 200 {string} json "{"code":200, msg:"请求处理成功",data:"算法列表",success:true}"
// @Failure 500 {string} json "{"code":500, msg:"请求失败",data:"[]",success:false}"
// @Router /data/api-v/sdk/findAllSdk [GET]
func (sc SdkController) FindAllSdk(c *gin.Context) {
    sdkName := c.Query("sdkName")
    installed, _ := strconv.ParseBool(c.Query("installed"))
    logger.Debug("FindAllSdk sdkName:", sdkName)
    sdks := service.GetSdkList("") //本机已安装的算法
    sdks := service.GetSdkList("", installed) //本机已安装的算法
    util.ResponseFormat(c, code.Success, sdks)
}
extend/util/requtil.go
@@ -11,6 +11,7 @@
    "os"
    "strings"
    "github.com/dustin/go-humanize"
    "time"
)
const (
@@ -63,7 +64,9 @@
            request.Header.Add(key, val)
        }
    }
    client := &http.Client{}
    client := &http.Client{
        Timeout: time.Second * 5,
    }
    resp, err := client.Do(request)
    if err != nil {
        return resultBytes, err
service/SdkDownLoad.go
@@ -133,7 +133,8 @@
    }
}
func GetSdkList(sdkName string) []SdkInsOrUpgrade {
//installedFlag 如果是true,表示只查本地的,不需要比对查看未安装的算法
func GetSdkList(sdkName string, installedFlag bool) []SdkInsOrUpgrade {
    var api dbapi.SdkApi
    localSdks := api.FindAll(sdkName) //本地已安装所有算法,带顺序
    if localSdks == nil {
@@ -175,34 +176,36 @@
        installedSdks[idx] = siou
    }
    //远端可用的算法
    remoteSdks := findAllMySdk()
    logger.Debug("remoteSdks:", remoteSdks)
    nInsSdks := make([]SdkInsOrUpgrade,0)
    for _,sdk := range remoteSdks {
        if v,ok := localSdkM[sdk.Id];ok { //本地已安装
            ls := v
            if shouldVersionBeUpgrade(ls.Version, sdk.Version) { //判断版本号是否需要升级
                ls.Installed = true
                ls.IsUpgrade = true //需要升级
                ls.RemoteVersion = sdk.Version //远端的版本号
            }
            localSdkM[sdk.Id] = ls
            for index,es := range installedSdks {
                if es.Id == sdk.Id {
                    installedSdks[index] = ls
                    break
    if !installedFlag {
        //远端可用的算法
        remoteSdks := findAllMySdk()
        logger.Debug("remoteSdks:", remoteSdks)
        for _,sdk := range remoteSdks {
            if v,ok := localSdkM[sdk.Id];ok { //本地已安装
                ls := v
                if shouldVersionBeUpgrade(ls.Version, sdk.Version) { //判断版本号是否需要升级
                    ls.Installed = true
                    ls.IsUpgrade = true //需要升级
                    ls.RemoteVersion = sdk.Version //远端的版本号
                }
                localSdkM[sdk.Id] = ls
                for index,es := range installedSdks {
                    if es.Id == sdk.Id {
                        installedSdks[index] = ls
                        break
                    }
                }
            } else { //本地未安装,需要安装
                bIns := SdkInsOrUpgrade{
                    RemoteVersion: sdk.Version,
                    IsUpgrade: false,
                    Installed: false,
                }
                bIns.Sdk = sdk
                nInsSdks = append(nInsSdks, bIns)
            }
        } else { //本地未安装,需要安装
            bIns := SdkInsOrUpgrade{
                RemoteVersion: sdk.Version,
                IsUpgrade: false,
                Installed: false,
            }
            bIns.Sdk = sdk
            nInsSdks = append(nInsSdks, bIns)
        }
    }