文件服务第三方扩展
配置参数
1、进入配置中心,打开菜单“系统高级配置-系统维护-配置管理”。搜索构建名称 com.toone.v3.platform-13mongodb mongodb
进行以下配置:
- isMongo 为
true
, 文件信息和文件都存在mongo中 - isMongo 为
false
, 两种情况:filesavepath
指定了文件路径,文件信息存储在数据库,文件存储在filesavepath
指定的路径fileServiceName
自定义,可以实现第三方扩展
新建Maven工程,添加依赖
pom.xml
<!-- ////////////////插件依赖开始/////////////////// -->
<dependency>
<groupId>com.yindangu.v3.platform</groupId>
<artifactId>plugin-business-api</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>com.yindangu.v3.platform</groupId>
<artifactId>plugin-register</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>com.yindangu.v3.platform</groupId>
<artifactId>plugin-utils</artifactId>
<version>3.3.0</version>
</dependency>
<!-- ////////////////插件依赖结束/////////////////// -->
注册插件
FileStorageRegister
package com.demo.v3.platform.fileStorage;
import java.util.Arrays;
import java.util.List;
import com.yindangu.v3.plugin.vds.reg.api.IRegisterPlugin;
import com.yindangu.v3.plugin.vds.reg.api.builder.IFileStorageServiceBuilder;
import com.yindangu.v3.plugin.vds.reg.api.model.IComponentProfileVo;
import com.yindangu.v3.plugin.vds.reg.api.model.IFileStorageServiceProfileVo;
import com.yindangu.v3.plugin.vds.reg.api.model.IPluginProfileVo;
import com.yindangu.v3.plugin.vds.reg.common.RegVds;
/**
* @Author meil
* @Date 2022/8/19 9:00
*/
public class FileStorageRegister implements IRegisterPlugin
{
public static final String D_COMPONENT="FileStorageDemo";
/** 插件作者 */
public final static String D_Author = "demo";
/** 组织标识 */
public final static String D_GroupId = "com.demo.v3.platform";
public IComponentProfileVo getComponentProfile() {
return RegVds.getPlugin()
.getComponentProfile()
.setGroupId(D_GroupId)
.setCode(D_COMPONENT)
.setVersion("3.0.0")
.build();
}
public List<IPluginProfileVo> getPluginProfile() {
IPluginProfileVo pro = getFileStorageService();
return Arrays.asList(pro);
}
private IPluginProfileVo getFileStorageService() {
IFileStorageServiceBuilder fss = RegVds.getPlugin().getFileStorageServicePlugin();
IFileStorageServiceProfileVo vo = fss.setName("文件存储扩展")
.setCode(FileStorageDemo.FileStorage_Code) //插件编码不能修改
.setDesc("文件存储扩展") //只能修改描述的信息
.setAuthor(D_Author)
.setEntry(FileStorageDemo.class)
.build();
return vo;
}
}
实现接口
FileStorageDemo
package com.demo.v3.platform.fileStorage;
import java.io.File;
import java.io.InputStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.yindangu.v3.business.file.api.model.IAppFileInfo;
import com.yindangu.v3.business.plugin.business.api.file.storage.IFileStorageService;
public class FileStorageDemo implements IFileStorageService
{
public static String FileStorage_Code = "demo_fss";
private static final Logger log = LoggerFactory.getLogger(FileStorageDemo.class);
public IAppFileInfo upload(File file, IAppFileInfo appFileInfo) {
log.warn("第三方文件服务upload File!");
/*
* 在此实现第三方存储逻辑
* */
return null;
}
public IAppFileInfo upload(InputStream inputStream, IAppFileInfo appFileInfo) {
log.warn("第三方文件服务upload inputStream!");
/*
* 在此实现第三方存储逻辑
* */
return null;
}
public IAppFileInfo getAppFileInfo(String fileId) {
log.warn("第三方文件服务getAppFileInfo fileId!");
/*
* 在此实现第三方存储逻辑
* */
return null;
}
public void deleteFiles(String... fileIds) {
log.warn("第三方文件服务deleteFiles!");
/*
* 在此实现第三方存储逻辑
* */
}
}
发布插件
修改配置
修改配置中心(文中开头提到的) isMongo 为 false, fileServiceName 自定义, 此demo中对应是com_demo_v3_platform_FileStorageDemo_demo_fss,
其中 "com_demo_v3_platform" 是插件注册的D_GroupId,"FileStorageDemo" 是插件注册的D_COMPONENT,"demo_fss" 是实现类中定义的code。