刘光辉
5 小时以前 06f314545ac3514d7ce28939920866ae8188d31c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package jnpf.dmsEntity.download.model;
 
import jnpf.dmsEntity.preview.model.DmsWatermarkSnapshot;
import jnpf.dmsEntity.storage.model.DmsPersistentPdfSource;
import jnpf.util.JsonUtil;
import lombok.Data;
 
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
 
@Data
public class DmsFileDownloadTicket {
    public static final String SCOPE = "dms:file:download";
 
    private String scope;
    private String tenantId;
    private String userId;
    private UUID fileVersionId;
    private String fileName;
    private String mimeType;
    private Long sizeBytes;
    private String storagePlatform;
    private String bucketName;
    private String basePath;
    private String objectPath;
    private String objectName;
    private DmsPersistentPdfSource pdfSource;
    private List<DmsWatermarkSnapshot> watermarks = new ArrayList<>();
    /** Set only by a permission-checked historical issuance; absent legacy value means current use. */
    private boolean historicalAccess;
    private long expiresAt;
 
    public static DmsFileDownloadTicket fromRaw(Object raw) {
        if (!(raw instanceof String) || isBlank((String) raw)) {
            throw new IllegalArgumentException("DMS 下载票据无效");
        }
        DmsFileDownloadTicket payload;
        try {
            payload = JsonUtil.getJsonToBean((String) raw, DmsFileDownloadTicket.class);
        } catch (RuntimeException exception) {
            throw new IllegalArgumentException("DMS 下载票据无效", exception);
        }
        if (payload == null || !SCOPE.equals(payload.getScope())
                || isBlank(payload.getTenantId()) || isBlank(payload.getUserId())
                || payload.getFileVersionId() == null || isBlank(payload.getFileName())
                || isBlank(payload.getStoragePlatform()) || isBlank(payload.getBucketName())
                || isBlank(payload.getObjectPath()) || isBlank(payload.getObjectName())
                || payload.getExpiresAt() <= System.currentTimeMillis()) {
            throw new IllegalArgumentException("DMS 下载票据无效或已过期");
        }
        return payload;
    }
 
    private static boolean isBlank(String value) {
        return value == null || value.trim().isEmpty();
    }
}