package com.gk.hotwork.Controller; import com.gk.hotwork.Controller.Base.BaseController; import com.gk.hotwork.Domain.AttachmentInfo; import com.gk.hotwork.Domain.Utils.Msg; import com.gk.hotwork.Service.AttachmentService; import com.gk.hotwork.common.FileProjectConstants; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @email 1603559716@qq.com * @author: zf * @date: 2023/5/6 * @time: 14:22 */ @Api(tags = "附件上传接口") @RestController @RequestMapping("/attachment") public class AttachmentController extends BaseController { @Autowired private AttachmentService attachmentService; /** * 根据标识查询文件具体信息 * @param key * @return */ @ApiOperation(value = "根据标识查询文件具体信息",response = Msg.class) @ApiImplicitParams({ @ApiImplicitParam(name = "key",value = "文件标识") }) @GetMapping("/get/key/{key}") public Msg findByKey(@PathVariable String key) { Msg msg = new Msg(); msg.setCode("200"); msg.setMessage("查询成功"); AttachmentInfo byKey = attachmentService.findByKey(key); msg.setResult(byKey); return msg; } /** * 根据id获取文件 * @param id * @return */ @ApiOperation(value = "根据id获取文件",response = Msg.class) @ApiImplicitParams({ @ApiImplicitParam(name = "id",value = "文件id") }) @GetMapping("/get/id/{id}") public Msg get(@PathVariable Long id) { Msg msg = new Msg(); msg.setCode("200"); msg.setMessage("查询成功"); AttachmentInfo byKey = attachmentService.findById(id); msg.setResult(byKey); return msg; } /** * 删除文件数据 * @param id * @return */ @ApiOperation(value = "删除文件数据",response = Msg.class) @ApiImplicitParams({ @ApiImplicitParam(name = "id",value = "文件id") }) @GetMapping("/delete/{id}") public Msg delete(@PathVariable Long id) { Msg msg = new Msg(); msg.setCode("200"); msg.setMessage("删除成功"); attachmentService.delete(id,getUser()); return msg; } /** * 单个文件上传 * @Description 上传文件(返回文件标识) * @Param [file, module] **/ @ApiOperation(value = "上传文件(返回文件标识)-单个文件",response = Msg.class) @ApiImplicitParams({ @ApiImplicitParam(name = "file",value = "文件"), @ApiImplicitParam(name = "module",value = "checkPath") }) @PostMapping("/upload/key") public Msg uploadReturnKey(@RequestParam("file") MultipartFile file, @RequestParam("module") String module) { Msg msg = new Msg(); msg.setCode("200"); msg.setMessage("上传成功"); Object returnStr = attachmentService.saveFileToPath(file, module, FileProjectConstants.ReturnType.KEY,getUser()); msg.setResult(returnStr); return msg; } /** * 单个文件 * @Description 上传文件(返回文件信息) * @Param [file, module] **/ @ApiOperation(value = "上传文件(返回文件信息)-单个文件",response = Msg.class) @ApiImplicitParams({ @ApiImplicitParam(name = "file",value = "文件"), @ApiImplicitParam(name = "module",value = "模块(checkPath)") }) @PostMapping("/upload/detail") public Msg uploadReturnDetail(@RequestParam("file") MultipartFile file, @RequestParam("module") String module) { Msg msg = new Msg(); msg.setCode("200"); msg.setMessage("上传成功"); Object detail = attachmentService.saveFileToPath(file, module, FileProjectConstants.ReturnType.DETAIL,getUser()); msg.setResult(detail); return msg; } /** * 单个文件 * @Description 上传文件(返回访问路径) * @Date 2021/4/20 19:28 * @Param [file, module] **/ @ApiOperation(value = "上传文件(返回访问路径)-单个文件",response = Msg.class) @ApiImplicitParams({ @ApiImplicitParam(name = "file",value = "文件"), @ApiImplicitParam(name = "module",value = "模块(checkPath)") }) @PostMapping("/upload/url") public Msg uploadReturnUrl(@RequestParam("file") MultipartFile file, @RequestParam("module") String module) { Msg msg = new Msg(); msg.setCode("200"); msg.setMessage("上传成功"); Object returnStr = attachmentService.saveFileToPath(file, module, FileProjectConstants.ReturnType.URL,getUser()); msg.setResult(returnStr); return msg; } /** * 批量文件 * @Description 上传文件(返回文件信息) * @Param [file, module] **/ @ApiOperation(value = "上传文件(返回访问路径)-批量",response = Msg.class) @ApiImplicitParams({ @ApiImplicitParam(name = "file",value = "文件"), @ApiImplicitParam(name = "module",value = "模块(checkPath)") }) @PostMapping("/upload/batch/detail") public Msg uploadBatchReturnDetail(@RequestParam("file") MultipartFile[] file, @RequestParam("module") String module) { Msg msg = new Msg(); msg.setCode("200"); msg.setMessage("上传成功"); Object detail = attachmentService.saveBatchFileToPath(file, module,getUser()); msg.setResult(detail); return msg; } /** * @return org.springframework.http.ResponseEntity * @Description 获取下载文件流 * @Param [key] **/ @ApiOperation(value = "获取下载文件流",response = Msg.class) @ApiImplicitParams({ @ApiImplicitParam(name = "key",value = "文件标识"), }) @GetMapping("/downloadFile/{key}") public void download(@PathVariable String key, HttpServletResponse response) { attachmentService.downloadForStream(response, key); } /** * @return void * @Description 文件下载 * @Param [key, response, request] **/ @ApiOperation(value = "文件下载",response = Msg.class) @ApiImplicitParams({ @ApiImplicitParam(name = "id",value = "文件id"), }) @RequestMapping(value = "/downloadFileById/{id}", method = {RequestMethod.POST, RequestMethod.GET}) public void downloadFileByKey(@PathVariable Long id, HttpServletResponse response, HttpServletRequest request) { attachmentService.downloadById(response, request, id); } /** * @Description 获取下载文件路径 * @Param [key] **/ @ApiOperation(value = "获取下载文件路径",response = Msg.class) @ApiImplicitParams({ @ApiImplicitParam(name = "key",value = "文件key"), }) @GetMapping("/downloadUrl/{key}") public Msg downLoad( @PathVariable String key) { Msg msg = new Msg(); msg.setCode("200"); msg.setMessage("查询成功"); AttachmentInfo byKey = attachmentService.findByKey(key); msg.setResult(byKey); return msg; } }