/** * 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 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 map = new HashMap<>(2); map.put("errno", 0); map.put("link", url); System.out.println(); return new ResponseEntity(map, HttpStatus.CREATED); } }