From ac2873bd37eeb496b0e9dd62d66e9fc4b38ef39b Mon Sep 17 00:00:00 2001 From: qirong <2032486488@qq.com> Date: 星期五, 22 十二月 2023 13:38:26 +0800 Subject: [PATCH] ftp摆渡 --- ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SynchronizationController.java | 151 +++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 135 insertions(+), 16 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SynchronizationController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SynchronizationController.java index ae02446..99cdb16 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SynchronizationController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SynchronizationController.java @@ -2,20 +2,47 @@ import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaIgnore; +import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; import jakarta.validation.constraints.NotEmpty; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.domain.R; +import org.dromara.common.core.utils.DateUtils; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.oss.core.OssClient; import org.dromara.common.oss.entity.SynchronousRequest; -import org.dromara.common.redis.utils.QueueUtils; +import org.dromara.common.oss.entity.SynchronousRequest2; +import org.dromara.common.oss.entity.UploadResult; +import org.dromara.common.oss.entity.VideoRequest; +import org.dromara.common.oss.factory.OssFactory; +import org.dromara.system.domain.SysOss; +import org.dromara.system.domain.properties.Boundary; +import org.dromara.system.domain.properties.FtpConfig; +import org.dromara.system.domain.vo.SysOssUploadVo; import org.dromara.system.domain.vo.SysOssVo; +import org.dromara.system.mapper.SysOssMapper; import org.dromara.system.service.ISysOssService; +import org.dromara.system.uitil.FtpApche; +import org.dromara.system.uitil.HttpUtils; +import org.dromara.system.uitil.PasswordUtil; +import org.jetbrains.annotations.NotNull; +import org.springframework.http.MediaType; + import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.io.InputStream; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.HashMap; import java.util.List; import java.util.concurrent.TimeUnit; @@ -27,39 +54,118 @@ @RequestMapping("/resource/synchronization") public class SynchronizationController { + private final FtpConfig ftpConfig; private final ISysOssService ossService; + private final SysOssMapper baseMapper; + /** - * 涓婁紶鍚屾 + * 涓婁紶鍚屾 瑙嗛涓撶綉 + * * @param * @return */ @PostMapping(value = "/upload") - public R synchronization(SynchronousRequest request) { + public R synchronization(SynchronousRequest request) throws IOException, ParseException { if (ObjectUtil.isNull(request.getFile())) { return R.fail("涓婁紶鏂囦欢涓嶈兘涓虹┖"); } - log.info("ossId:{},path:{}",request.getOssId(),request.getPath()); - SysOssVo oss = ossService.upload2(request); - - //娣诲姞闃熷垪鏁版嵁 - QueueUtils.addDelayedQueueObject("OSS", oss.getOssId().toString(), 1, TimeUnit.HOURS); - log.info("閫氶亾: {} , 鍙戦�佹暟鎹�: {}", "OSS", oss.getOssId()); + ossService.upload2(request); return R.ok(); + } + + @PostMapping(value = "/uploadTwo") + public R uploadTwo(VideoRequest request1) throws IOException { + if (ObjectUtil.isNull(request1.getFile())) { + return R.fail("涓婁紶鏂囦欢涓嶈兘涓虹┖"); + } + SysOssVo oss = ossService.upload3(request1); + //娣诲姞闃熷垪鏁版嵁 +// QueueUtils.addDelayedQueueObject("OSS", oss.getOssId().toString(), 1, TimeUnit.DAYS); + log.info("閫氶亾: {} , 鍙戦�佹暟鎹�: {}", "OSS", oss.getOssId()); + SysOssUploadVo uploadVo = new SysOssUploadVo(); + uploadVo.setUrl(oss.getUrl()); + uploadVo.setFileName(oss.getOriginalName()); + uploadVo.setOssId(oss.getOssId().toString()); + uploadVo.setPassword(oss.getPassword()); + return R.ok(uploadVo); } /** * 鍒犻櫎鍚屾 * - * @param ossIds OSS瀵硅薄ID涓� + * @param ossId OSS瀵硅薄ID涓� */ - @SaCheckPermission("system:oss:remove") - @Log(title = "OSS瀵硅薄瀛樺偍", businessType = BusinessType.DELETE) - @DeleteMapping("/{ossIds}") - public R<Void> remove(@NotEmpty(message = "涓婚敭涓嶈兘涓虹┖") - @PathVariable String ossIds) throws Exception { - return ossService.deleteWithValidByIds(List.of(convert(ossIds)), true,"000000") ? R.ok() : R.fail("鎻愬彇鐮侀敊璇紒"); + @PostMapping(value = "/delete") + public R<Void> remove(String ossId) throws Exception { + return ossService.deleteWithValidByIds(List.of(convert(ossId)), true, "000000") ? R.ok() : R.fail("鎻愬彇鐮侀敊璇紒"); } + + /** + * 涓婁紶鍚屾 鍏畨鍐呯綉 + * + * @param request + */ + @PostMapping(value = "/uploadByFileName") + public R<Void> uploadByFileName(VideoRequest request) throws Exception { + if (ObjectUtil.isNull(request.getFile())) { + return R.fail("涓婁紶鏂囦欢涓嶈兘涓虹┖"); + } + SysOssVo oss = ossService.upload3(request); + + InputStream input = request.getFile().getInputStream(); + String fileName = request.getFileName(); + OssClient storage = OssFactory.instance(); + UploadResult uploadResult = storage.upload(input,getPath(fileName), + fileName.substring(14,fileName.length())); + buildResultEntity1(fileName, fileName.substring(14,fileName.length()), "minio", uploadResult); + return R.ok(); + } + + public String getPath(String suffix) { + return DateUtils.datePath() + "/" + suffix; + } + + @NotNull + private void buildResultEntity1(String originalfileName, String suffix, String configKey, UploadResult uploadResult) { + SysOss oss = new SysOss(); + oss.setUrl(uploadResult.getUrl()); + oss.setFileSuffix(suffix); + oss.setFileName(uploadResult.getFilename()); + oss.setOriginalName(originalfileName); + oss.setService(configKey); + oss.setPassword(PasswordUtil.randomPassword(6)); + baseMapper.insert(oss); + } + + @NotNull + private void buildResultEntity(String originalfileName, String suffix, String configKey, UploadResult uploadResult + ,MultipartFile file) { + SysOss oss = new SysOss(); + oss.setUrl(uploadResult.getUrl()); + oss.setFileSuffix(suffix); + oss.setFileName(uploadResult.getFilename()); + oss.setOriginalName(originalfileName); + oss.setService(configKey); + oss.setPassword(PasswordUtil.randomPassword(6)); + baseMapper.insert(oss); + + //鎷兼帴鍚屾淇℃伅 + + +// SynchronousRequest request = new SynchronousRequest(); +// SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); +// request.setFile(file); +// request.setFileName(oss.getOriginalName()+"1"); +// request.setPath(uploadResult.getFilename()); +// request.setCreateTime(format.format(oss.getCreateTime())); +// request.setPassword(oss.getPassword()); +// request.setCreateBy("1731588854831022081"); +// request.setOssId(String.valueOf(oss.getOssId())); +// request.setOssId("123890"); +// post(request); + } + public static Long[] convert(String input) { String[] stringArray = input.split(","); @@ -71,4 +177,17 @@ return longArray; } + + @NotNull + private void buildResultEntity2(String originalfileName, String suffix, String configKey, UploadResult uploadResult + , String password) throws IOException { + SysOss oss = new SysOss(); + oss.setUrl(uploadResult.getUrl()); + oss.setFileSuffix(suffix); + oss.setFileName(uploadResult.getFilename()); + oss.setOriginalName(originalfileName); + oss.setService(configKey); + oss.setPassword(password); + baseMapper.insert(oss); + } } -- Gitblit v1.8.0