From a7ff0000d8b846817c671fc6feaf724fe1c34b1a Mon Sep 17 00:00:00 2001 From: mediabot-pt <295750538+mediabot-pt@users.noreply.github.com> Date: Tue, 30 Jun 2026 23:36:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20submitConfig=20=E5=A4=84=E7=90=86?= =?UTF-8?q?=E5=90=8C=E7=89=88=E6=9C=AC=20PENDING=20=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E7=9A=84=E5=94=AF=E4=B8=80=E7=BA=A6=E6=9D=9F=E5=86=B2=E7=AA=81?= =?UTF-8?q?=EF=BC=8C=E5=B7=B2=E5=AD=98=E5=9C=A8=E5=88=99=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E8=80=8C=E9=9D=9E=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/service/impl/ConfigServiceImpl.java | 28 +++++++++++++++++-- 1 file changed, 25 insertions(+), 3 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 8a9bceb..e2067ff 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 @@ -70,7 +70,7 @@ public class ConfigServiceImpl implements ConfigService { return sameHash; } - // 存储到抽象存储层 + // 写入存储 try { storageService.store(storagePath, configJson); } catch (Exception e) { @@ -78,12 +78,34 @@ public class ConfigServiceImpl implements ConfigService { throw new RuntimeException("存储配置文件失败: " + e.getMessage(), e); } + long fileSize = configJson.getBytes(StandardCharsets.UTF_8).length; + + // 同一 (site_id, version) 已有 PENDING 记录 → 更新而非新增(避免唯一约束冲突) + SiteConfig existingPending = siteConfigMapper.selectOne( + new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper() + .eq(SiteConfig::getSiteId, siteId) + .eq(SiteConfig::getVersion, version) + .eq(SiteConfig::getStatus, ConfigStatus.PENDING) + .eq(SiteConfig::getDeleted, 0)); + if (existingPending != null) { + // 删除旧存储文件 + storageService.delete(existingPending.getStoragePath()); + existingPending.setConfigHash(configHash); + existingPending.setStoragePath(storagePath); + existingPending.setFileSize(fileSize); + existingPending.setSchemaVersion(schemaVersion != null ? schemaVersion : existingPending.getSchemaVersion()); + existingPending.setSubmitterId(submitterId); + siteConfigMapper.updateById(existingPending); + log.info("Config updated: siteId={}, version={}, id={}, hash={}", siteId, version, existingPending.getId(), configHash); + return existingPending; + } + SiteConfig config = new SiteConfig(); config.setSiteId(siteId); - config.setVersion(version); // 客户端提交的版本号,仅供参考 + config.setVersion(version); config.setConfigHash(configHash); config.setStoragePath(storagePath); - config.setFileSize((long) configJson.getBytes(StandardCharsets.UTF_8).length); + config.setFileSize(fileSize); config.setSchemaVersion(schemaVersion != null ? schemaVersion : "1.0.0"); config.setStatus(ConfigStatus.PENDING); config.setSubmitterId(submitterId);