package com.simuwang.manage.api.file; import com.simuwang.base.common.support.MybatisPage; import com.simuwang.base.common.util.EncodeUtil; import com.simuwang.base.pojo.dto.query.FileManagePageQuery; import com.simuwang.base.pojo.vo.FileIdVO; import com.simuwang.base.pojo.vo.FileManageIdVO; import com.simuwang.base.pojo.vo.FileManageVO; import com.simuwang.base.pojo.vo.SourceTypeVO; import com.simuwang.logging.SystemLog; import com.simuwang.manage.service.FileMangeService; import com.smppw.common.pojo.ResultVo; import com.smppw.common.pojo.enums.status.ResultCode; import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.apache.commons.io.FileUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.IOException; /** * FileName: FileManageController * Author: chenjianhua * Date: 2024/12/19 13:57 * Description: ${DESCRIPTION} */ @SystemLog(value = "基金别名管理") @RestController @RequestMapping("/v1/file-manage") public class FileManageController { private static final Logger logger = LoggerFactory.getLogger(FileManageController.class); @Autowired private FileMangeService fileMangeService; /** * 文件管理列表查询 * @param fileManagePageQuery * @return */ @SystemLog(value = "文件管理列表") @GetMapping("/list") public MybatisPage searchFileManage(FileManagePageQuery fileManagePageQuery){ MybatisPage result = fileMangeService.searchFileManage(fileManagePageQuery); return result; } /** * 上传文件 * * @param file * @return */ @SystemLog(value = "上传文件", type = SystemLog.Type.UPLOAD_OR_IMPORT) @PostMapping("upload-file") public ResultVo uploadFile(@RequestParam(value = "file") MultipartFile file, @RequestParam("fundId") String fundId, @RequestParam("fundName") String fundName, @RequestParam("registerNumber") String registerNumber, @RequestParam("fileType") Integer fileType, @RequestParam("fileDate") String fileDate) { ResultVo vo = fileMangeService.uploadFile(file,fundId,fundName,registerNumber, fileType,fileDate); return vo; } /** * 文件下载 * @param fileId * @param response * @param request */ @SystemLog(value = "下载文件", type = SystemLog.Type.UPLOAD_OR_IMPORT) @PostMapping("download-file") public void downloadFile(@RequestBody FileManageIdVO fileId, HttpServletResponse response, HttpServletRequest request){ try { FileManageVO fileManageVO = fileMangeService.getFileByFileId(fileId.getFileId()); response.setContentType("application/octet-stream"); response.addHeader("Content-Disposition", "attachment;filename=" + EncodeUtil.encodeUTF8(fileManageVO.getFileName())); ServletOutputStream outputStream = response.getOutputStream(); FileUtils.copyFile(new File(fileManageVO.getFilePath()),outputStream); outputStream.flush(); outputStream.close(); } catch (IOException e) { logger.error(e.getMessage(),e); } } /** * 批量编辑分类 * @param sourceTypeVO */ @SystemLog(value = "批量编辑分类") @PostMapping("change-source-type") public ResultVo changeFileSourceType(@RequestBody SourceTypeVO sourceTypeVO){ ResultVo vo = new ResultVo(true); try { fileMangeService.changeFileSourceType(sourceTypeVO); return vo; } catch (Exception e) { logger.error(e.getMessage(),e); vo.setData(false); vo.setCode(ResultCode.SAVE_FAILED.getCode()); } return vo; } /** *编辑分类 * @param fileManageVO * @return */ @SystemLog(value = "编辑分类") @PostMapping("save-file-manage") public ResultVo saveFileMange(@RequestBody FileManageVO fileManageVO){ ResultVo vo = new ResultVo(true); try { fileMangeService.updateFileManage(fileManageVO); return vo; } catch (Exception e) { logger.error(e.getMessage(),e); vo.setData(false); vo.setCode(ResultCode.SAVE_FAILED.getCode()); } return vo; } }