liuxiaolong
2020-06-29 9b5710f23d6cbda9f2b0e650cf8916e7707d5588
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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
    }
}