SysOssController.java 3.8 KB

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