From 40eea427102f03eb2001f61a9373f665f4466dbd Mon Sep 17 00:00:00 2001 From: mediabot-pt <295750538+mediabot-pt@users.noreply.github.com> Date: Tue, 7 Jul 2026 17:54:37 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=B8=8A=E4=BC=A0=E9=A3=8E=E9=99=A9?= =?UTF-8?q?=E8=A7=84=E5=88=99=E5=90=8E=E5=90=8C=E6=AD=A5=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E7=AB=99=E7=82=B9=E5=BF=AB=E7=85=A7=EF=BC=8C=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E4=BB=8D=E6=98=BE=E7=A4=BA=E6=9C=AA=E5=8F=91?= =?UTF-8?q?=E5=B8=83=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 后端 RiskRuleServiceImpl:将 updateSnapshotsByType 从异步事件改为同步调用 snapshotService.updateSnapshot 2. 前端 RiskRules.vue:上传按钮成功后调用 fetchSnapshotStatus 刷新状态标签 --- .../core/service/impl/RiskRuleServiceImpl.java | 15 +++++++++------ web/src/views/RiskRules.vue | 1 + 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/par-core/src/main/java/com/par/core/service/impl/RiskRuleServiceImpl.java b/par-core/src/main/java/com/par/core/service/impl/RiskRuleServiceImpl.java index 2ee71f3..ba6d2a3 100644 --- a/par-core/src/main/java/com/par/core/service/impl/RiskRuleServiceImpl.java +++ b/par-core/src/main/java/com/par/core/service/impl/RiskRuleServiceImpl.java @@ -3,13 +3,12 @@ package com.par.core.service.impl; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.par.core.entity.RiskRule; -import com.par.core.event.SnapshotUpdateEvent; import com.par.core.mapper.RiskRuleMapper; import com.par.core.service.ManifestVersionService; import com.par.core.service.RiskRuleService; +import com.par.core.service.SiteSnapshotService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; import java.util.*; @@ -23,7 +22,7 @@ public class RiskRuleServiceImpl implements RiskRuleService { private final RiskRuleMapper mapper; private final com.par.core.storage.CachedStorageService storageService; private final com.par.core.service.SiteService siteService; - private final ApplicationEventPublisher eventPublisher; + private final SiteSnapshotService snapshotService; private static final ObjectMapper om = new ObjectMapper(); private RiskRule findByIdentifier(String identifier) { @@ -116,17 +115,21 @@ public class RiskRuleServiceImpl implements RiskRuleService { updateSnapshotsByType(siteType); } - /** 触发同类型下所有站点的快照更新 */ + /** 同步更新同类型下所有站点的快照 */ private void updateSnapshotsByType(String siteType) { try { var sites = siteService.listAllSites().stream() .filter(s -> s.getSiteType() != null && siteType.equals(s.getSiteType().getValue())) .toList(); for (var site : sites) { - eventPublisher.publishEvent(new SnapshotUpdateEvent(site.getSiteId())); + try { + snapshotService.updateSnapshot(site.getSiteId()); + } catch (Exception e) { + log.warn("快照更新失败 siteId={}: {}", site.getSiteId(), e.getMessage()); + } } } catch (Exception e) { - log.warn("批量快照更新事件发布失败 siteType={}: {}", siteType, e.getMessage()); + log.warn("批量快照更新失败 siteType={}: {}", siteType, e.getMessage()); } } diff --git a/web/src/views/RiskRules.vue b/web/src/views/RiskRules.vue index 2feeb26..3d0357a 100644 --- a/web/src/views/RiskRules.vue +++ b/web/src/views/RiskRules.vue @@ -497,6 +497,7 @@ const uploadRules = async () => { try { await api.raw.post('/risk-rules/'+editType.value+'/upload', { rules: parsed.value }) ElMessage.success('已上传') + fetchSnapshotStatus() } catch { ElMessage.error('上传失败') } finally { uploading.value = false } }