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 previewURL;
|
|
/**
|
* 下载地址
|
*/
|
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);
|
}
|
}
|