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;
|
}
|
}
|