From 043a1d97a72781381ea8060061277413729d6ead Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Wed, 30 Aug 2023 16:31:02 +0800
Subject: [PATCH] 新增根据前缀路径上传文件接口

---
 skjcmanager/skjcmanager-ops/skjcmanager-resource/src/main/java/cn/gistack/resource/builder/oss/OssBuilder.java |   52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 52 insertions(+), 0 deletions(-)

diff --git a/skjcmanager/skjcmanager-ops/skjcmanager-resource/src/main/java/cn/gistack/resource/builder/oss/OssBuilder.java b/skjcmanager/skjcmanager-ops/skjcmanager-resource/src/main/java/cn/gistack/resource/builder/oss/OssBuilder.java
index b88258d..03c99e3 100644
--- a/skjcmanager/skjcmanager-ops/skjcmanager-resource/src/main/java/cn/gistack/resource/builder/oss/OssBuilder.java
+++ b/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;
+	}
+
 	/**
 	 * 获取对象存储实体
 	 *

--
Gitblit v1.9.3