package controllers
|
|
import (
|
"car-service/models"
|
"car-service/vo"
|
"encoding/json"
|
"fmt"
|
"github.com/astaxie/beego"
|
"strconv"
|
"strings"
|
)
|
|
type AppController struct {
|
beego.Controller
|
}
|
|
// @Title 比对版本号,看是否有升级
|
// @Description 比对版本号,看是否有升级
|
// @Param curVersion query string true "当前版本号"
|
// @Success 200 {object} models.SysUpgrade
|
// @Failure 403 {string} json ""
|
// @router /version [get]
|
func (c *AppController) Version() {
|
curV := c.GetString("curVersion")
|
platform := c.GetString("platform")
|
fmt.Println("platform:",platform,"curV:", curV)
|
if platform == "" {
|
platform = "android"
|
}
|
pType := -1 //未知的平台
|
if platform == "android" {
|
pType = models.PlatType_Android
|
} else if platform == "ios" {
|
pType = models.PlatType_Ios
|
}
|
result := vo.Upgrade{}
|
var sv models.SysUpgrade
|
err := sv.GetLatest(pType)
|
if err != nil {
|
result.Msg = []string{}
|
} else {
|
latestV := sv.LatestVersion
|
if shouldVersionBeUpgrade(curV, latestV) {
|
result.IsUpgrade = true
|
result.Url = sv.Url
|
result.LatestVersion = sv.LatestVersion
|
result.Time = sv.Time
|
result.ForceUpgrade = sv.ForceUpgrade
|
var msgArr []string
|
if e1 := json.Unmarshal([]byte(sv.Msg), &msgArr);e1 ==nil {
|
result.Msg = msgArr
|
} else {
|
fmt.Println("unmarshal err:", e1)
|
result.Msg = []string{}
|
}
|
result.Size = sv.Size
|
|
} else {
|
result.IsUpgrade = false
|
result.Msg = []string{}
|
}
|
}
|
|
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
|
}
|
}
|