package com.dl.web.controller.system; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.util.ObjectUtil; import com.dl.common.annotation.Log; import com.dl.common.core.controller.BaseController; import com.dl.common.core.domain.PageQuery; import com.dl.common.core.domain.R; import com.dl.common.core.page.TableDataInfo; import com.dl.common.core.validate.QueryGroup; import com.dl.common.enums.BusinessType; import com.dl.system.domain.bo.SysOssBo; import com.dl.system.domain.vo.SysOssVo; import com.dl.system.service.ISysOssService; import lombok.RequiredArgsConstructor; import org.springframework.http.MediaType; 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.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 文件上传 控制层 * * @author Lion Li */ @Validated @RequiredArgsConstructor @RestController @RequestMapping("/system/oss") public class SysOssController extends BaseController { private final ISysOssService iSysOssService; /** * 查询OSS对象存储列表 */ @SaCheckPermission("system:oss:list") @GetMapping("/list") public TableDataInfo list(@Validated(QueryGroup.class) SysOssBo bo, PageQuery pageQuery) { return iSysOssService.queryPageList(bo, pageQuery); } /** * 查询OSS对象基于id串 * * @param ossIds OSS对象ID串 */ @SaCheckPermission("system:oss:list") @GetMapping("/listByIds/{ossIds}") public R> listByIds(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ossIds) { List list = iSysOssService.listByIds(Arrays.asList(ossIds)); return R.ok(list); } /** * 上传OSS对象存储 * * @param file 文件 */ @SaCheckPermission("system:oss:upload") @Log(title = "OSS对象存储", businessType = BusinessType.INSERT) @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public R> upload(@RequestPart("file") MultipartFile file) { if (ObjectUtil.isNull(file)) { return R.fail("上传文件不能为空"); } SysOssVo oss = iSysOssService.upload(file); Map map = new HashMap<>(2); map.put("url", oss.getUrl()); map.put("fileName", oss.getOriginalName()); map.put("ossId", oss.getOssId().toString()); return R.ok(map); } /** * 下载OSS对象 * * @param ossId OSS对象ID */ @SaCheckPermission("system:oss:download") @GetMapping("/download/{ossId}") public void download(@PathVariable Long ossId, HttpServletResponse response) throws IOException { iSysOssService.download(ossId,response); } /** * 删除OSS对象存储 * * @param ossIds OSS对象ID串 */ @SaCheckPermission("system:oss:remove") @Log(title = "OSS对象存储", businessType = BusinessType.DELETE) @DeleteMapping("/{ossIds}") public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ossIds) { return toAjax(iSysOssService.deleteWithValidByIds(Arrays.asList(ossIds), true)); } }