From dd9340090b9d960e486201e92d6a7a991d7cdec6 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期五, 23 七月 2021 19:14:37 +0800 Subject: [PATCH] add OSS模块 增加预览图片开关 --- ruoyi-oss/src/main/java/com/ruoyi/system/controller/SysOssController.java | 52 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 46 insertions(+), 6 deletions(-) diff --git a/ruoyi-oss/src/main/java/com/ruoyi/system/controller/SysOssController.java b/ruoyi-oss/src/main/java/com/ruoyi/system/controller/SysOssController.java index a629626..3791030 100644 --- a/ruoyi-oss/src/main/java/com/ruoyi/system/controller/SysOssController.java +++ b/ruoyi-oss/src/main/java/com/ruoyi/system/controller/SysOssController.java @@ -1,6 +1,8 @@ package com.ruoyi.system.controller; +import cn.hutool.core.convert.Convert; +import cn.hutool.http.HttpUtil; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.core.controller.BaseController; @@ -8,15 +10,28 @@ import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.exception.CustomException; +import com.ruoyi.common.utils.file.FileUtils; +import com.ruoyi.system.bo.SysOssQueryBo; import com.ruoyi.system.domain.SysOss; import com.ruoyi.system.service.ISysOssService; +import com.ruoyi.system.vo.SysOssVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.NotEmpty; +import java.io.IOException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.HashMap; import java.util.Map; @@ -26,6 +41,8 @@ * * @author Lion Li */ +@Validated +@Api(value = "OSS浜戝瓨鍌ㄦ帶鍒跺櫒", tags = {"OSS浜戝瓨鍌ㄧ鐞�"}) @RequiredArgsConstructor(onConstructor_ = @Autowired) @RestController @RequestMapping("/system/oss") @@ -34,22 +51,27 @@ private final ISysOssService iSysOssService; /** - * 鏌ヨ鏂囦欢涓婁紶鍒楄〃 + * 鏌ヨOSS浜戝瓨鍌ㄥ垪琛� */ + @ApiOperation("鏌ヨOSS浜戝瓨鍌ㄥ垪琛�") @PreAuthorize("@ss.hasPermi('system:oss:list')") @GetMapping("/list") - public TableDataInfo<SysOss> list(SysOss sysOss) { - return iSysOssService.queryPageList(sysOss); + public TableDataInfo<SysOssVo> list(@Validated SysOssQueryBo bo) { + return iSysOssService.queryPageList(bo); } /** - * 涓婁紶鍥剧墖 + * 涓婁紶OSS浜戝瓨鍌� */ + @ApiOperation("涓婁紶OSS浜戝瓨鍌�") + @ApiImplicitParams({ + @ApiImplicitParam(name = "file", value = "鏂囦欢", dataType = "java.io.File", required = true), + }) @PreAuthorize("@ss.hasPermi('system:oss:upload')") @Log(title = "OSS浜戝瓨鍌�", businessType = BusinessType.INSERT) @RepeatSubmit @PostMapping("/upload") - public AjaxResult<Map<String, String>> upload(@RequestParam("file") MultipartFile file) { + public AjaxResult<Map<String, String>> upload(@RequestPart("file") MultipartFile file) { if (file.isEmpty()) { throw new CustomException("涓婁紶鏂囦欢涓嶈兘涓虹┖"); } @@ -60,15 +82,33 @@ return AjaxResult.success(map); } + @ApiOperation("涓嬭浇OSS浜戝瓨鍌�") + @PreAuthorize("@ss.hasPermi('system:oss:download')") + @GetMapping("/download/{ossId}") + public void download(@PathVariable Long ossId, HttpServletResponse response) throws IOException { + SysOss sysOss = iSysOssService.getById(ossId); + if (sysOss == null) { + throw new CustomException("鏂囦欢鏁版嵁涓嶅瓨鍦�!"); + } + response.reset(); + response.addHeader("Access-Control-Allow-Origin", "*"); + response.addHeader("Access-Control-Expose-Headers", "Content-Disposition"); + FileUtils.setAttachmentResponseHeader(response, URLEncoder.encode(sysOss.getOriginalName(), StandardCharsets.UTF_8)); + response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE + "; charset=UTF-8"); + long data = HttpUtil.download(sysOss.getUrl(), response.getOutputStream(), false); + response.setContentLength(Convert.toInt(data)); + } + /** * 鍒犻櫎OSS浜戝瓨鍌� */ + @ApiOperation("鍒犻櫎OSS浜戝瓨鍌�") @PreAuthorize("@ss.hasPermi('system:oss:remove')") @Log(title = "OSS浜戝瓨鍌�" , businessType = BusinessType.DELETE) @DeleteMapping("/{ossIds}") public AjaxResult<Void> remove(@NotEmpty(message = "涓婚敭涓嶈兘涓虹┖") @PathVariable Long[] ossIds) { - return toAjax(iSysOssService.deleteByIds(Arrays.asList(ossIds)) ? 1 : 0); + return toAjax(iSysOssService.deleteWithValidByIds(Arrays.asList(ossIds), true) ? 1 : 0); } } -- Gitblit v1.9.3