SysOssController.java 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. package com.sqx.modules.oss.controller;
  2. import cn.hutool.core.util.StrUtil;
  3. import com.google.gson.Gson;
  4. import com.sqx.common.exception.SqxException;
  5. import com.sqx.common.utils.ConfigConstant;
  6. import com.sqx.common.utils.Constant;
  7. import com.sqx.common.utils.PageUtils;
  8. import com.sqx.common.utils.Result;
  9. import com.sqx.common.validator.ValidatorUtils;
  10. import com.sqx.common.validator.group.AliyunGroup;
  11. import com.sqx.common.validator.group.QcloudGroup;
  12. import com.sqx.common.validator.group.QiniuGroup;
  13. import com.sqx.modules.oss.cloud.CloudStorageConfig;
  14. import com.sqx.modules.oss.cloud.OSSFactory;
  15. import com.sqx.modules.oss.entity.SysOssEntity;
  16. import com.sqx.modules.oss.service.SysOssService;
  17. import com.sqx.modules.sys.service.SysConfigService;
  18. import icu.xuyijie.secureapi.annotation.DecryptParam;
  19. import org.apache.shiro.authz.annotation.RequiresPermissions;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.web.bind.annotation.GetMapping;
  22. import org.springframework.web.bind.annotation.PostMapping;
  23. import org.springframework.web.bind.annotation.RequestBody;
  24. import org.springframework.web.bind.annotation.RequestMapping;
  25. import org.springframework.web.bind.annotation.RestController;
  26. import org.springframework.web.multipart.MultipartFile;
  27. import java.util.Arrays;
  28. import java.util.Date;
  29. import java.util.HashMap;
  30. import java.util.Map;
  31. /**
  32. * 文件上传
  33. *
  34. */
  35. @RestController
  36. @RequestMapping("sys/oss")
  37. public class SysOssController {
  38. @Autowired
  39. private SysOssService sysOssService;
  40. @Autowired
  41. private SysConfigService sysConfigService;
  42. private final static String KEY = ConfigConstant.CLOUD_STORAGE_CONFIG_KEY;
  43. /**
  44. * 列表
  45. */
  46. @GetMapping("/list")
  47. @RequiresPermissions("sys:oss:all")
  48. public Result list(String page, String limit){
  49. Map<String, Object> params = new HashMap<>();
  50. if (StrUtil.isNotBlank(page)) {
  51. params.put(Constant.PAGE, page);
  52. }
  53. if (StrUtil.isNotBlank(limit)) {
  54. params.put(Constant.LIMIT, limit);
  55. }
  56. PageUtils pageResult = sysOssService.queryPage(params);
  57. return Result.success().put("page", pageResult);
  58. }
  59. /**
  60. * 云存储配置信息
  61. */
  62. @GetMapping("/config")
  63. @RequiresPermissions("sys:oss:all")
  64. public Result config(){
  65. CloudStorageConfig config = sysConfigService.getConfigObject(KEY, CloudStorageConfig.class);
  66. return Result.success().put("config", config);
  67. }
  68. /**
  69. * 保存云存储配置信息
  70. */
  71. @PostMapping("/saveConfig")
  72. @RequiresPermissions("sys:oss:all")
  73. public Result saveConfig(@RequestBody CloudStorageConfig config){
  74. //校验类型
  75. ValidatorUtils.validateEntity(config);
  76. if(config.getType() == Constant.CloudService.QINIU.getValue()){
  77. //校验七牛数据
  78. ValidatorUtils.validateEntity(config, QiniuGroup.class);
  79. }else if(config.getType() == Constant.CloudService.ALIYUN.getValue()){
  80. //校验阿里云数据
  81. ValidatorUtils.validateEntity(config, AliyunGroup.class);
  82. }else if(config.getType() == Constant.CloudService.QCLOUD.getValue()){
  83. //校验腾讯云数据
  84. ValidatorUtils.validateEntity(config, QcloudGroup.class);
  85. }
  86. sysConfigService.updateValueByKey(KEY, new Gson().toJson(config));
  87. return Result.success();
  88. }
  89. /**
  90. * 上传文件
  91. */
  92. @PostMapping("/upload")
  93. @RequiresPermissions("sys:oss:all")
  94. public Result upload(@DecryptParam("file") MultipartFile file) throws Exception {
  95. if (file.isEmpty()) {
  96. throw new SqxException("上传文件不能为空");
  97. }
  98. //上传文件
  99. String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
  100. String url = OSSFactory.build().uploadSuffix(file.getBytes(), suffix);
  101. //保存文件信息
  102. SysOssEntity ossEntity = new SysOssEntity();
  103. ossEntity.setUrl(url);
  104. ossEntity.setCreateDate(new Date());
  105. sysOssService.save(ossEntity);
  106. return Result.success().put("url", url);
  107. }
  108. /**
  109. * 删除
  110. */
  111. @PostMapping("/delete")
  112. @RequiresPermissions("sys:oss:all")
  113. public Result delete(@RequestBody Long[] ids){
  114. sysOssService.removeByIds(Arrays.asList(ids));
  115. return Result.success();
  116. }
  117. }