|
|
@@ -51,14 +51,16 @@ func GetTHotUpdateVerManager() *THotUpdateVerManager {
|
|
|
}
|
|
|
|
|
|
func (this *THotUpdateVerManager) Init() {
|
|
|
- _, err := this.GetMaxPubVerInfo("bzst", "ios")
|
|
|
- if err != nil {
|
|
|
- logger.Error(err.Error())
|
|
|
- }
|
|
|
- _, err = this.GetMaxPubVerInfo("bzst", "android")
|
|
|
- if err != nil {
|
|
|
- logger.Error(err.Error())
|
|
|
+
|
|
|
+ for proj, _ := range validProj {
|
|
|
+ for os, _ := range validOs {
|
|
|
+ _, err := this.GetMaxPubVerInfo(proj, os)
|
|
|
+ if err != nil {
|
|
|
+ logger.Error(err.Error())
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
+ logger.Info("version manager init success, version info:%#v", this.versionMap)
|
|
|
}
|
|
|
|
|
|
func (this *THotUpdateVerManager) GetMaxPubVerInfo(proj, os string) (*TGetVersionRsp, error) {
|
|
|
@@ -94,11 +96,11 @@ func (this *THotUpdateVerManager) reloadPubVerBy(proj, os string) error {
|
|
|
}
|
|
|
|
|
|
// 内部API调用
|
|
|
-func (this *THotUpdateVerManager) GetMaxVerInfo(proj, os string) (*TGetVersionRsp, error) {
|
|
|
- if proj == "" || os == "" {
|
|
|
+func (this *THotUpdateVerManager) GetMaxVerInfo(os string) (*TGetVersionRsp, error) {
|
|
|
+ if os == "" {
|
|
|
return nil, errors.New("project or os can't be empty")
|
|
|
}
|
|
|
- return this.findDBMaxVersion(proj, os)
|
|
|
+ return this.findDBMaxVersion("", os)
|
|
|
}
|
|
|
|
|
|
// 内部API调用
|
|
|
@@ -177,13 +179,13 @@ func (this *THotUpdateVerManager) getVersionMapBy(proj, os string) (*TGetVersion
|
|
|
func (this *THotUpdateVerManager) updateVersionMap(proj, os string, versionRsp *TGetVersionRsp) {
|
|
|
this.mu.Lock()
|
|
|
defer this.mu.Unlock()
|
|
|
- logger.Info(fmt.Sprintf("updateVersionMap <UNK>%s<UNK>%s<UNK>%s", proj, os, versionRsp.Version))
|
|
|
+ logger.Info(fmt.Sprintf("updateVersionMap proj:%s, os:%s, ver:%s", proj, os, versionRsp.Version))
|
|
|
if _, ok := this.versionMap[proj]; !ok {
|
|
|
this.versionMap[proj] = make(map[string]*TGetVersionRsp)
|
|
|
}
|
|
|
- logger.Info("before updateVersionMap", this.versionMap[proj][os])
|
|
|
+ logger.Info("before updateVersionMap %#v", this.versionMap[proj][os])
|
|
|
this.versionMap[proj][os] = versionRsp
|
|
|
- logger.Info("after updateVersionMap", this.versionMap[proj][os])
|
|
|
+ logger.Info("after updateVersionMap %#v", this.versionMap[proj][os])
|
|
|
}
|
|
|
|
|
|
// 版本号是递增的
|
|
|
@@ -204,20 +206,20 @@ func (this *THotUpdateVerManager) findDBMaxPubVersion(proj, os string) (*TGetVer
|
|
|
|
|
|
// 查找数据库中最大的version
|
|
|
func (this *THotUpdateVerManager) findDBMaxVersion(proj, os string) (*TGetVersionRsp, error) {
|
|
|
- if proj == "" || os == "" {
|
|
|
- return nil, errors.New("project or os can't be empty")
|
|
|
+ if os == "" {
|
|
|
+ return nil, errors.New("os can't be empty")
|
|
|
}
|
|
|
return this.findMaxVersionByStatus(proj, os, hotupdate.DEF_VER_STATUS_INVALID)
|
|
|
}
|
|
|
|
|
|
func (this *THotUpdateVerManager) findMaxVersionByStatus(proj, os string, status int16) (*TGetVersionRsp, error) {
|
|
|
- if proj == "" || os == "" {
|
|
|
- return nil, errors.New("project or os can't be empty")
|
|
|
- }
|
|
|
|
|
|
- filte := bson.M{
|
|
|
- "project": proj,
|
|
|
- "os": os,
|
|
|
+ filte := bson.M{}
|
|
|
+ if proj != "" {
|
|
|
+ filte["project"] = proj
|
|
|
+ }
|
|
|
+ if os != "" {
|
|
|
+ filte["os"] = os
|
|
|
}
|
|
|
if status == hotupdate.DEF_VER_STATUS_PUBLIC || status == hotupdate.DEF_VER_STATUS_NONE {
|
|
|
filte["status"] = status
|
|
|
@@ -225,12 +227,13 @@ func (this *THotUpdateVerManager) findMaxVersionByStatus(proj, os string, status
|
|
|
opts := options.Find().
|
|
|
SetSort(bson.M{"created_at": -1})
|
|
|
|
|
|
+ logger.Info("filte:%v", filte)
|
|
|
versionArr, err := this.versionDB.Find(filte, opts)
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
if len(versionArr) == 0 {
|
|
|
- return nil, errors.New("version not found")
|
|
|
+ return nil, fmt.Errorf("version not found proj:%s, os:%s, status:%d", proj, os, status)
|
|
|
}
|
|
|
mVersion := versionArr[0]
|
|
|
versionRsp := &TGetVersionRsp{}
|