From 980d985d9bb48d2043cb0ab253a510eb21d5af01 Mon Sep 17 00:00:00 2001 From: mediabot-pt <295750538+mediabot-pt@users.noreply.github.com> Date: Mon, 29 Jun 2026 23:00:29 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=87=8D=E5=A4=8D=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E6=8C=89hash=E5=88=A4=E9=87=8D=EF=BC=8C=E5=90=8Chash=E8=B7=B3?= =?UTF-8?q?=E8=BF=87=EF=BC=8C=E5=BC=82hash=E8=A6=86=E7=9B=96=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/service/impl/ConfigServiceImpl.java | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/par-core/src/main/java/com/par/core/service/impl/ConfigServiceImpl.java b/par-core/src/main/java/com/par/core/service/impl/ConfigServiceImpl.java index 5b2b6c8..c5ef800 100644 --- a/par-core/src/main/java/com/par/core/service/impl/ConfigServiceImpl.java +++ b/par-core/src/main/java/com/par/core/service/impl/ConfigServiceImpl.java @@ -60,14 +60,26 @@ public class ConfigServiceImpl implements ConfigService { public SiteConfig submitConfig(String siteId, String version, String configJson, String schemaVersion, Long submitterId) { SiteConfig existing = getConfig(siteId, version); - if (existing != null) { - log.info("配置版本已存在,跳过: siteId={}, version={}", siteId, version); - return existing; - } - String configHash = HmacUtil.sha256(configJson); String storagePath = String.format("configs/%s/%s.json", siteId, version); + // 版本已存在 → 根据 hash 判断是重复还是更新 + if (existing != null) { + if (configHash.equals(existing.getConfigHash())) { + log.info("配置未变化,跳过: siteId={}, version={}, hash={}", siteId, version, configHash); + return existing; + } + // hash 不同 → 覆盖更新 + log.info("配置内容变化,更新: siteId={}, version={}, oldHash={}, newHash={}", + siteId, version, existing.getConfigHash(), configHash); + storageService.store(storagePath, configJson); + existing.setConfigHash(configHash); + existing.setFileSize((long) configJson.getBytes(StandardCharsets.UTF_8).length); + existing.setStoragePath(storagePath); + siteConfigMapper.updateById(existing); + return existing; + } + // 存储到抽象存储层(七牛或本地) try { storageService.store(storagePath, configJson);