chengliang 2 месяцев назад
Родитель
Сommit
fe02f0fac7
3 измененных файлов с 35 добавлено и 24 удалено
  1. 2 2
      app/api/hotupdate/internal.go
  2. 25 22
      app/service/hotupdate.go
  3. 8 0
      app/service/type.go

+ 2 - 2
app/api/hotupdate/internal.go

@@ -49,7 +49,7 @@ func AddVersion(c *gin.Context) {
 func GetMaxVerInfo(c *gin.Context) {
 	logger.Info("uri %s", c.Request.RequestURI)
 	var appG = app.Gin{C: c}
-	req := service.TGetVersionReq{}
+	req := service.TGetMaxVersionReq{}
 	err := c.ShouldBind(&req)
 	if err == nil {
 		//err = checkAddVersionHash(req, false)
@@ -57,7 +57,7 @@ func GetMaxVerInfo(c *gin.Context) {
 		//	appG.Response(http.StatusOK, e.ERROR_UPLOAD_SIGNURL_FAIL, err.Error())
 		//	return
 		//}
-		var rsp, err = service.GetTHotUpdateVerManager().GetMaxVerInfo(req.Proj, req.Os)
+		var rsp, err = service.GetTHotUpdateVerManager().GetMaxVerInfo(req.Os)
 		if err != nil {
 			appG.Response(http.StatusOK, e.NO_RECORD, err.Error())
 		} else {

+ 25 - 22
app/service/hotupdate.go

@@ -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{}

+ 8 - 0
app/service/type.go

@@ -14,8 +14,14 @@ type TGetVersionReq struct {
 	Os   string `form:"os" binding:"required" json:"os"`
 }
 
+type TGetMaxVersionReq struct {
+	Os string `form:"os" binding:"required" json:"os"`
+}
+
 type TGetVersionRsp struct {
 	ID                string `json:"id"`
+	Proj              string `json:"proj"`
+	Os                string `json:"os"`
 	CreateTimeSec     int64  `json:"createTime"`
 	UpdateTimeSec     int64  `json:"updateTime"`
 	Version           string `json:"version"`
@@ -34,6 +40,8 @@ func (this *TGetVersionRsp) FromMVersion(mVersion *hotupdate.MVersionInfo) {
 	this.RemoteVersionUrl = mVersion.RemoteVersionUrl
 	this.RemoteManifestUrl = mVersion.RemoteManifestUrl
 	this.Status = mVersion.Status
+	this.Proj = mVersion.Proj
+	this.Os = mVersion.Os
 }
 
 type TAddVersionReq struct {