| | |
| | | package com.ruoyi.basic.dto; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonCreator; |
| | | import com.fasterxml.jackson.annotation.JsonValue; |
| | | import com.ruoyi.basic.pojo.StorageBlob; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Map; |
| | | |
| | | @Data |
| | | public class StorageBlobDTO extends StorageBlob { |
| | | private String url; |
| | | /** |
| | | * 预览地址 |
| | | */ |
| | | private String previewURL; |
| | | |
| | | private String downloadUrl; |
| | | /** |
| | | * 下载地址 |
| | | */ |
| | | private String downloadURL; |
| | | |
| | | /** |
| | | * 文件类型 |
| | | */ |
| | | private String application; |
| | | |
| | | /** |
| | | * 支持从数字ID或完整JSON对象反序列化 |
| | | */ |
| | | @JsonCreator |
| | | public static StorageBlobDTO from(Object value) { |
| | | if (value instanceof Number) { |
| | | StorageBlobDTO dto = new StorageBlobDTO(); |
| | | dto.setId(((Number) value).longValue()); |
| | | return dto; |
| | | } |
| | | if (value instanceof Map) { |
| | | @SuppressWarnings("unchecked") |
| | | Map<String, Object> map = (Map<String, Object>) value; |
| | | StorageBlobDTO dto = new StorageBlobDTO(); |
| | | if (map.get("id") instanceof Number) { |
| | | dto.setId(((Number) map.get("id")).longValue()); |
| | | } |
| | | if (map.get("resourceKey") instanceof String) { |
| | | dto.setResourceKey((String) map.get("resourceKey")); |
| | | } |
| | | if (map.get("contentType") instanceof String) { |
| | | dto.setContentType((String) map.get("contentType")); |
| | | } |
| | | if (map.get("originalFilename") instanceof String) { |
| | | dto.setOriginalFilename((String) map.get("originalFilename")); |
| | | } |
| | | if (map.get("uidFilename") instanceof String) { |
| | | dto.setUidFilename((String) map.get("uidFilename")); |
| | | } |
| | | if (map.get("byteSize") instanceof Number) { |
| | | dto.setByteSize(((Number) map.get("byteSize")).longValue()); |
| | | } |
| | | if (map.get("path") instanceof String) { |
| | | dto.setPath((String) map.get("path")); |
| | | } |
| | | if (map.get("previewURL") instanceof String) { |
| | | dto.setPreviewURL((String) map.get("previewURL")); |
| | | } |
| | | if (map.get("downloadURL") instanceof String) { |
| | | dto.setDownloadURL((String) map.get("downloadURL")); |
| | | } |
| | | return dto; |
| | | } |
| | | if (value instanceof String) { |
| | | try { |
| | | StorageBlobDTO dto = new StorageBlobDTO(); |
| | | dto.setId(Long.parseLong((String) value)); |
| | | return dto; |
| | | } catch (NumberFormatException ignored) { |
| | | } |
| | | } |
| | | throw new IllegalArgumentException("无法反序列化 StorageBlobDTO: " + value); |
| | | } |
| | | } |