From eb2be90e74adfa06ee251f80c08243d0301ce467 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期三, 28 七月 2021 10:49:16 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' --- ruoyi-oss/src/main/java/com/ruoyi/system/controller/SysOssController.java | 96 ++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 76 insertions(+), 20 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 28cea03..45f838a 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,58 +1,114 @@ package com.ruoyi.system.controller; -import com.aliyun.oss.ServiceException; +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; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.exception.CustomException; -import com.ruoyi.common.utils.PageUtils; -import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.utils.file.FileUtils; +import com.ruoyi.system.domain.bo.SysOssBo; import com.ruoyi.system.domain.SysOss; import com.ruoyi.system.service.ISysOssService; -import lombok.extern.slf4j.Slf4j; +import com.ruoyi.system.domain.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.stereotype.Controller; -import org.springframework.ui.ModelMap; +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 java.util.List; +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; /** * 鏂囦欢涓婁紶 鎺у埗灞� * - * @author chkj - * @date 2019-07-15 + * @author Lion Li */ -@Slf4j +@Validated +@Api(value = "OSS浜戝瓨鍌ㄦ帶鍒跺櫒", tags = {"OSS浜戝瓨鍌ㄧ鐞�"}) +@RequiredArgsConstructor(onConstructor_ = @Autowired) @RestController @RequestMapping("/system/oss") public class SysOssController extends BaseController { - @Autowired - private ISysOssService iSysOssService; + private final ISysOssService iSysOssService; /** - * 鏌ヨ鏂囦欢涓婁紶鍒楄〃 + * 鏌ヨOSS浜戝瓨鍌ㄥ垪琛� */ + @ApiOperation("鏌ヨOSS浜戝瓨鍌ㄥ垪琛�") + @PreAuthorize("@ss.hasPermi('system:oss:list')") @GetMapping("/list") - public TableDataInfo list(SysOss sysOss) { - List<SysOss> list = iSysOssService.list(sysOss); - return PageUtils.buildDataInfo(list); + public TableDataInfo<SysOssVo> list(@Validated SysOssBo 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 upload(@RequestParam("file") MultipartFile file) { + public AjaxResult<Map<String, String>> upload(@RequestPart("file") MultipartFile file) { if (file.isEmpty()) { throw new CustomException("涓婁紶鏂囦欢涓嶈兘涓虹┖"); } - Map<String, String> json = iSysOssService.upload(file); - return AjaxResult.success(json); + SysOss oss = iSysOssService.upload(file); + Map<String, String> map = new HashMap<>(2); + map.put("url", oss.getUrl()); + map.put("fileName", oss.getFileName()); + 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.deleteWithValidByIds(Arrays.asList(ossIds), true) ? 1 : 0); } } -- Gitblit v1.9.3