1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
package io.hmit.modules.oss.controller;
import com.google.gson.Gson;
import io.hmit.common.annotation.LogOperation;
import io.hmit.common.constant.Constant;
import io.hmit.common.exception.ErrorCode;
import io.hmit.common.page.PageData;
import io.hmit.common.utils.*;
import io.hmit.common.validator.ValidatorUtils;
import io.hmit.common.validator.group.AliyunGroup;
import io.hmit.common.validator.group.QcloudGroup;
import io.hmit.common.validator.group.QiniuGroup;
import io.hmit.modules.oss.cloud.CloudStorageConfig;
import io.hmit.modules.oss.cloud.OSSFactory;
import io.hmit.modules.oss.entity.SysOssEntity;
import io.hmit.modules.oss.service.SysOssService;
import io.hmit.modules.sys.service.SysParamsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.io.FilenameUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import springfox.documentation.annotations.ApiIgnore;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* 文件上传
*
* @author zsh 408538940@q.com
*/
@RestController
@RequestMapping("sys/oss")
@Api(tags = "文件上传")
public class SysOssController {
@Autowired
private SysOssService sysOssService;
@Autowired
private SysParamsService sysParamsService;
private final static String KEY = Constant.CLOUD_STORAGE_CONFIG_KEY;
@GetMapping("page")
@ApiOperation(value = "分页")
@RequiresPermissions("sys:oss:all")
public Result<PageData<SysOssEntity>> page(@ApiIgnore @RequestParam Map<String, Object> params) {
PageData<SysOssEntity> page = sysOssService.page(params);
return new Result<PageData<SysOssEntity>>().ok(page);
}
@GetMapping("info")
@ApiOperation(value = "云存储配置信息")
@RequiresPermissions("sys:oss:all")
public Result<CloudStorageConfig> info() {
CloudStorageConfig config = sysParamsService.getValueObject(KEY, CloudStorageConfig.class);
return new Result<CloudStorageConfig>().ok(config);
}
@PostMapping
@ApiOperation(value = "保存云存储配置信息")
@LogOperation("保存云存储配置信息")
@RequiresPermissions("sys:oss:all")
public Result saveConfig(@RequestBody CloudStorageConfig config) {
//校验类型
ValidatorUtils.validateEntity(config);
if (config.getType() == Constant.CloudService.QINIU.getValue()) {
//校验七牛数据
ValidatorUtils.validateEntity(config, QiniuGroup.class);
} else if (config.getType() == Constant.CloudService.ALIYUN.getValue()) {
//校验阿里云数据
ValidatorUtils.validateEntity(config, AliyunGroup.class);
} else if (config.getType() == Constant.CloudService.QCLOUD.getValue()) {
//校验腾讯云数据
ValidatorUtils.validateEntity(config, QcloudGroup.class);
}
sysParamsService.updateValueByCode(KEY, new Gson().toJson(config));
return new Result();
}
@PostMapping("upload")
@ApiOperation(value = "上传文件")
@RequiresPermissions("sys:oss:all")
public Result<Map<String, Object>> upload(@RequestParam("file") MultipartFile file) throws Exception {
if (file.isEmpty()) {
return new Result<Map<String, Object>>().error(ErrorCode.UPLOAD_FILE_EMPTY);
}
//上传文件
String extension = FilenameUtils.getExtension(file.getOriginalFilename());
String url = OSSFactory.build().uploadSuffix(file.getBytes(), extension);
//保存文件信息
SysOssEntity ossEntity = new SysOssEntity();
ossEntity.setUrl(url);
ossEntity.setCreateDate(new Date());
sysOssService.insert(ossEntity);
Map<String, Object> data = new HashMap<>(1);
data.put("src", url);
return new Result<Map<String, Object>>().ok(data);
}
@DeleteMapping
@ApiOperation(value = "删除")
@LogOperation("删除")
@RequiresPermissions("sys:oss:all")
public Result delete(@RequestBody Long[] ids) {
sysOssService.deleteBatchIds(Arrays.asList(ids));
return new Result();
}
}