diff --git a/backend/internal/router/admin/versions.go b/backend/internal/router/admin/versions.go index 1474192..7083ce9 100644 --- a/backend/internal/router/admin/versions.go +++ b/backend/internal/router/admin/versions.go @@ -511,6 +511,37 @@ func handleUpdateVersionGlobal(c *gin.Context) { log.Printf("[INFO] Removed old file: %s\n", oldFilePath) } } + + // 如果是补丁包,需要重新合并生成全量包 + updateType := version.UpdateType + if req.UpdateType != "" { + updateType = req.UpdateType + } + if updateType == "patch" && version.BaseVersionID != nil { + var baseVersion model.Version + if err := database.DB.First(&baseVersion, *version.BaseVersionID).Error; err == nil { + baseFullPackagePath := baseVersion.FullPackagePath + if baseFullPackagePath == "" { + baseFullPackagePath = baseVersion.FilePath + } + + fullPkgPath, fullPkgSize, fullPkgHash, err := MergePatchWithFullPackage( + baseFullPackagePath, + req.FilePath, + version.ApplicationID, + ) + if err != nil { + log.Printf("[ERROR] Failed to merge patch with full package: %v\n", err) + response.Error(c, 500, "合并补丁包失败: "+err.Error()) + return + } + + updates["full_package_path"] = fullPkgPath + updates["full_package_size"] = fullPkgSize + updates["full_package_hash"] = fullPkgHash + log.Printf("[INFO] Updated full package: %s, size: %d\n", fullPkgPath, fullPkgSize) + } + } } if len(updates) == 0 {