package jnpf.fileStorage.dms;
|
|
import jnpf.dms.DmsPersistentPdfRecoveryApi;
|
import jnpf.dmsEntity.download.model.DmsFileDownloadTicket;
|
import jnpf.dmsEntity.preview.model.DmsFilePreviewTicket;
|
import jnpf.dmsEntity.storage.form.DmsPersistentPdfInvalidationForm;
|
import jnpf.dmsEntity.storage.model.DmsPersistentPdfSource;
|
import lombok.RequiredArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Component;
|
|
import java.util.UUID;
|
|
@Slf4j
|
@Component
|
@RequiredArgsConstructor
|
public class DmsPersistentPdfRecoveryReporter {
|
private static final String SERVICE_ID = "jnpf-file";
|
private final DmsPersistentPdfRecoveryApi recoveryApi;
|
|
public void report(DmsFilePreviewTicket ticket, String reason) {
|
if (ticket == null) return;
|
report(ticket.getTenantId(), ticket.getFileVersionId(), ticket.getPdfSource(), reason);
|
}
|
|
public void report(DmsFileDownloadTicket ticket, String reason) {
|
if (ticket == null) return;
|
report(ticket.getTenantId(), ticket.getFileVersionId(), ticket.getPdfSource(), reason);
|
}
|
|
private void report(String tenantId, UUID fileVersionId, DmsPersistentPdfSource source,
|
String reason) {
|
if (source == null || source.getObjectKey() == null
|
|| source.getSourceChecksumSha256() == null) return;
|
DmsPersistentPdfInvalidationForm form = new DmsPersistentPdfInvalidationForm();
|
form.setTenantId(tenantId);
|
form.setFileVersionId(fileVersionId);
|
form.setSourceChecksumSha256(source.getSourceChecksumSha256());
|
form.setObjectKey(source.getObjectKey());
|
form.setReason(reason);
|
try {
|
recoveryApi.invalidate(SERVICE_ID, form);
|
} catch (Exception exception) {
|
log.warn("上报 DMS 持久化 PDF 失效失败,不影响当前文件访问: fileVersionId={}, objectKey={}",
|
fileVersionId, source.getObjectKey(), exception);
|
}
|
}
|
}
|