From 884f80d3c02ea809bc0e54d385fea6ea1eedfa19 Mon Sep 17 00:00:00 2001 From: tongtongstudio Date: Tue, 15 Apr 2025 10:27:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=8E=B7=E5=8F=96ptach?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/controller/apk/CheckPatchController.java | 10 +++++++--- .../apk/CreateDiffPatchFileController.java | 11 +++++++++++ .../mir4updater/backend/entity/PatchFileInfo.java | 12 ++++++------ .../backend/repository/PatchInfoRepository.java | 2 +- .../mir4updater/backend/service/DiffPathService.java | 4 ++-- 5 files changed, 27 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/mir4updater/backend/controller/apk/CheckPatchController.java b/src/main/java/com/mir4updater/backend/controller/apk/CheckPatchController.java index 2d8df8c..568365c 100644 --- a/src/main/java/com/mir4updater/backend/controller/apk/CheckPatchController.java +++ b/src/main/java/com/mir4updater/backend/controller/apk/CheckPatchController.java @@ -18,8 +18,12 @@ public class CheckPatchController { DiffPathService diffPathService; @GetMapping("/android/check_patch") - public Result checkPatch(@RequestParam("pkg") String pkg, @RequestParam(value = "version_code") Long versionCode) { - PatchFileInfo patchFileInfo = diffPathService.getPatchInfo(pkg, versionCode); - return Result.success(patchFileInfo); + public Result checkPatch(@RequestParam("pkg") String pkg, @RequestParam(value = "version_code") Long versionCode, @RequestParam(value = "md5") String oldMd5) { + PatchFileInfo patchFileInfo = diffPathService.getPatchInfo(pkg, versionCode, oldMd5); + if (patchFileInfo == null) { + return Result.notFound(); + } else { + return Result.success(patchFileInfo); + } } } diff --git a/src/main/java/com/mir4updater/backend/controller/apk/CreateDiffPatchFileController.java b/src/main/java/com/mir4updater/backend/controller/apk/CreateDiffPatchFileController.java index 8bfff87..63831a8 100644 --- a/src/main/java/com/mir4updater/backend/controller/apk/CreateDiffPatchFileController.java +++ b/src/main/java/com/mir4updater/backend/controller/apk/CreateDiffPatchFileController.java @@ -3,9 +3,11 @@ package com.mir4updater.backend.controller.apk; import com.fasterxml.jackson.databind.ObjectMapper; import com.mir4updater.backend.config.FilePath; import com.mir4updater.backend.entity.ApkInfo; +import com.mir4updater.backend.entity.PatchFileInfo; import com.mir4updater.backend.entity.XapkManifest; import com.mir4updater.backend.result.Result; import com.mir4updater.backend.service.ApkInfoService; +import com.mir4updater.backend.service.DiffPathService; import com.mir4updater.backend.utils.ApkUtils; import com.mir4updater.backend.utils.HashUtils; import com.mir4updater.backend.utils.PatchUtils; @@ -36,6 +38,9 @@ public class CreateDiffPatchFileController { @Autowired private ApkInfoService apkInfoService; + @Autowired + DiffPathService diffPathService; + @PostMapping("/android/create_patch") public Result uploadApk(@RequestParam("old_id") int oldId, @RequestParam("new_id") int newId) throws Exception { String projectPath = System.getProperty("user.dir"); @@ -112,6 +117,7 @@ public class CreateDiffPatchFileController { String sha256 = HashUtils.calculateSHA256(tempFile); logger.info("tempFile sha256 = " + sha256); + if (ApkUtils.isAPK(tempFile)) { logger.info("tempFile type is apk"); @@ -129,6 +135,10 @@ public class CreateDiffPatchFileController { String packageName = apkMeta.getPackageName(); long versionCode = apkMeta.getVersionCode(); + PatchFileInfo patchFileInfo = diffPathService.getPatchInfo(packageName, versionCode, md5); + if (patchFileInfo != null) { + return Result.error("patch文件存在,请直接下载"); + } List apkInfoList = apkInfoService.getApkInfo(packageName); Optional apkInfoOptional = apkInfoList.stream().max(new Comparator() { @@ -173,6 +183,7 @@ public class CreateDiffPatchFileController { return Result.error().setMessage(packageName + " 没有上传其他版本"); } } else if (ApkUtils.isXAPK(tempFile)) { + //一般不会出现这种情况 logger.info("tempFile type is xapk"); try (ZipFile zipFile = new ZipFile(tempFile)) { // 遍历ZIP文件中的所有条目 diff --git a/src/main/java/com/mir4updater/backend/entity/PatchFileInfo.java b/src/main/java/com/mir4updater/backend/entity/PatchFileInfo.java index 66d4db8..08a1907 100644 --- a/src/main/java/com/mir4updater/backend/entity/PatchFileInfo.java +++ b/src/main/java/com/mir4updater/backend/entity/PatchFileInfo.java @@ -23,25 +23,25 @@ public class PatchFileInfo implements Serializable { long oldVersion; @Column(name = "old_md5", nullable = false) - String old_md5; + String oldMd5; @Column(name = "old_sha1", nullable = false) - String old_sha1; + String oldSha1; @Column(name = "old_sha256", nullable = false) - String old_sha256; + String oldSha256; @Column(name = "new_version", nullable = false) long newVersion; @Column(name = "new_md5", nullable = false) - String new_md5; + String newMd5; @Column(name = "new_sha1", nullable = false) - String new_sha1; + String newSha1; @Column(name = "new_sha256", nullable = false) - String new_sha256; + String newSha256; @Column(name = "patch_file_path", nullable = false) String patch_file_path; diff --git a/src/main/java/com/mir4updater/backend/repository/PatchInfoRepository.java b/src/main/java/com/mir4updater/backend/repository/PatchInfoRepository.java index 5f9cc13..f71197c 100644 --- a/src/main/java/com/mir4updater/backend/repository/PatchInfoRepository.java +++ b/src/main/java/com/mir4updater/backend/repository/PatchInfoRepository.java @@ -4,6 +4,6 @@ import com.mir4updater.backend.entity.PatchFileInfo; import org.springframework.data.jpa.repository.JpaRepository; public interface PatchInfoRepository extends JpaRepository { - public PatchFileInfo findPatchFileInfoByPackageNameAndOldVersion(String packageName, Long version); + public PatchFileInfo findPatchFileInfoByPackageNameAndOldVersionAndOldMd5(String packageName, Long oldVersion, String oldMd5); } diff --git a/src/main/java/com/mir4updater/backend/service/DiffPathService.java b/src/main/java/com/mir4updater/backend/service/DiffPathService.java index 9eb7c0d..2d1af95 100644 --- a/src/main/java/com/mir4updater/backend/service/DiffPathService.java +++ b/src/main/java/com/mir4updater/backend/service/DiffPathService.java @@ -10,8 +10,8 @@ public class DiffPathService { @Autowired PatchInfoRepository patchInfoRepository; - public PatchFileInfo getPatchInfo(String packageName, Long oldVersion) { - return patchInfoRepository.findPatchFileInfoByPackageNameAndOldVersion(packageName, oldVersion); + public PatchFileInfo getPatchInfo(String packageName, Long oldVersion, String oldMd5) { + return patchInfoRepository.findPatchFileInfoByPackageNameAndOldVersionAndOldMd5(packageName, oldVersion, oldMd5); } }