package controllers import ( "car-service/models" "fmt" "github.com/astaxie/beego" "strconv" "strings" ) type AppController struct { beego.Controller } // @Title 比对版本号,看是否有升级 // @Description 比对版本号,看是否有升级 // @Param curVersion query string true "当前版本号" // @Success 200 {object} models.SysVersion // @Failure 403 {string} json "" // @router /version [get] func (c *AppController) Version() { curV := c.GetString("curVersion") latestV := beego.AppConfig.String("latestVersion") fmt.Println("curV:", curV, "latestV:", latestV) result := models.SysVersion{ LatestVersion: latestV, } if shouldVersionBeUpgrade(curV, latestV) { result.IsUpgrade = true result.Url = beego.AppConfig.String("latestUrl") } else { result.IsUpgrade = false } c.Data["json"] = result c.ServeJSON() } func shouldVersionBeUpgrade(curVersion, latestVersion string) bool { if curVersion == "" { return true } if latestVersion == "" { return false } curIVArr := strings.Split(curVersion, ".") dstIVArr := strings.Split(latestVersion, ".") if len(curIVArr) !=3 || len(dstIVArr) != 3{ fmt.Println("version arr !=3") return false } cH,cEH := strconv.Atoi(curIVArr[0]) cM,cEM := strconv.Atoi(curIVArr[1]) cL,cEL := strconv.Atoi(curIVArr[2]) dH,dEH := strconv.Atoi(dstIVArr[0]) dM,dEM := strconv.Atoi(dstIVArr[1]) dL,dEL := strconv.Atoi(dstIVArr[2]) if cEH !=nil || cEM != nil || cEL != nil || dEH != nil ||dEM !=nil || dEL !=nil { fmt.Println("Atoi err") return false } if cH > dH { return false } else if cH == dH { if cM > dM { return false } else if cM == dM { if cL > dL { return false } else if cL == dL { return false } else { return true } } else { return true } } else { return true } }