Skip to main content

文件服务第三方扩展

配置参数

1、进入配置中心,打开菜单“系统高级配置-系统维护-配置管理”。搜索构建名称 com.toone.v3.platform-13mongodb mongodb 进行以下配置:

  • isMongo 为 true , 文件信息和文件都存在mongo中
  • isMongo 为 false , 两种情况:
    • filesavepath 指定了文件路径,文件信息存储在数据库,文件存储在 filesavepath 指定的路径
    • fileServiceName 自定义,可以实现第三方扩展

01-1

新建Maven工程,添加依赖

gc

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!");
/*
* 在此实现第三方存储逻辑
* */
}
}

发布插件

fbcj

修改配置

修改配置中心(文中开头提到的) isMongo 为 false, fileServiceName 自定义, 此demo中对应是com_demo_v3_platform_FileStorageDemo_demo_fss,

其中 "com_demo_v3_platform" 是插件注册的D_GroupId,"FileStorageDemo" 是插件注册的D_COMPONENT,"demo_fss" 是实现类中定义的code。

示例代码

FileStorageDemo.zip