From 2c126a6ec518bf8320f4cbe293e1fd9158394d12 Mon Sep 17 00:00:00 2001 From: mediabot-pt <295750538+mediabot-pt@users.noreply.github.com> Date: Tue, 7 Jul 2026 13:23:13 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=9D=E5=AD=98/=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E5=BF=AB=E7=85=A7=E6=97=B6=E6=B8=85=E7=90=86=E5=90=8C=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=97=A7=E8=AE=B0=E5=BD=95=EF=BC=8C=E6=AF=8F=E4=B8=AA?= =?UTF-8?q?=E7=AB=99=E7=82=B9=E6=AF=8F=E7=A7=8D=E7=8A=B6=E6=80=81=E6=9C=80?= =?UTF-8?q?=E5=A4=9A=E4=BF=9D=E7=95=99=E4=B8=80=E6=9D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SiteSnapshotServiceImpl.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/par-core/src/main/java/com/par/core/service/impl/SiteSnapshotServiceImpl.java b/par-core/src/main/java/com/par/core/service/impl/SiteSnapshotServiceImpl.java index 0596067..26076ee 100644 --- a/par-core/src/main/java/com/par/core/service/impl/SiteSnapshotServiceImpl.java +++ b/par-core/src/main/java/com/par/core/service/impl/SiteSnapshotServiceImpl.java @@ -134,11 +134,12 @@ public class SiteSnapshotServiceImpl implements SiteSnapshotService { return null; } - int newVersion = (latestDraft != null) ? latestDraft.getVersion() + 1 : 1; + // 删除旧 draft,保证最新只有一条 + snapshotMapper.deleteBySiteIdAndStatus(siteId, "draft"); SiteSnapshot snapshot = new SiteSnapshot(); snapshot.setSiteId(siteId); - snapshot.setVersion(newVersion); + snapshot.setVersion((latestDraft != null) ? latestDraft.getVersion() + 1 : 1); populateSnapshotFields(snapshot, data); snapshot.setChecksum(checksum); snapshot.setStatus("draft"); @@ -149,7 +150,7 @@ public class SiteSnapshotServiceImpl implements SiteSnapshotService { String bundleJson = toBundleJson(snapshot); jsonCache.put(draftKey(siteId), bundleJson); - log.info("快照已更新: siteId={}, version={}, checksum={}", siteId, newVersion, checksum.substring(0, 8)); + log.info("快照已更新: siteId={}, version={}, checksum={}", siteId, snapshot.getVersion(), checksum.substring(0, 8)); return snapshot; } catch (Exception e) { log.error("更新快照失败 siteId={}", siteId, e); @@ -177,11 +178,12 @@ public class SiteSnapshotServiceImpl implements SiteSnapshotService { return latestDraft; } - int newVersion = (latestDraft != null) ? latestDraft.getVersion() + 1 : 1; + // 删除旧 draft,保证最新只有一条 + snapshotMapper.deleteBySiteIdAndStatus(siteId, "draft"); SiteSnapshot snapshot = new SiteSnapshot(); snapshot.setSiteId(siteId); - snapshot.setVersion(newVersion); + snapshot.setVersion((latestDraft != null) ? latestDraft.getVersion() + 1 : 1); populateSnapshotFields(snapshot, data); snapshot.setChecksum(checksum); snapshot.setStatus("draft"); @@ -192,7 +194,7 @@ public class SiteSnapshotServiceImpl implements SiteSnapshotService { String bundleJson = toBundleJson(snapshot); jsonCache.put(draftKey(siteId), bundleJson); - log.info("预览版已保存: siteId={}, version={}, checksum={}", siteId, newVersion, checksum.substring(0, 8)); + log.info("预览版已保存: siteId={}, version={}, checksum={}", siteId, snapshot.getVersion(), checksum.substring(0, 8)); return snapshot; } catch (Exception e) { log.error("保存预览版失败 siteId={}", siteId, e); @@ -234,7 +236,8 @@ public class SiteSnapshotServiceImpl implements SiteSnapshotService { return current; } - // 更新状态为 published + // 先删旧 published,再改当前 draft 为 published(事务保证原子性) + snapshotMapper.deleteBySiteIdAndStatus(siteId, "published"); draft.setStatus("published"); draft.setPublishedAt(LocalDateTime.now()); snapshotMapper.updateById(draft);