package cn.lili.modules.file.plugin;
|
|
import cn.hutool.json.JSONUtil;
|
import cn.lili.common.exception.ServiceException;
|
import cn.lili.modules.file.entity.enums.OssEnum;
|
import cn.lili.modules.file.plugin.impl.AliFilePlugin;
|
import cn.lili.modules.file.plugin.impl.HuaweiFilePlugin;
|
import cn.lili.modules.file.plugin.impl.MinioFilePlugin;
|
import cn.lili.modules.file.plugin.impl.TencentFilePlugin;
|
import cn.lili.modules.system.entity.dos.Setting;
|
import cn.lili.modules.system.entity.dto.OssSetting;
|
import cn.lili.modules.system.entity.enums.SettingEnum;
|
import cn.lili.modules.system.service.SettingService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
/**
|
* 文件服务抽象工厂 直接返回操作类
|
*
|
* @author Chopper
|
* @version v1.0
|
* 2022-06-06 11:35
|
*/
|
@Component
|
public class FilePluginFactory {
|
|
|
@Autowired
|
private SettingService settingService;
|
|
|
/**
|
* 获取oss client
|
*
|
* @return
|
*/
|
public FilePlugin filePlugin() {
|
|
OssSetting ossSetting = null;
|
try {
|
Setting setting = settingService.get(SettingEnum.OSS_SETTING.name());
|
|
ossSetting = JSONUtil.toBean(setting.getSettingValue(), OssSetting.class);
|
|
|
switch (OssEnum.valueOf(ossSetting.getType())) {
|
|
case MINIO:
|
return new MinioFilePlugin(ossSetting);
|
case ALI_OSS:
|
return new AliFilePlugin(ossSetting);
|
case HUAWEI_OBS:
|
return new HuaweiFilePlugin(ossSetting);
|
case TENCENT_COS:
|
return new TencentFilePlugin(ossSetting);
|
default:
|
throw new ServiceException();
|
}
|
} catch (Exception e) {
|
throw new ServiceException();
|
}
|
}
|
|
|
}
|