zsw-farm
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

98 lines
3.8 KiB

/**
* Copyright (C) 2018-2022
* All rights reserved, Designed By www.yixiang.co
*/
package co.yixiang.tools.rest;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.common.exception.YshopException;
import co.yixiang.constant.ShopConstants;
import co.yixiang.constant.SystemConfigConstants;
import co.yixiang.enums.ShopCommonEnum;
import co.yixiang.modules.mp.config.BxgConstans;
import co.yixiang.modules.shop.service.YxSystemConfigService;
import co.yixiang.tools.domain.QiniuContent;
import co.yixiang.tools.service.LocalStorageService;
import co.yixiang.tools.service.QiNiuService;
import co.yixiang.tools.service.dto.LocalStorageDto;
import co.yixiang.utils.RedisUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.util.HashMap;
import java.util.Map;
/**
* @author hupeng
* @date 2020-01-09
*/
@Api(tags = "上传统一管理")
@RestController
@RequestMapping("/api/upload")
@Slf4j
@SuppressWarnings("unchecked")
public class UploadController {
private final LocalStorageService localStorageService;
private final QiNiuService qiNiuService;
private final YxSystemConfigService systemConfigService;
public UploadController(LocalStorageService localStorageService, QiNiuService qiNiuService,
YxSystemConfigService systemConfigService) {
this.localStorageService = localStorageService;
this.qiNiuService = qiNiuService;
this.systemConfigService = systemConfigService;
}
@ApiOperation("上传文件")
@PostMapping
public ResponseEntity<Object> create(@RequestParam(defaultValue = "") String name,
@RequestParam(defaultValue = "") String type,
@RequestParam("file") MultipartFile[] files) {
String localUrl = BxgConstans.ADMIN_API_URL;
String mode = systemConfigService.getData(SystemConfigConstants.FILE_STORE_MODE);
StringBuilder url = new StringBuilder();
if (ShopCommonEnum.STORE_MODE_1.getValue().toString().equals(mode)) { //存在走本地
if(StrUtil.isBlank(localUrl)){
throw new YshopException("本地上传,请先登陆系统配置后台/移动端API地址");
}
for (MultipartFile file : files) {
LocalStorageDto localStorageDTO = localStorageService.create(name, file);
if ("".equals(url.toString())) {
url = url.append(localUrl + "/file/" + localStorageDTO.getType() + "/" + localStorageDTO.getRealName());
} else {
url = url.append(","+localUrl + "/file/" + localStorageDTO.getType() + "/" + localStorageDTO.getRealName());
}
}
} else {//走七牛云
for (MultipartFile file : files) {
QiniuContent qiniuContent = qiNiuService.upload(file, qiNiuService.find());
if ("".equals(url.toString())) {
url = url.append(qiniuContent.getUrl());
System.out.println("".equals(url.toString()));
}else{
url = url.append(","+qiniuContent.getUrl());
}
}
}
Map<String, Object> map = new HashMap<>(2);
map.put("errno", 0);
map.put("link", url);
System.out.println();
return new ResponseEntity(map, HttpStatus.CREATED);
}
}