UploaderController.java 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package com.zhiqiyun.open.mvc.controller;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.baomidou.mybatisplus.core.metadata.OrderItem;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.zhiqiyun.open.annotation.Permission;
  6. import com.zhiqiyun.open.core.models.UploadResult;
  7. import com.zhiqiyun.open.core.models.statistics.UploadFileInfo;
  8. import com.zhiqiyun.open.core.service.SequenceService;
  9. import com.zhiqiyun.open.core.service.UploadFileInfoService;
  10. import com.zhiqiyun.open.exception.UploadException;
  11. import com.zhiqiyun.open.mvc.Result;
  12. import com.zhiqiyun.open.mvc.params.UploaderBase64Param;
  13. import com.zhiqiyun.open.mvc.params.statistics.QueryUploadFileInfoParams;
  14. import com.zhiqiyun.open.utils.DateUtil;
  15. import lombok.extern.slf4j.Slf4j;
  16. import net.coobird.thumbnailator.Thumbnails;
  17. import net.sf.jmimemagic.Magic;
  18. import net.sf.jmimemagic.MagicMatch;
  19. import org.apache.commons.codec.binary.Base64;
  20. import org.apache.commons.codec.digest.DigestUtils;
  21. import org.apache.commons.lang3.StringUtils;
  22. import org.springframework.beans.BeanUtils;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.beans.factory.annotation.Value;
  25. import org.springframework.web.bind.annotation.PostMapping;
  26. import org.springframework.web.bind.annotation.RequestBody;
  27. import org.springframework.web.bind.annotation.RequestMapping;
  28. import org.springframework.web.bind.annotation.RestController;
  29. import javax.imageio.ImageIO;
  30. import java.awt.image.BufferedImage;
  31. import java.io.ByteArrayInputStream;
  32. import java.io.File;
  33. import java.io.IOException;
  34. import java.util.Arrays;
  35. import java.util.List;
  36. @Slf4j
  37. @RestController
  38. @RequestMapping("/uploader")
  39. public class UploaderController {
  40. @Autowired
  41. private UploadFileInfoService uploadFileInfoService;
  42. @Permission(value = "upload.file.find", tags = "查询多媒体信息")
  43. @PostMapping("/findPage")
  44. public Result findPage(@RequestBody QueryUploadFileInfoParams params) {
  45. QueryWrapper<UploadFileInfo> wrapper = new QueryWrapper<>();
  46. if (StringUtils.isNotBlank(params.getOriginalFileName())) {
  47. wrapper.like("original_file_name", params.getOriginalFileName());
  48. }
  49. if (params.getCreatedTime() != null) {
  50. wrapper.between("created_time", params.getCreatedTime().getStatDate(), params.getCreatedTime().getEndDate());
  51. }
  52. if (params.getType() != null) {
  53. if (params.getType().compareTo(2) == 0) {
  54. wrapper.apply("(extension = 'mp4' or extension = 'mp3' or extension = 'mov')");
  55. } else {
  56. wrapper.apply("(extension = 'jpg' or extension = 'png' or extension = 'jpeg')");
  57. }
  58. }
  59. Page<UploadFileInfo> page = params.getPage();
  60. page.addOrder(OrderItem.desc("id"));
  61. Page<UploadFileInfo> resultData = this.uploadFileInfoService.page(page, wrapper);
  62. return Result.instance(Result.Code.SUCCESS).setData(resultData);
  63. }
  64. @Permission(value = "upload.file.delete", tags = "删除多媒体信息")
  65. @PostMapping("/deleteByIds")
  66. public Result deleteByIds(@RequestBody List<Long> ids) {
  67. this.uploadFileInfoService.removeByIds(ids);
  68. return Result.instance(Result.Code.MESSAGE_SUCCESS);
  69. }
  70. @Permission(tags = "上传图片", writeLog = false)
  71. @PostMapping(value = "/handle/base64File")
  72. public Object handleBase64File(@RequestBody UploaderBase64Param param) throws IOException {
  73. if (StringUtils.isBlank(param.getBase64File())) {
  74. log.warn("没有添加上传文件");
  75. return Result.instance("没有添加上传文件");
  76. }
  77. byte[] fileBuff = Base64.decodeBase64(param.getBase64File());
  78. String originalFilename = param.getFilename();
  79. if (StringUtils.isBlank(originalFilename)) {
  80. originalFilename = String.format("%s.%s", DigestUtils.md5Hex(fileBuff), "png");
  81. }
  82. UploadResult uploadResult = this.uploadFileInfoService.handle(originalFilename, fileBuff);
  83. if (uploadResult.isSuccess()) {
  84. return Result.instance(Result.Code.SUCCESS).setData(uploadResult);
  85. } else {
  86. return Result.instance(Result.Code.MESSAGE_ERROR, uploadResult.getMessage());
  87. }
  88. }
  89. }