From 86498f43cb9e6a5f8c58cca7b5c07a5ad1e23b2f Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Wed, 21 Feb 2024 09:22:13 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/main/java/org/springblade/modules/house/vo/HouseRentalTenantVO.java    |    5 +
 src/main/java/org/springblade/modules/resource/rule/MyOssRule.java         |   35 +++++++++++
 src/main/java/org/springblade/common/param/CommonParamSet.java             |    2 
 src/main/java/org/springblade/modules/resource/builder/oss/OssBuilder.java |   40 +++++++++++++
 src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java   |   37 ++++++++++++
 src/main/java/org/springblade/modules/house/mapper/HouseRentalMapper.xml   |    4 
 6 files changed, 119 insertions(+), 4 deletions(-)

diff --git a/src/main/java/org/springblade/common/param/CommonParamSet.java b/src/main/java/org/springblade/common/param/CommonParamSet.java
index 52bb45d..55448d5 100644
--- a/src/main/java/org/springblade/common/param/CommonParamSet.java
+++ b/src/main/java/org/springblade/common/param/CommonParamSet.java
@@ -57,7 +57,7 @@
 					communityCodeField.set(t,communityCode);
 				}
 			}
-			isAdministrator = AuthUtil.isAdministrator() == true || AuthUtil.isAdmin() == true ? 1 : 2;
+			isAdministrator = Strings.isBlank(roleName) && (AuthUtil.isAdministrator() == true || AuthUtil.isAdmin() == true) ? 1 : 2;
 			if (isAdministrator==2) {
 				// 获取当前用户的所属行政区划编号
 				regionChildCodesList = SysCache.getRegionChildCodesByDeptId(AuthUtil.getDeptId());
diff --git a/src/main/java/org/springblade/modules/house/mapper/HouseRentalMapper.xml b/src/main/java/org/springblade/modules/house/mapper/HouseRentalMapper.xml
index 2d1abd6..ca1a811 100644
--- a/src/main/java/org/springblade/modules/house/mapper/HouseRentalMapper.xml
+++ b/src/main/java/org/springblade/modules/house/mapper/HouseRentalMapper.xml
@@ -61,13 +61,13 @@
                     <if test="vo.roleName=='wgy'">
                         <choose>
                             <when test="gridCodeList !=null and gridCodeList.size()>0">
-                                and jp.grid_code in
+                                and jh.grid_code in
                                 <foreach collection="gridCodeList" item="code" open="(" close=")" separator=",">
                                     #{code}
                                 </foreach>
                             </when>
                             <otherwise>
-                                and jp.grid_code in ('')
+                                and jh.grid_code in ('')
                             </otherwise>
                         </choose>
                     </if>
diff --git a/src/main/java/org/springblade/modules/house/vo/HouseRentalTenantVO.java b/src/main/java/org/springblade/modules/house/vo/HouseRentalTenantVO.java
index f2be28c..41b4ebf 100644
--- a/src/main/java/org/springblade/modules/house/vo/HouseRentalTenantVO.java
+++ b/src/main/java/org/springblade/modules/house/vo/HouseRentalTenantVO.java
@@ -60,5 +60,10 @@
 
 	private Long userId;
 
+	/**
+	 * 社区编号
+	 */
+	private String communityCode;
+
 
 }
diff --git a/src/main/java/org/springblade/modules/resource/builder/oss/OssBuilder.java b/src/main/java/org/springblade/modules/resource/builder/oss/OssBuilder.java
index 35408d8..53099d4 100644
--- a/src/main/java/org/springblade/modules/resource/builder/oss/OssBuilder.java
+++ b/src/main/java/org/springblade/modules/resource/builder/oss/OssBuilder.java
@@ -32,7 +32,9 @@
 import org.springblade.core.tool.utils.StringPool;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.core.tool.utils.WebUtil;
+import org.springblade.modules.resource.endpoint.OssEndpoint;
 import org.springblade.modules.resource.entity.Oss;
+import org.springblade.modules.resource.rule.MyOssRule;
 import org.springblade.modules.resource.service.IOssService;
 
 import java.util.Map;
@@ -169,4 +171,42 @@
 		}
 	}
 
+	/**
+	 * 获取template
+	 * @param prefixPath 上传文件前缀路径
+	 * @return OssTemplate
+	 */
+	public OssTemplate templateByPrefixPath(String prefixPath) {
+		return templateByPath(StringPool.EMPTY,prefixPath);
+	}
+
+	/**
+	 * 自定义路径前缀获取template
+	 *
+	 * @param code 资源编号
+	 * @param prefixPath 上传文件前缀路径
+	 * @return OssTemplate
+	 */
+	public OssTemplate templateByPath(String code,String prefixPath) {
+		String tenantId = AuthUtil.getTenantId();
+		if (Strings.isBlank(tenantId)){
+			tenantId = "000000";
+		}
+		Oss oss = getOss(tenantId, code);
+		OssTemplate template = templatePool.get(tenantId);
+		template = templatePool.get(tenantId);
+		OssRule 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;
+	}
 }
diff --git a/src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java b/src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java
index 473107a..4f1b37e 100644
--- a/src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java
+++ b/src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java
@@ -206,7 +206,7 @@
 	 */
 	@SneakyThrows
 	@PostMapping("/put-file-attach-by-name")
-	public R<BladeFile> putFileAttach(@RequestParam String fileName, @RequestParam MultipartFile file) {
+	public R<BladeFile> putFileAttach(@RequestParam(required = false) String fileName, @RequestParam MultipartFile file) {
 		BladeFile bladeFile = ossBuilder.template().putFile(fileName, file.getInputStream());
 		Long attachId = buildAttach(fileName, file.getSize(), bladeFile);
 		bladeFile.setAttachId(attachId);
@@ -214,6 +214,41 @@
 	}
 
 	/**
+	 * 自定义前缀上传文件
+	 *
+	 * @param file 文件
+	 * @param prefixPath 文件
+	 * @return ObjectStat
+	 */
+	@SneakyThrows
+	@PostMapping("/put-file-by-prefix-path")
+	public R<BladeFile> putFileByPrefixPath(@RequestParam MultipartFile file,@RequestParam(required = false) String prefixPath) {
+		BladeFile bladeFile = ossBuilder.templateByPrefixPath(prefixPath).putFile(file.getOriginalFilename(), file.getInputStream());
+		// 修改link
+		changeLink(bladeFile);
+		return R.data(bladeFile);
+	}
+
+	/**
+	 * 自定义前缀上传文件并保存至附件表
+	 *
+	 * @param file 文件
+	 * @param prefixPath 文件
+	 * @return ObjectStat
+	 */
+	@SneakyThrows
+	@PostMapping("/put-file-attach-by-prefix-path")
+	public R<BladeFile> putFileAttachByPrefixPath(@RequestParam MultipartFile file,@RequestParam(required = false) String prefixPath) {
+		String fileName = file.getOriginalFilename();
+		BladeFile bladeFile = ossBuilder.templateByPrefixPath(prefixPath).putFile(file.getOriginalFilename(), file.getInputStream());
+		Long attachId = buildAttach(fileName, file.getSize(), bladeFile);
+		bladeFile.setAttachId(attachId);
+		// 修改link
+		changeLink(bladeFile);
+		return R.data(bladeFile);
+	}
+
+	/**
 	 * 构建附件表
 	 *
 	 * @param fileName  文件名
diff --git a/src/main/java/org/springblade/modules/resource/rule/MyOssRule.java b/src/main/java/org/springblade/modules/resource/rule/MyOssRule.java
new file mode 100644
index 0000000..cc292c8
--- /dev/null
+++ b/src/main/java/org/springblade/modules/resource/rule/MyOssRule.java
@@ -0,0 +1,35 @@
+package org.springblade.modules.resource.rule;
+
+import org.apache.logging.log4j.util.Strings;
+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);
+		if (!Strings.isBlank(prefixPath)) {
+			this.prefixPath = prefixPath;
+		}else {
+			this.prefixPath = "upload";
+		}
+	}
+
+	@Override
+	public String fileName(String originalFilename) {
+		return this.prefixPath + "/" + DateUtil.today() + "/" + StringUtil.randomUUID() + "." + FileUtil.getFileExtension(originalFilename);
+	}
+}

--
Gitblit v1.9.3