From 47660cf7f8a4deecb699477a0133c371b0b9ebda Mon Sep 17 00:00:00 2001 From: Trae AI Date: Sun, 21 Jun 2026 16:36:38 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=89=88=E6=9C=AC=E6=A3=80=E6=B5=8B?= =?UTF-8?q?=E5=8C=85=E5=90=AB=E5=B7=B2=E5=A4=B1=E6=95=88=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E7=94=A8=E4=BA=8E=E5=8C=B9=E9=85=8D=E5=AE=A2=E6=88=B7=E7=AB=AF?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/internal/router/app/info.go | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/backend/internal/router/app/info.go b/backend/internal/router/app/info.go index 2433e8a..7d4c73e 100644 --- a/backend/internal/router/app/info.go +++ b/backend/internal/router/app/info.go @@ -72,6 +72,17 @@ func handleAppCheckUpdate(c *gin.Context) { return } + // 同时查询所有版本(包括已失效的),用于匹配客户端版本号 + var allVersionsIncludingExpired []model.Version + if clientVersion != "" { + if err := database.DB.Where("application_id = ?", app.ID). + Order("id DESC"). + Find(&allVersionsIncludingExpired).Error; err != nil { + response.Error(c, 500, "获取版本列表失败") + return + } + } + // 没有任何版本 if len(allVersions) == 0 { response.Success(c, gin.H{ @@ -150,22 +161,19 @@ func handleAppCheckUpdate(c *gin.Context) { clientVersionClean := cleanVersion(clientVersion) - // 找到客户端当前版本对应的版本记录 + // 找到客户端当前版本对应的版本记录(包含已失效版本) var clientVersionRecord *model.Version - for i := range allVersions { - if cleanVersion(allVersions[i].Version) == clientVersionClean { - clientVersionRecord = &allVersions[i] + for i := range allVersionsIncludingExpired { + if cleanVersion(allVersionsIncludingExpired[i].Version) == clientVersionClean { + clientVersionRecord = &allVersionsIncludingExpired[i] break } } - // 客户端版本不存在于服务器版本列表中,视为需要更新 - // 构造一个虚拟的客户端版本记录,ID为0,确保所有服务器版本都比它新 + // 客户端版本不存在于服务器版本列表中,返回参数错误 if clientVersionRecord == nil { - clientVersionRecord = &model.Version{ - ID: 0, - Version: clientVersion, - } + response.Error(c, 400, "版本号参数错误") + return } // 判断客户端版本状态:检查是否有更高ID的强制更新版本