package com.sqx.modules.oss.controller; import com.google.gson.Gson; import com.sqx.common.exception.SqxException; import com.sqx.common.utils.ConfigConstant; import com.sqx.common.utils.Constant; import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.common.validator.ValidatorUtils; import com.sqx.common.validator.group.AliyunGroup; import com.sqx.common.validator.group.QcloudGroup; import com.sqx.common.validator.group.QiniuGroup; import com.sqx.modules.oss.cloud.CloudStorageConfig; import com.sqx.modules.oss.cloud.OSSFactory; import com.sqx.modules.oss.entity.SysOssEntity; import com.sqx.modules.oss.service.SysOssService; import com.sqx.modules.sys.service.SysConfigService; import icu.xuyijie.secureapi.annotation.DecryptParam; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import java.util.Arrays; import java.util.Date; import java.util.Map; /** * 文件上传 * */ @RestController @RequestMapping("sys/oss") public class SysOssController { @Autowired private SysOssService sysOssService; @Autowired private SysConfigService sysConfigService; private final static String KEY = ConfigConstant.CLOUD_STORAGE_CONFIG_KEY; /** * 列表 */ @GetMapping("/list") @RequiresPermissions("sys:oss:all") public Result list(@DecryptParam Map params){ PageUtils page = sysOssService.queryPage(params); return Result.success().put("page", page); } /** * 云存储配置信息 */ @GetMapping("/config") @RequiresPermissions("sys:oss:all") public Result config(){ CloudStorageConfig config = sysConfigService.getConfigObject(KEY, CloudStorageConfig.class); return Result.success().put("config", config); } /** * 保存云存储配置信息 */ @PostMapping("/saveConfig") @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); } sysConfigService.updateValueByKey(KEY, new Gson().toJson(config)); return Result.success(); } /** * 上传文件 */ @PostMapping("/upload") @RequiresPermissions("sys:oss:all") public Result upload(@DecryptParam("file") MultipartFile file) throws Exception { if (file.isEmpty()) { throw new SqxException("上传文件不能为空"); } //上传文件 String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")); String url = OSSFactory.build().uploadSuffix(file.getBytes(), suffix); //保存文件信息 SysOssEntity ossEntity = new SysOssEntity(); ossEntity.setUrl(url); ossEntity.setCreateDate(new Date()); sysOssService.save(ossEntity); return Result.success().put("url", url); } /** * 删除 */ @PostMapping("/delete") @RequiresPermissions("sys:oss:all") public Result delete(@RequestBody Long[] ids){ sysOssService.removeByIds(Arrays.asList(ids)); return Result.success(); } }