|
@@ -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);
|
|
|
}
|
|
|
|