Jelajahi Sumber

feat: 文件名去重

shc 3 tahun lalu
induk
melakukan
929753e4a1

+ 35 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/SysFileController.java

@@ -17,6 +17,8 @@
 
 package com.qunzhixinxi.hnqz.admin.controller;
 
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.IdUtil;
 import com.baomidou.mybatisplus.core.metadata.OrderItem;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -25,14 +27,19 @@ import com.qunzhixinxi.hnqz.admin.service.SysFileService;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
 import com.qunzhixinxi.hnqz.common.security.annotation.Inner;
+import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
 
 /**
  * 文件管理
@@ -47,6 +54,8 @@ import javax.servlet.http.HttpServletResponse;
 public class SysFileController {
 
 	private final SysFileService sysFileService;
+	private final RedisTemplate<String,String> redisTemplate;
+	private final List<String> IMG_EXT_NAME= Arrays.asList("png", "jpg", "gif","jpeg","tif","bmp");
 
 	/**
 	 * 分页查询
@@ -84,6 +93,32 @@ public class SysFileController {
 	 */
 	@PostMapping("/upload")
 	public R upload(@RequestParam("file") MultipartFile file) {
+
+		return sysFileService.uploadFile(file);
+	}
+
+	/**
+	 * 小程序上传
+	 * @param file 资源
+	 * @return R(/ admin / bucketName / filename)
+	 */
+	@PostMapping("/upload/mobile")
+	public R uploadForMobile(@RequestParam("file") MultipartFile file) {
+
+		String originalFilename = file.getOriginalFilename();
+
+		String extName = FileUtil.extName(originalFilename);
+
+		if (IMG_EXT_NAME.contains(extName)){
+			Integer id = SecurityUtils.getUser().getId();
+			Boolean aBoolean = redisTemplate.opsForValue().setIfAbsent(String.format("%s:%s", id, originalFilename), IdUtil.fastSimpleUUID(), 7, TimeUnit.DAYS);
+
+			if (aBoolean != null && !aBoolean){
+				return R.failed("请勿上传重复的文件");
+			}
+
+		}
+
 		return sysFileService.uploadFile(file);
 	}