package com.iailab.module.oss.controller; import com.iailab.common.annotation.LogOperation; import com.iailab.framework.common.page.PageData; import com.iailab.common.utils.Constant; import com.iailab.common.utils.DateUtils; import com.iailab.framework.common.pojo.CommonResult; import com.iailab.framework.common.util.validation.ValidationUtils; import com.iailab.framework.common.validation.group.AddGroup; import com.iailab.framework.common.validation.group.DefaultGroup; import com.iailab.framework.common.validation.group.UpdateGroup; import com.iailab.module.oss.dto.OssFileDTO; import com.iailab.module.oss.service.OssFileService; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Value; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.text.MessageFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; /** * @author PanZhibao * @Description * @createTime 2023年12月26日 11:14:00 */ @RestController @RequestMapping("/oss/file") @Tag(name = "应用程序表") public class OssFileController { @Resource private OssFileService ossAppService; @Value("${iems.upload}") private String upload; @GetMapping("page") @Operation(summary = "分页") @Parameters({ @Parameter(name = Constant.PAGE, description = "当前页码,从1开始", required = true), @Parameter(name = Constant.LIMIT, description = "每页显示记录数", required = true), @Parameter(name = Constant.ORDER_FIELD, description = "排序字段"), @Parameter(name = Constant.ORDER, description = "排序方式,可选值(asc、desc)") }) @PreAuthorize("@ss.hasPermission('oss:file:page')") public CommonResult> page(@RequestParam Map params) { PageData page = ossAppService.page(params); return new CommonResult>().setData(page); } @GetMapping("{id}") @Operation(summary = "信息") @PreAuthorize("@ss.hasPermission('oss:file:info')") public CommonResult get(@PathVariable("id") String id) { OssFileDTO data = ossAppService.get(id); return new CommonResult().setData(data); } @PostMapping @Operation(summary = "保存") @LogOperation("保存") @PreAuthorize("@ss.hasPermission('oss:file:save')") public CommonResult save(@RequestBody OssFileDTO dto) { //效验数据 ValidationUtils.validate(dto, AddGroup.class, DefaultGroup.class); ossAppService.save(dto); return new CommonResult(); } @PutMapping @Operation(summary = "修改") @LogOperation("修改") @PreAuthorize("@ss.hasPermission('oss:file:update')") public CommonResult update(@RequestBody OssFileDTO dto) { //效验数据 ValidationUtils.validate(dto, UpdateGroup.class, DefaultGroup.class); ossAppService.update(dto); return new CommonResult(); } @DeleteMapping("{id}") @Operation(summary = "删除") @LogOperation("删除") @PreAuthorize("@ss.hasPermission('oss:file:delete')") public CommonResult delete(@PathVariable("id") Long[] ids) { ossAppService.delete(ids); return new CommonResult(); } /** * 上传文件 * * @param file * @return */ @PostMapping("/upload") public CommonResult> upload(@RequestParam("file") MultipartFile file) throws Exception { String postfix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1); String path = MessageFormat.format("{0}/{1}/{2}", upload, DateUtils.format(new Date()), postfix); File dir = new File(path); dir.mkdirs(); String filePath = MessageFormat.format("{0}/{1}.{2}", path, file.getOriginalFilename(), postfix); file.transferTo(new File(filePath)); Map data = new HashMap<>(2); data.put("url", filePath.replace(upload, "")); data.put("name", file.getOriginalFilename()); return new CommonResult>().setData(data); } }