From 238171af3716cbeeac0c262c497a6d782cbb26d8 Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Thu, 18 Sep 2025 16:48:42 +0800
Subject: [PATCH] 文件上传

---
 trading-order-service/src/main/java/com/yami/trading/service/impl/AwsS3OSSFileServiceImpl.java |   59 +++++++++++++++++++++++++++++
 trading-order-service/src/main/java/com/yami/trading/service/AwsS3OSSFileService.java          |    2 +
 trading-order-bean/src/main/java/com/yami/trading/bean/model/FileUploadParamsModel.java        |    3 +
 trading-order-admin/src/main/java/com/yami/trading/admin/controller/UploadFileController.java  |   17 ++++++--
 4 files changed, 77 insertions(+), 4 deletions(-)

diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/UploadFileController.java b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/UploadFileController.java
index e3e2bd6..f96f9d2 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/UploadFileController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/UploadFileController.java
@@ -32,13 +32,22 @@
             if (model.getFile().getSize() / 1000L > 4500) {
                throw  new YamiShopBindException("图片大小不能超过4M");
             }
+            String path;
+            FileInfoVo fileInfoVo=new FileInfoVo();
             if (StringUtils.isEmptyString(model.getModuleName())){
                 model.setModuleName("common");
+                path=  awsS3OSSFileService.uploadFile(model.getModuleName(), model.getFile());
+                fileInfoVo.setHttpUrl(Constants.IMAGES_HTTP + path);
+                fileInfoVo.setPath(path);
+            } else if(model.getModuleName().equals("icon")){
+                path=  awsS3OSSFileService.uploadIcon(model.getFileName(), model.getFile());
+                fileInfoVo.setHttpUrl(Constants.IMAGES_HTTP + path);
+                fileInfoVo.setPath(path);
+            } else {
+                path=  awsS3OSSFileService.uploadFile(model.getModuleName(), model.getFile());
+                fileInfoVo.setHttpUrl(Constants.IMAGES_HTTP + path);
+                fileInfoVo.setPath(path);
             }
-            String path=  awsS3OSSFileService.uploadFile(model.getModuleName(), model.getFile());
-            FileInfoVo fileInfoVo=new FileInfoVo();
-             fileInfoVo.setHttpUrl(Constants.IMAGES_HTTP+path);
-             fileInfoVo.setPath(path);
             return Result.ok(fileInfoVo);
         }
          catch (Exception e) {
diff --git a/trading-order-bean/src/main/java/com/yami/trading/bean/model/FileUploadParamsModel.java b/trading-order-bean/src/main/java/com/yami/trading/bean/model/FileUploadParamsModel.java
index 015f927..e31b8f5 100644
--- a/trading-order-bean/src/main/java/com/yami/trading/bean/model/FileUploadParamsModel.java
+++ b/trading-order-bean/src/main/java/com/yami/trading/bean/model/FileUploadParamsModel.java
@@ -14,4 +14,7 @@
 
     @ApiModelProperty("模块名")
     private String moduleName;
+
+    @ApiModelProperty("文件名")
+    private String fileName;
 }
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/AwsS3OSSFileService.java b/trading-order-service/src/main/java/com/yami/trading/service/AwsS3OSSFileService.java
index 39afec6..3090caf 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/AwsS3OSSFileService.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/AwsS3OSSFileService.java
@@ -10,4 +10,6 @@
     void setPolicy(String bucketName);
 
     String getUrl( String path);
+
+    String uploadIcon(String moduleName, MultipartFile file);
 }
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/impl/AwsS3OSSFileServiceImpl.java b/trading-order-service/src/main/java/com/yami/trading/service/impl/AwsS3OSSFileServiceImpl.java
index 7b17759..b0f6a9e 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/impl/AwsS3OSSFileServiceImpl.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/impl/AwsS3OSSFileServiceImpl.java
@@ -353,4 +353,63 @@
         String fileType = FilenameUtils.getExtension(fileName);
         return imgTypes.contains(fileType.toLowerCase());
     }
+
+    /**
+     * 上传图标
+     * @param moduleName
+     * @param file
+     * @return
+     */
+    @Override
+    public String uploadIcon(String moduleName, MultipartFile file) {
+        // 兼容c端组件上传原理
+        String originalFilename = file.getOriginalFilename();
+        String fileType = originalFilename != null ? originalFilename : "";
+        if (StrUtil.isEmpty(fileType) || fileType.contains("blob")) {
+            fileType = "blob.png";
+        }
+
+        // 提取文件扩展名
+        String extension = "";
+        int dotIndex = fileType.lastIndexOf('.');
+        if (dotIndex > 0) {
+            extension = fileType.substring(dotIndex);
+        }
+
+        String filename = moduleName + extension;
+        String path = filename; // 直接使用文件名作为路径
+
+        // 确保目标文件夹存在
+        File targetDir = new File(PropertiesUtil.getProperty("loca.images.dir") + "/symbol");
+        if (!targetDir.exists()) {
+            targetDir.mkdirs();
+            // 设置目录权限为755 (rwxr-xr-x)
+            setFilePermissions(targetDir, "755");
+        }
+
+        // 构建本地文件路径
+        File localFile = new File(targetDir, filename);
+
+        // 打印上传路径
+        log.info("LocalFileUploadService uploadFile localFilePath: {}", localFile.getAbsolutePath());
+
+        try {
+            // 将文件保存到本地
+            file.transferTo(localFile);
+
+            // 设置文件权限为644 (rw-r--r--)
+            setFilePermissions(localFile, "644");
+
+            // 如果需要自定义元数据,可以在此处理
+            Map<String, String> metadata = new HashMap<>();
+            metadata.put("x-amz-meta-myVal", "test");
+
+            // 返回文件名
+            return "symbol/" + path;
+
+        } catch (IOException e) {
+            log.error("LocalFileUploadService uploadFile IOException", e.getMessage(), e);
+            throw new YamiShopBindException("文件上传失败");
+        }
+    }
 }

--
Gitblit v1.9.3