|
@@ -1,12 +1,20 @@
|
|
|
package cn.iocoder.yudao.module.infra.dal.dataobject.file;
|
|
|
|
|
|
-import cn.iocoder.yudao.framework.file.core.client.FileClientConfig;
|
|
|
-import cn.iocoder.yudao.framework.file.core.enums.FileStorageEnum;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
|
|
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
|
|
+import cn.iocoder.yudao.module.infra.framework.file.core.client.FileClientConfig;
|
|
|
+import cn.iocoder.yudao.module.infra.framework.file.core.client.db.DBFileClientConfig;
|
|
|
+import cn.iocoder.yudao.module.infra.framework.file.core.client.ftp.FtpFileClientConfig;
|
|
|
+import cn.iocoder.yudao.module.infra.framework.file.core.client.local.LocalFileClientConfig;
|
|
|
+import cn.iocoder.yudao.module.infra.framework.file.core.client.s3.S3FileClientConfig;
|
|
|
+import cn.iocoder.yudao.module.infra.framework.file.core.client.sftp.SftpFileClientConfig;
|
|
|
+import cn.iocoder.yudao.module.infra.framework.file.core.enums.FileStorageEnum;
|
|
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
|
|
import com.baomidou.mybatisplus.annotation.TableField;
|
|
|
import com.baomidou.mybatisplus.annotation.TableName;
|
|
|
-import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
|
|
|
+import com.baomidou.mybatisplus.extension.handlers.AbstractJsonTypeHandler;
|
|
|
+import com.fasterxml.jackson.core.type.TypeReference;
|
|
|
import lombok.*;
|
|
|
|
|
|
/**
|
|
@@ -52,7 +60,42 @@ public class FileConfigDO extends BaseDO {
|
|
|
/**
|
|
|
* 支付渠道配置
|
|
|
*/
|
|
|
- @TableField(typeHandler = JacksonTypeHandler.class)
|
|
|
+ @TableField(typeHandler = FileClientConfigTypeHandler.class)
|
|
|
private FileClientConfig config;
|
|
|
|
|
|
+ public static class FileClientConfigTypeHandler extends AbstractJsonTypeHandler<Object> {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected Object parse(String json) {
|
|
|
+ FileClientConfig config = JsonUtils.parseObjectQuietly(json, new TypeReference<>() {});
|
|
|
+ if (config != null) {
|
|
|
+ return config;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 兼容老版本的包路径
|
|
|
+ String className = JsonUtils.parseObject(json, "@class", String.class);
|
|
|
+ className = StrUtil.subAfter(className, ".", true);
|
|
|
+ switch (className) {
|
|
|
+ case "DBFileClientConfig":
|
|
|
+ return JsonUtils.parseObject2(json, DBFileClientConfig.class);
|
|
|
+ case "FtpFileClientConfig":
|
|
|
+ return JsonUtils.parseObject2(json, FtpFileClientConfig.class);
|
|
|
+ case "LocalFileClientConfig":
|
|
|
+ return JsonUtils.parseObject2(json, LocalFileClientConfig.class);
|
|
|
+ case "SftpFileClientConfig":
|
|
|
+ return JsonUtils.parseObject2(json, SftpFileClientConfig.class);
|
|
|
+ case "S3FileClientConfig":
|
|
|
+ return JsonUtils.parseObject2(json, S3FileClientConfig.class);
|
|
|
+ default:
|
|
|
+ throw new IllegalArgumentException("未知的 FileClientConfig 类型:" + json);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected String toJson(Object obj) {
|
|
|
+ return JsonUtils.toJsonString(obj);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|