From 026581ea600353f2a32c86a488b39981beec4c16 Mon Sep 17 00:00:00 2001 From: admin Date: Tue, 2 Jun 2026 00:02:28 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=BC=96=E8=BE=91=E8=A1=A5=E4=B8=81?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E6=97=B6=E9=87=8D=E6=96=B0=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E7=94=9F=E6=88=90=E5=85=A8=E9=87=8F=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 当编辑版本并更新文件时,如果是补丁包类型,需要重新与基础全量包合并生成新的全量包 Co-Authored-By: Claude Opus 4.7 --- backend/internal/router/admin/versions.go | 31 +++++++++++++++++++++++ 1 file changed, 31 insertions(+) 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 {