Parcourir la source

上传文件-新增水印参数(腾讯云)

tsurumure il y a 1 mois
Parent
commit
1d4e8ae511

+ 8 - 1
src/main/java/com/backendsys/modules/material/service/impl/MaterialServiceImpl.java

@@ -106,9 +106,16 @@ public class MaterialServiceImpl implements MaterialService {
         MaterialCategory materialCategory = materialCategoryDao.selectById(material.getCategory_id());
         if (materialCategory == null) throw new CustException("素材分类不存在");
 
+        ObjectKeyEntity objectKeyEntity = objectKeyUtil.urlToObjectKey(material.getImage_url());
+
+        // 新需求:高清图也要返回压缩地址
+        if (StrUtil.isNotEmpty(material.getImage_url())) {
+            String image_url = UploadUtil.getImageThumbUrl(material.getImage_url(), objectKeyEntity.getTarget(), 315, null, null, true);
+            material.setImage_url(image_url);
+        }
+
         // 生成缩略图,并填充缩略图地址
         if (StrUtil.isNotEmpty(material.getImage_url())) {
-            ObjectKeyEntity objectKeyEntity = objectKeyUtil.urlToObjectKey(material.getImage_url());
             String image_thumb_url = UploadUtil.getImageThumbUrl(material.getImage_url(), objectKeyEntity.getTarget(), 315, 180);
             material.setImage_thumb_url(image_thumb_url);
         }

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

@@ -18,7 +18,7 @@ public interface TencentCosService {
     // [腾讯云COS] 上传对象
     SysFileResult putObject(MultipartFile multipartFile, String object_key, Integer is_watermark) throws IOException;
     // [腾讯云COS] 打水印
-    void makeWater(String object_key);
+    void addWatermask(String object_key);
 
     // [腾讯云COS] 删除对象
     void deleteObject(String object_key);

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

@@ -188,7 +188,7 @@ public class TencentCosServiceImpl implements TencentCosService {
 
             // 打水印
             if (is_watermark != null && is_watermark == 1) {
-                makeWater(object_key);
+                addWatermask(object_key);
             }
 
             // 自定义返回结果实体
@@ -219,7 +219,7 @@ public class TencentCosServiceImpl implements TencentCosService {
     }
 
     // [腾讯云COS] 打水印
-    public void makeWater(String object_key) {
+    public void addWatermask(String object_key) {
         // 初始化 CosClient
         COSClient cosClient = getClient();
         InputStream inputStream = null;

+ 2 - 2
src/main/java/com/backendsys/modules/upload/controller/SysFileMultipartController.java

@@ -50,8 +50,8 @@ public class SysFileMultipartController {
     @Operation(summary = "合并分块")
     @PreAuthorize("@sr.hasPermission('1.1.3')")
     @PostMapping("/api/upload/multipartUploadComplete")
-    public Result multipartUploadComplete(String upload_id) {
-        return Result.success().put("data", sysFileMultipartService.multipartUploadComplete(upload_id));
+    public Result multipartUploadComplete(String upload_id, Integer is_watermark) {
+        return Result.success().put("data", sysFileMultipartService.multipartUploadComplete(upload_id, is_watermark));
     }
 
     @Operation(summary = "查询分块上传情况")

+ 1 - 1
src/main/java/com/backendsys/modules/upload/service/SysFileMultipartService.java

@@ -14,7 +14,7 @@ public interface SysFileMultipartService {
     // 2.上传分块
     Map<String, Object> multipartUpload(MultipartFile multipartFile, String upload_id, Integer upload_chunk_index);
     // 3.完成分块上传
-    SysFile multipartUploadComplete(String upload_id);
+    SysFile multipartUploadComplete(String upload_id, Integer is_watermark);
 
     // 查询分块上传情况
     Map<String, Object> listParts(String upload_id, String object_key);

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

@@ -303,7 +303,7 @@ public class SysFileMultipartServiceImpl implements SysFileMultipartService {
 
     // 完成分块上传
     @Override
-    public SysFile multipartUploadComplete(String upload_id) {
+    public SysFile multipartUploadComplete(String upload_id, Integer is_watermark) {
 
         if (StrUtil.isEmpty(upload_id)) throw new CustException("upload_id 不能为空");
 
@@ -349,6 +349,12 @@ public class SysFileMultipartServiceImpl implements SysFileMultipartService {
                 // [腾讯云] 合并分块
                 CompleteMultipartUploadResult completeResult = tencentCosService.completeMultipartUpload(upload_id, sysFileEntity.getObject_key(), etags);
                 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());

+ 8 - 2
src/main/java/com/backendsys/modules/upload/utils/UploadUtil.java

@@ -120,7 +120,12 @@ public class UploadUtil {
     public static String getImageThumbUrl(String url, Integer target, Integer width, Integer height) {
         return getImageThumbUrl(url, target, width, height, StyleEnums.THUMB_BACKGROUND.getValue());
     }
-    public static String getImageThumbUrl(String url, Integer target, Integer width, Integer height, String backgroundColor) {
+    public static String getImageThumbUrl(String url, Integer target, Integer width, Integer height,
+                                          String backgroundColor) {
+        return getImageThumbUrl(url, target, width, height, backgroundColor, false);
+    }
+    public static String getImageThumbUrl(String url, Integer target, Integer width, Integer height,
+                                          String backgroundColor, Boolean is_importent) {
         if (target == -1) {
             UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url);
             if (width != null) builder.queryParam("w", width);
@@ -133,7 +138,8 @@ public class UploadUtil {
             backgroundColor = "#" + backgroundColor;
             String w = (width != null) ? Convert.toStr(width) : "";
             String h = (height != null) ? Convert.toStr(height) : "";
-            return url + "?imageMogr2/thumbnail/" + w + "x" + h + "/pad/1/color/" + Base64.encode(backgroundColor);
+            return url + "?imageMogr2/thumbnail/" + (w != null ? w : "") + "x" + (h != null ? h : "") +
+                    (is_importent ? "!" : "") + "/pad/1/color/" + Base64.encode(backgroundColor);
         }
         // 抖音云
         if (target == 3) {