fix: 解决 ConfigServiceImpl 与 SiteSnapshotServiceImpl 循环依赖
- 移除 SiteSnapshotServiceImpl 对 ConfigService 的依赖,直接使用 SiteConfigMapper - ConfigServiceImpl/SitePagesServiceImpl/RiskRuleServiceImpl 改用 ApplicationEvent 异步触发快照更新 - 新增 SnapshotUpdateEvent 和 SnapshotUpdateListener - ParApplication 添加 @EnableAsync 支持异步事件处理 - AdminController 中 updateSnapshot 调用改为发布事件
This commit is contained in:
@@ -3,9 +3,11 @@ package com.par.api;
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.scheduling.annotation.EnableAsync;
|
||||
|
||||
@SpringBootApplication(scanBasePackages = {"com.par"})
|
||||
@MapperScan("com.par.core.mapper")
|
||||
@EnableAsync
|
||||
public class ParApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.par.core.entity.Psk;
|
||||
import com.par.core.entity.SiteConfig;
|
||||
import com.par.core.enums.ConfigStatus;
|
||||
import com.par.core.enums.TrustLevel;
|
||||
import com.par.core.event.SnapshotUpdateEvent;
|
||||
import com.par.core.mapper.AccountMapper;
|
||||
import com.par.core.mapper.ConfigReviewMapper;
|
||||
import com.par.core.mapper.SiteConfigMapper;
|
||||
@@ -53,6 +54,7 @@ public class AdminController {
|
||||
private final com.par.core.service.SitePagesService sitePagesService;
|
||||
private final com.par.core.service.RiskRuleService riskRuleService;
|
||||
private final com.par.core.service.SiteSnapshotService snapshotService;
|
||||
private final org.springframework.context.ApplicationEventPublisher eventPublisher;
|
||||
|
||||
/**
|
||||
* 获取所有用户列表
|
||||
@@ -128,8 +130,8 @@ public class AdminController {
|
||||
}
|
||||
|
||||
log.info("Config approved: id={}, reviewer={}", reviewId, reviewerId);
|
||||
// 触发快照更新
|
||||
try { snapshotService.updateSnapshot(config.getSiteId()); } catch (Exception e) { log.warn("快照更新失败 siteId={}: {}", config.getSiteId(), e.getMessage()); }
|
||||
// 发布事件,异步触发快照更新
|
||||
eventPublisher.publishEvent(new SnapshotUpdateEvent(config.getSiteId()));
|
||||
return ApiResponse.success();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user