fix: 重复提交按hash判重,同hash跳过,异hash覆盖更新

This commit is contained in:
mediabot-pt
2026-06-29 23:00:29 +08:00
parent a741736a5d
commit 980d985d9b

View File

@@ -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);