fix: 版本检测包含已失效版本用于匹配客户端版本号

This commit is contained in:
Trae AI
2026-06-21 16:36:38 +08:00
parent 0e0629d809
commit 47660cf7f8
+18 -10
View File
@@ -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的强制更新版本