package com.zc.business.controller; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.config.RuoYiConfig; 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.file.FileSizeLimitExceededException; import com.ruoyi.common.utils.file.FileUploadUtils; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.config.ServerConfig; import com.zc.business.domain.DcFileDownload; import com.zc.business.enums.UniversalEnum; import com.zc.business.service.IDcFileDownloadService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.List; /** * 文件管理Controller * * @author ruoyi * @date 2024-06-12 */ @RestController @RequestMapping("/business/download") public class DcFileDownloadController extends BaseController { @Autowired private IDcFileDownloadService dcFileDownloadService; @Autowired private ServerConfig serverConfig; /** * 默认大小 30M */ public static final long DEFAULT_MAX_SIZE = 30 * 1024 * 1024; /** * 查询文件管理列表 */ //@PreAuthorize("@ss.hasPermi('business:download:list')") @GetMapping("/list") public TableDataInfo list(DcFileDownload dcFileDownload) { startPage(); List list = dcFileDownloadService.selectDcFileDownloadList(dcFileDownload); return getDataTable(list); } /** * 导出文件管理列表 */ //@PreAuthorize("@ss.hasPermi('business:download:export')") @Log(title = "文件管理", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, DcFileDownload dcFileDownload) { List list = dcFileDownloadService.selectDcFileDownloadList(dcFileDownload); ExcelUtil util = new ExcelUtil<>(DcFileDownload.class); util.exportExcel(response, list, UniversalEnum.FILE_MANAGEMENT_DATA.getValue()); } /** * 获取文件管理详细信息 */ // @PreAuthorize("@ss.hasPermi('business:download:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { return AjaxResult.success(dcFileDownloadService.selectDcFileDownloadById(id)); } /** * 新增文件管理 */ //@PreAuthorize("@ss.hasPermi('business:download:add')") @Log(title = "文件管理", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody DcFileDownload dcFileDownload) { return toAjax(dcFileDownloadService.insertDcFileDownload(dcFileDownload)); } /** * 修改文件管理 */ //@PreAuthorize("@ss.hasPermi('business:download:edit')") @Log(title = "文件管理", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody DcFileDownload dcFileDownload) { return toAjax(dcFileDownloadService.updateDcFileDownload(dcFileDownload)); } /** * 删除文件管理 */ //@PreAuthorize("@ss.hasPermi('business:download:remove')") @Log(title = "文件管理", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(dcFileDownloadService.deleteDcFileDownloadByIds(ids)); } /** * 文件管理-文件上传请求 */ @PostMapping("/uploadFileManagement") public AjaxResult uploadFileManagement(MultipartFile file) throws Exception { try { // 上传文件路径 String filePath = RuoYiConfig.getFileManagementPath(); // 上传并返回新文件名称 String fileName = FileUploadUtils.upload(filePath, file); //文件后缀 String extension = FileUploadUtils.getExtension(file); //文件大小,单位为B long size = file.getSize(); //文件大小验证 if (size > DEFAULT_MAX_SIZE) { throw new FileSizeLimitExceededException(DEFAULT_MAX_SIZE / 1024 / 1024); } String url = serverConfig.getUrl() + fileName; AjaxResult ajax = AjaxResult.success(); ajax.put("url", url); ajax.put("fileName", fileName); ajax.put("newFileName", FileUtils.getName(fileName)); ajax.put("originalFilename", file.getOriginalFilename()); ajax.put("extension", extension); ajax.put("size", size); return ajax; } catch (Exception e) { return AjaxResult.error(e.getMessage()); } } //下载请求接口-下载数量+1 @GetMapping("/downloadIncrease/{id}") public AjaxResult downloadIncrease(@PathVariable Long id) { return toAjax(dcFileDownloadService.downloadIncrease(id)); } }