package jnpf.dmsIntegration.audit; import jnpf.audit.model.AuditEventDTO; import jnpf.audit.sdk.AuditClient; import jnpf.audit.sdk.AuditContextCollector; import jnpf.audit.sdk.AuditEventPublisher; import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; /** 后台业务任务的显式审计入口;无需伪造浏览器请求或登录会话。 */ @Component public class DmsSystemAudit { private final ObjectProvider publishers; private final boolean enabled; public DmsSystemAudit(ObjectProvider publishers, @Value("${audit.enabled:true}") boolean enabled) { this.publishers = publishers; this.enabled = enabled; } public void record(AuditEventDTO event) { if (!enabled) return; if (!"0".equals(event.getOperatorId()) || event.getTenantId() == null || event.getTenantId().trim().isEmpty()) throw new IllegalArgumentException("系统审计必须指定执行用户0和真实租户"); // 使用 SDK 的显式入口与事务缓冲/失败落盘能力;前端请求来源过滤不适用于后台任务。 AuditClient client = new AuditClient(new AuditContextCollector("jnpf-dms"), publishers.getObject(), true); client.record(event); } }