@@ -0,0 +1,190 @@
|
||||
package versionser
|
||||
|
||||
import (
|
||||
"91porn-server/common"
|
||||
"91porn-server/common/crypt"
|
||||
"91porn-server/common/version"
|
||||
"91porn-server/models/v/versionmod"
|
||||
)
|
||||
|
||||
func HandleVersionForList(ver, sysType string) (verlist []*versionmod.VersionBody) {
|
||||
v1, err := version.New(ver)
|
||||
if v1 == nil || err != nil {
|
||||
return
|
||||
}
|
||||
sys := common.HandleSysType(sysType)
|
||||
//首次查看当前版本有没有开启 提升,如果有指定的版本,则返回指定的版本,如果没有指定版本,则返回该平台最新的版本,如果没有打开则按照正常流程走
|
||||
vermod, err := versionmod.FindOneVersionByPlatVer(sys, ver)
|
||||
if vermod != nil && err == nil {
|
||||
if vermod.IsUpgrade {
|
||||
if vermod.SpecVersion != "" {
|
||||
newVersion, _ := versionmod.FindOneVersionByPlatVer(sys, vermod.SpecVersion)
|
||||
if newVersion != nil {
|
||||
verlist = append(verlist, &versionmod.VersionBody{
|
||||
Code: newVersion.Code,
|
||||
VersionName: newVersion.VersionName,
|
||||
Platform: newVersion.Platform,
|
||||
Description: newVersion.Description,
|
||||
ForcedUpdate: true,
|
||||
URL: newVersion.URL})
|
||||
return
|
||||
} else {
|
||||
return
|
||||
}
|
||||
} else {
|
||||
newVer, _ := versionmod.FindVersion(sys)
|
||||
verlist = append(verlist, &versionmod.VersionBody{
|
||||
Code: newVer.Code,
|
||||
VersionName: newVer.VersionName,
|
||||
Platform: newVer.Platform,
|
||||
Description: newVer.Description,
|
||||
ForcedUpdate: true,
|
||||
URL: newVer.URL})
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
newVer, err := versionmod.FindVersion(sys)
|
||||
if newVer.VersionName == "" || err != nil {
|
||||
return
|
||||
}
|
||||
v2, _ := version.New(newVer.VersionName)
|
||||
if v1.GTE(v2) {
|
||||
return
|
||||
}
|
||||
if newVer.VersionRange.Major != "" {
|
||||
major, _ := version.New(newVer.VersionRange.Major)
|
||||
if v1.GT(major) {
|
||||
return
|
||||
}
|
||||
}
|
||||
if newVer.VersionRange.Minor != "" {
|
||||
minor, _ := version.New(newVer.VersionRange.Minor)
|
||||
if v1.LT(minor) {
|
||||
return
|
||||
}
|
||||
}
|
||||
verlist = append(verlist, &versionmod.VersionBody{
|
||||
Code: newVer.Code,
|
||||
VersionName: newVer.VersionName,
|
||||
Platform: newVer.Platform,
|
||||
Description: newVer.Description,
|
||||
ForcedUpdate: newVer.ForcedUpdate,
|
||||
URL: newVer.URL})
|
||||
return
|
||||
}
|
||||
|
||||
// 当前版本是否在更新范围
|
||||
func HandleVersion(ver string, vermod *versionmod.Version) bool {
|
||||
v1, err := version.New(ver)
|
||||
if v1 == nil || err != nil {
|
||||
return false
|
||||
}
|
||||
if vermod != nil {
|
||||
if vermod.VersionRange.Major == "" && vermod.VersionRange.Minor == "" {
|
||||
return true
|
||||
}
|
||||
if vermod.VersionRange.Major != "" {
|
||||
major, _ := version.New(vermod.VersionRange.Major)
|
||||
if v1.GT(major) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
if vermod.VersionRange.Minor != "" {
|
||||
minor, _ := version.New(vermod.VersionRange.Minor)
|
||||
if v1.LT(minor) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func CheckVersionBaseOnBuildId(ver, sysType, buildId string) (versionBody []*versionmod.VersionBody) {
|
||||
v1, err := version.New(ver)
|
||||
if v1 == nil || err != nil {
|
||||
return
|
||||
}
|
||||
sys := common.HandleSysType(sysType)
|
||||
//查看当前版本有没有开启 提升,如果有指定的版本,则返回指定的版本,如果没有指定版本,则返回该平台最新的版本,如果没有打开则按照正常流程走
|
||||
vermod, err := versionmod.FindOneVersionByPlatVerBuild(sys, ver, buildId)
|
||||
if vermod != nil && err == nil {
|
||||
if vermod.IsUpgrade {
|
||||
if vermod.SpecVersion != "" {
|
||||
newVersion, _ := versionmod.FindOneVersionByPlatVerBuild(sys, vermod.SpecVersion, buildId)
|
||||
if newVersion != nil {
|
||||
versionBody = append(versionBody, &versionmod.VersionBody{
|
||||
Code: newVersion.Code,
|
||||
VersionName: newVersion.VersionName,
|
||||
Platform: newVersion.Platform,
|
||||
Description: newVersion.Description,
|
||||
ForcedUpdate: true,
|
||||
URL: newVersion.URL})
|
||||
return
|
||||
} else {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//分为带buildId的包 和不带buildId的包
|
||||
ver1, err := versionmod.FindVersionBaseOnBuildIdAndPlatForm(buildId, sys)
|
||||
if ver1 == nil || err != nil {
|
||||
return
|
||||
}
|
||||
if ver1.Origin == versionmod.TF {
|
||||
ver2, err := versionmod.FindVersionBaseOnBuildId(buildId)
|
||||
if ver2 == nil || err != nil {
|
||||
return
|
||||
}
|
||||
v2, _ := version.New(ver2.VersionName)
|
||||
if v1.GTE(v2) {
|
||||
return
|
||||
}
|
||||
versionBody = append(versionBody, &versionmod.VersionBody{
|
||||
Code: ver2.Code,
|
||||
VersionName: ver2.VersionName,
|
||||
Platform: ver2.Platform,
|
||||
Description: ver2.Description,
|
||||
ForcedUpdate: ver2.ForcedUpdate,
|
||||
URL: GetTFUrl(ver2.URL)})
|
||||
} else {
|
||||
versionBody = append(versionBody, &versionmod.VersionBody{
|
||||
Code: ver1.Code,
|
||||
VersionName: ver1.VersionName,
|
||||
Platform: ver1.Platform,
|
||||
Description: ver1.Description,
|
||||
ForcedUpdate: ver1.ForcedUpdate,
|
||||
URL: ver1.URL})
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func GetTFUrl(tf string) string {
|
||||
if tf != "" {
|
||||
type tfStc struct {
|
||||
Url string `json:"url"`
|
||||
Name string `json:"name"`
|
||||
}
|
||||
var tfArr []tfStc
|
||||
_ = crypt.JSON2Struct(tf, &tfArr)
|
||||
tfArrLen := len(tfArr)
|
||||
if tfArrLen == 0 {
|
||||
return tf
|
||||
}
|
||||
weight := 100 / tfArrLen
|
||||
chioce := make([]common.Choice, tfArrLen)
|
||||
for i := 0; i < len(tfArr); i++ {
|
||||
chioce[i] = common.Choice{
|
||||
Weight: weight,
|
||||
Item: tfArr[i].Url,
|
||||
}
|
||||
}
|
||||
ch, _ := common.WeightedChoice(chioce)
|
||||
if v, ok := ch.Item.(string); ok {
|
||||
return v
|
||||
}
|
||||
}
|
||||
return tf
|
||||
}
|
||||
Reference in New Issue
Block a user