Ver Fonte

Merge branch 'dev-yhq'

tsurumure há 1 mês atrás
pai
commit
e57ef21068

+ 1 - 1
src/main/java/com/backendsys/modules/sdk/tencentcloud/cos/service/TencentCosService.java

@@ -37,7 +37,7 @@ public interface TencentCosService {
     // [腾讯云COS] 上传分块
     UploadPartResult uploadPart(MultipartFile multipartFile, String upload_id, String object_key, Integer partNumber);
     // [腾讯云COS] 完成分块上传
-    CompleteMultipartUploadResult completeMultipartUpload(String upload_id, String object_key, List<PartETag> partETags);
+    CompleteMultipartUploadResult completeMultipartUpload(String upload_id, String object_key, List<PartETag> partETags, Integer is_watermark);
 
     // [腾讯云COS] 查询已上传的分块
     PartListing listParts(String upload_id, String object_key);

+ 17 - 3
src/main/java/com/backendsys/modules/sdk/tencentcloud/cos/service/impl/TencentCosServiceImpl.java

@@ -1,6 +1,7 @@
 package com.backendsys.modules.sdk.tencentcloud.cos.service.impl;
 
 import cn.hutool.core.convert.Convert;
+import cn.hutool.core.io.file.FileNameUtil;
 import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.StrUtil;
 import com.backendsys.exception.CustException;
@@ -190,7 +191,7 @@ public class TencentCosServiceImpl implements TencentCosService {
             List<String> imageType = Arrays.asList("jpg", "jpeg", "png", "bmp", "webp", "tiff", "gif");
             boolean isImage = imageType.contains(CommonUtil.getFilenameSuffix(multipartFile, false).toLowerCase());
             if (isImage) {
-                // 打水印
+                // 打水印 (如果是图片)
                 if (is_watermark != null && is_watermark == 1) {
                     addWatermask(object_key);
                 }
@@ -406,7 +407,7 @@ public class TencentCosServiceImpl implements TencentCosService {
 
     // [腾讯云COS] 完成分块上传
     @Override
-    public CompleteMultipartUploadResult completeMultipartUpload(String upload_id, String object_key, List<PartETag> partETags) {
+    public CompleteMultipartUploadResult completeMultipartUpload(String upload_id, String object_key, List<PartETag> partETags, Integer is_watermark) {
 
         if (StrUtil.isEmpty(upload_id)) throw new CustException("upload_id 不能为空");
         if (StrUtil.isEmpty(object_key)) throw new CustException("object_key 不能为空");
@@ -416,7 +417,20 @@ public class TencentCosServiceImpl implements TencentCosService {
 
             // 分片上传结束后,调用 complete 完成分片上传
             CompleteMultipartUploadRequest completeMultipartUploadRequest = new CompleteMultipartUploadRequest(BUCKET_NAME, object_key, upload_id, partETags);
-            return cosClient.completeMultipartUpload(completeMultipartUploadRequest);
+            CompleteMultipartUploadResult result = cosClient.completeMultipartUpload(completeMultipartUploadRequest);
+
+            // 判断是图片类型 (这里只能判断后缀名)
+            String suffix = FileNameUtil.getSuffix(object_key);
+            List<String> imageType = Arrays.asList("jpg", "jpeg", "png", "bmp", "webp", "tiff", "gif");
+            boolean isImage = imageType.contains(suffix.toLowerCase());
+            if (isImage) {
+                // 打水印 (如果是图片)
+                if (is_watermark != null && is_watermark == 1) {
+                    addWatermask(object_key);
+                }
+            }
+
+            return result;
 
         } catch (CosClientException e) {
             throw new CustException(e.getMessage());

+ 1 - 7
src/main/java/com/backendsys/modules/upload/service/impl/SysFileMultipartServiceImpl.java

@@ -347,14 +347,8 @@ public class SysFileMultipartServiceImpl implements SysFileMultipartService {
                 if (sysFileEntity.getUpload_chunk_count() != etags.size()) throw new CustException("分块索引异常,请重新上传");
 
                 // [腾讯云] 合并分块
-                CompleteMultipartUploadResult completeResult = tencentCosService.completeMultipartUpload(upload_id, sysFileEntity.getObject_key(), etags);
+                CompleteMultipartUploadResult completeResult = tencentCosService.completeMultipartUpload(upload_id, sysFileEntity.getObject_key(), etags, is_watermark);
                 if (completeResult == null) throw new CustException("分块合并失败");
-                
-                if (is_watermark != null && is_watermark == 1) {
-                    // [腾讯云] 添加水印
-                    String object_key = completeResult.getKey();
-                    tencentCosService.addWatermask(object_key);
-                }
 
                 // 拼接图片路径
                 sysFileEntity.setUrl(TENCENT_ACCESSIBLE_DOMAIN + "/" + completeResult.getKey());