完成 FileConfig 的后端模块

This commit is contained in:
YunaiV
2022-03-15 22:30:52 +08:00
parent 05d4aae65d
commit 18a5c46284
33 changed files with 1044 additions and 37 deletions

View File

@ -5,10 +5,10 @@ public interface FileClientFactory {
/**
* 获得文件客户端
*
* @param channelId 渠道编号
* @param configId 配置编号
* @return 文件客户端
*/
FileClient getFileClient(Long channelId);
FileClient getFileClient(Long configId);
/**
* 创建文件客户端

View File

@ -23,10 +23,10 @@ public class FileClientFactoryImpl implements FileClientFactory {
private final ConcurrentMap<Long, AbstractFileClient<?>> clients = new ConcurrentHashMap<>();
@Override
public FileClient getFileClient(Long channelId) {
AbstractFileClient<?> client = clients.get(channelId);
public FileClient getFileClient(Long configId) {
AbstractFileClient<?> client = clients.get(configId);
if (client == null) {
log.error("[getFileClient][配置编号({}) 找不到客户端]", channelId);
log.error("[getFileClient][配置编号({}) 找不到客户端]", configId);
}
return client;
}
@ -50,20 +50,7 @@ public class FileClientFactoryImpl implements FileClientFactory {
FileStorageEnum storageEnum = FileStorageEnum.getByStorage(storage);
Assert.notNull(storageEnum, String.format("文件配置(%s) 为空", storageEnum));
// 创建客户端
// switch (storageEnum) {
// case WX_PUB: return (AbstractFileClient<Config>) new WXPubFileClient(channelId, (WXFileClientConfig) config);
// case WX_LITE: return (AbstractFileClient<Config>) new WXPubFileClient(channelId, (WXFileClientConfig) config);
// case WX_APP: return (AbstractFileClient<Config>) new WXPubFileClient(channelId, (WXFileClientConfig) config);
// case ALIPAY_WAP: return (AbstractFileClient<Config>) new AlipayWapFileClient(channelId, (AlipayFileClientConfig) config);
// case ALIPAY_QR: return (AbstractFileClient<Config>) new AlipayQrFileClient(channelId, (AlipayFileClientConfig) config);
// case ALIPAY_APP: return (AbstractFileClient<Config>) new AlipayQrFileClient(channelId, (AlipayFileClientConfig) config);
// case ALIPAY_PC: return (AbstractFileClient<Config>) new AlipayQrFileClient(channelId, (AlipayFileClientConfig) config);
// }
return (AbstractFileClient<Config>) ReflectUtil.newInstance(storageEnum.getClientClass(), configId, config);
// storageEnum.getClientClass().newInstance()
// // 创建失败,错误日志 + 抛出异常
// log.error("[createSmsClient][配置({}) 找不到合适的客户端实现]", config);
// throw new IllegalArgumentException(String.format("配置(%s) 找不到合适的客户端实现", config));
}
}

View File

@ -2,6 +2,7 @@ package cn.iocoder.yudao.framework.file.core.client.s3;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.file.core.client.FileClientConfig;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import org.hibernate.validator.constraints.URL;
@ -70,11 +71,12 @@ public class S3FileClientConfig implements FileClientConfig {
@NotNull(message = "accessSecret 不能为空")
private String accessSecret;
@AssertTrue(message = "domain 不能为空")
@SuppressWarnings("RedundantIfStatement")
@AssertTrue(message = "domain 不能为空")
@JsonIgnore
public boolean isDomainValid() {
// 如果是七牛,必须带有 domain
if (endpoint.contains(ENDPOINT_QINIU) && StrUtil.isEmpty(domain)) {
if (StrUtil.contains(endpoint, ENDPOINT_QINIU) && StrUtil.isEmpty(domain)) {
return false;
}
return true;

View File

@ -49,10 +49,12 @@ public class S3FileClientTest {
public void testQiniu() {
S3FileClientConfig config = new S3FileClientConfig();
// 配置成你自己的
config.setAccessKey(System.getenv("QINIU_ACCESS_KEY"));
config.setAccessSecret(System.getenv("QINIU_SECRET_KEY"));
config.setBucket("s3-test-yudao");
config.setDomain("http://r8oo8po1q.hn-bkt.clouddn.com"); // 如果有自定义域名则可以设置。http://static.yudao.iocoder.cn
// config.setAccessKey(System.getenv("QINIU_ACCESS_KEY"));
// config.setAccessSecret(System.getenv("QINIU_SECRET_KEY"));
config.setAccessKey("b7yvuhBSAGjmtPhMFcn9iMOxUOY_I06cA_p0ZUx8");
config.setAccessSecret("kXM1l5ia1RvSX3QaOEcwI3RLz3Y2rmNszWonKZtP");
config.setBucket("ruoyi-vue-pro");
config.setDomain("http://test.yudao.iocoder.cn"); // 如果有自定义域名则可以设置。http://static.yudao.iocoder.cn
// 默认上海的 endpoint
config.setEndpoint("s3-cn-south-1.qiniucs.com");