SysOssController.java 3.2 KB

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