zhongrj
2023-08-30 043a1d97a72781381ea8060061277413729d6ead
新增根据前缀路径上传文件接口
2 files modified
1 files added
96 ■■■■■ changed files
skjcmanager/skjcmanager-ops/skjcmanager-resource/src/main/java/cn/gistack/resource/builder/oss/OssBuilder.java 52 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-ops/skjcmanager-resource/src/main/java/cn/gistack/resource/endpoint/OssEndpoint.java 14 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-ops/skjcmanager-resource/src/main/java/cn/gistack/resource/rule/MyOssRule.java 30 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-ops/skjcmanager-resource/src/main/java/cn/gistack/resource/builder/oss/OssBuilder.java
@@ -16,6 +16,7 @@
 */
package cn.gistack.resource.builder.oss;
import cn.gistack.resource.rule.MyOssRule;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springblade.core.cache.utils.CacheUtil;
@@ -78,6 +79,15 @@
    /**
     * 获取template
     * @param prefixPath 上传文件前缀路径
     * @return OssTemplate
     */
    public OssTemplate templateByPrefixPath(String prefixPath) {
        return templateByPath(StringPool.EMPTY,prefixPath);
    }
    /**
     * 获取template
     *
     * @param code 资源编号
     * @return OssTemplate
@@ -116,6 +126,48 @@
        return template;
    }
    /**
     * 自定义路径前缀获取template
     *
     * @param code 资源编号
     * @param prefixPath 上传文件前缀路径
     * @return OssTemplate
     */
    public OssTemplate templateByPath(String code,String prefixPath) {
        String tenantId = AuthUtil.getTenantId();
        Oss oss = getOss(tenantId, code);
        Oss ossCached = ossPool.get(tenantId);
        OssTemplate template = templatePool.get(tenantId);
        // 若为空或者不一致,则重新加载
        if (Func.hasEmpty(template, ossCached) || !oss.getEndpoint().equals(ossCached.getEndpoint()) || !oss.getAccessKey().equals(ossCached.getAccessKey())) {
            synchronized (OssBuilder.class) {
                template = templatePool.get(tenantId);
                if (Func.hasEmpty(template, ossCached) || !oss.getEndpoint().equals(ossCached.getEndpoint()) || !oss.getAccessKey().equals(ossCached.getAccessKey())) {
                    OssRule ossRule;
                    // 若采用默认设置则开启多租户模式, 若是用户自定义oss则不开启
                    if (oss.getEndpoint().equals(ossProperties.getEndpoint()) && oss.getAccessKey().equals(ossProperties.getAccessKey()) && ossProperties.getTenantMode()) {
                        ossRule = new MyOssRule(Boolean.TRUE,prefixPath);
                    } else {
                        ossRule = new MyOssRule(Boolean.FALSE,prefixPath);
                    }
                    if (oss.getCategory() == OssEnum.MINIO.getCategory()) {
                        template = MinioOssBuilder.template(oss, ossRule);
                    } else if (oss.getCategory() == OssEnum.QINIU.getCategory()) {
                        template = QiniuOssBuilder.template(oss, ossRule);
                    } else if (oss.getCategory() == OssEnum.ALI.getCategory()) {
                        template = AliOssBuilder.template(oss, ossRule);
                    } else if (oss.getCategory() == OssEnum.TENCENT.getCategory()) {
                        template = TencentOssBuilder.template(oss, ossRule);
                    }
                    templatePool.put(tenantId, template);
                    ossPool.put(tenantId, oss);
                }
            }
        }
        return template;
    }
    /**
     * 获取对象存储实体
     *
skjcmanager/skjcmanager-ops/skjcmanager-resource/src/main/java/cn/gistack/resource/endpoint/OssEndpoint.java
@@ -151,6 +151,20 @@
    /**
     * 上传文件
     *
     * @param file 文件
     * @param prefixPath 文件
     * @return ObjectStat
     */
    @SneakyThrows
    @PostMapping("/put-file-by-prefix-path")
    public R<BladeFile> putFileByPrefixPath(@RequestParam MultipartFile file,@RequestParam String prefixPath) {
        BladeFile bladeFile = ossBuilder.templateByPrefixPath(prefixPath).putFile(file.getOriginalFilename(), file.getInputStream());
        return R.data(bladeFile);
    }
    /**
     * 上传文件
     *
     * @param fileName 存储桶对象名称
     * @param file     文件
     * @return ObjectStat
skjcmanager/skjcmanager-ops/skjcmanager-resource/src/main/java/cn/gistack/resource/rule/MyOssRule.java
New file
@@ -0,0 +1,30 @@
package cn.gistack.resource.rule;
import org.springblade.core.oss.rule.BladeOssRule;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.FileUtil;
import org.springblade.core.tool.utils.StringUtil;
public class MyOssRule extends BladeOssRule {
    private String prefixPath;
    @Override
    public String bucketName(String bucketName) {
        return super.bucketName(bucketName);
    }
    public MyOssRule(Boolean tenantMode) {
        super(tenantMode);
    }
    public MyOssRule(Boolean tenantMode, String prefixPath) {
        super(tenantMode);
        this.prefixPath = prefixPath;
    }
    @Override
    public String fileName(String originalFilename) {
        return this.prefixPath + "/upload/" + DateUtil.today() + "/" + StringUtil.randomUUID() + "." + FileUtil.getFileExtension(originalFilename);
    }
}