package jnpf.dmsEntity.compare; import jnpf.dmsEntity.preview.vo.DmsFilePreviewTicketVO; import jnpf.util.JsonUtil; import lombok.Data; import java.util.UUID; /** Server-side pair binding; never accept two unrelated preview tickets from the browser. */ @Data public class DmsCompareTicket { public static final String SCOPE = "dms:onlyoffice:compare"; private String scope = SCOPE; private String tenantId; private String userId; private UUID documentId; private DmsFilePreviewTicketVO historical; private DmsFilePreviewTicketVO current; private String historicalLabel; private String currentLabel; private long expiresAt; public static DmsCompareTicket fromRaw(Object raw) { if (!(raw instanceof String)) throw new IllegalArgumentException("比较票据无效"); DmsCompareTicket ticket = JsonUtil.getJsonToBean((String) raw, DmsCompareTicket.class); if (ticket == null || !SCOPE.equals(ticket.scope) || ticket.expiresAt <= System.currentTimeMillis() || ticket.documentId == null || ticket.tenantId == null || ticket.userId == null || ticket.current == null || ticket.historical == null) { throw new IllegalArgumentException("比较票据无效或已过期"); } return ticket; } }