Browse Source

新增抖音云上传接口

tsurumure 8 months ago
parent
commit
9ad9e4111a
20 changed files with 230 additions and 58 deletions
  1. 7 0
      pom.xml
  2. 0 2
      src/main/java/com/backendsys/modules/common/config/security/utils/TokenUtil.java
  3. 13 0
      src/main/java/com/backendsys/modules/sdk/douyincloud/tos/service/DouyinTosService.java
  4. 132 0
      src/main/java/com/backendsys/modules/sdk/douyincloud/tos/service/impl/DouyinTosServiceImpl.java
  5. 1 1
      src/main/java/com/backendsys/modules/sdk/tencentcloud/cos/entity/Progress.java
  6. 1 1
      src/main/java/com/backendsys/modules/sdk/tencentcloud/cos/entity/ProgressData.java
  7. 3 3
      src/main/java/com/backendsys/modules/sdk/tencentcloud/cos/service/TencentCosService.java
  8. 29 14
      src/main/java/com/backendsys/modules/sdk/tencentcloud/cos/service/impl/TencentCosServiceImpl.java
  9. 1 5
      src/main/java/com/backendsys/modules/sdk/tencentcloud/cos/utils/TencentBasicImageUtil.java
  10. 1 1
      src/main/java/com/backendsys/modules/sdk/tencentcloud/cos/utils/TencentCosUtil.java
  11. 1 1
      src/main/java/com/backendsys/modules/sdk/tencentcloud/sms/entity/TencentSmsCallbackStatis.java
  12. 1 1
      src/main/java/com/backendsys/modules/sdk/tencentcloud/sms/entity/TencentSmsStatis.java
  13. 3 3
      src/main/java/com/backendsys/modules/sdk/tencentcloud/sms/service/TencentSmsService.java
  14. 4 4
      src/main/java/com/backendsys/modules/sdk/tencentcloud/sms/service/impl/TencentSmsServiceImpl.java
  15. 1 1
      src/main/java/com/backendsys/modules/sms/controller/SmsController.java
  16. 1 1
      src/main/java/com/backendsys/modules/sms/service/impl/SmsServiceImpl.java
  17. 0 6
      src/main/java/com/backendsys/modules/upload/controller/SysUploadController.java
  18. 11 0
      src/main/java/com/backendsys/modules/upload/entity/SysUploadResult.java
  19. 1 4
      src/main/java/com/backendsys/modules/upload/service/impl/SysUploadMultipartServiceImpl.java
  20. 19 10
      src/main/java/com/backendsys/modules/upload/service/impl/SysUploadServiceImpl.java

+ 7 - 0
pom.xml

@@ -375,6 +375,13 @@
             <version>2.6.0</version>
         </dependency>
 
+        <!-- 抖音云 -->
+        <dependency>
+            <groupId>com.volcengine</groupId>
+            <artifactId>ve-tos-java-sdk</artifactId>
+            <version>2.8.7</version>
+        </dependency>
+
     </dependencies>
 
 

+ 0 - 2
src/main/java/com/backendsys/modules/common/config/security/utils/TokenUtil.java

@@ -77,9 +77,7 @@ public class TokenUtil {
      */
     public Claims getTokenInfo(HttpServletRequest request) {
         String token = getToken(request);
-        System.out.println("token = " + token);
         if (token != null && !token.isEmpty() && !"undefined".equals(token)) {
-            System.out.println("token in!");
             Claims tokenInfo = jwtUtil.extractAllClaims(token);
             return tokenInfo;
         }

+ 13 - 0
src/main/java/com/backendsys/modules/sdk/douyincloud/tos/service/DouyinTosService.java

@@ -0,0 +1,13 @@
+package com.backendsys.modules.sdk.douyincloud.tos.service;
+
+import com.backendsys.modules.upload.entity.SysUploadResult;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+
+public interface DouyinTosService {
+
+    // [抖音云COS] 上传对象
+    SysUploadResult putObject(MultipartFile multipartFile, String object_key) throws IOException;
+
+}

+ 132 - 0
src/main/java/com/backendsys/modules/sdk/douyincloud/tos/service/impl/DouyinTosServiceImpl.java

@@ -0,0 +1,132 @@
+package com.backendsys.modules.sdk.douyincloud.tos.service.impl;
+
+import cn.hutool.core.util.NumberUtil;
+import cn.hutool.core.util.StrUtil;
+import com.backendsys.exception.CustException;
+import com.backendsys.modules.common.utils.CommonUtil;
+import com.backendsys.modules.sdk.douyincloud.tos.service.DouyinTosService;
+import com.backendsys.modules.upload.entity.SysUploadResult;
+import com.volcengine.tos.TOSV2;
+import com.volcengine.tos.TOSV2ClientBuilder;
+import com.volcengine.tos.TosClientException;
+import com.volcengine.tos.TosServerException;
+import com.volcengine.tos.comm.event.DataTransferListener;
+import com.volcengine.tos.comm.event.DataTransferStatus;
+import com.volcengine.tos.comm.event.DataTransferType;
+import com.volcengine.tos.model.object.ObjectMetaRequestOptions;
+import com.volcengine.tos.model.object.PutObjectInput;
+import com.volcengine.tos.model.object.PutObjectOutput;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+
+// 对象接口 -> 上传对象
+// https://www.volcengine.com/docs/6349/79898
+@Service
+public class DouyinTosServiceImpl implements DouyinTosService {
+
+    private String REGION = "cn-beijing";
+    private String ENDPOINT = "tos-cn-beijing.volces.com";
+    private String DOMAIN = "tt8742f1ff1875cd2201-env-33n84bi3xr.tos-cn-beijing.volces.com";
+    private String BUCKET_NAME = "tt8742f1ff1875cd2201-env-33n84bi3xr";
+    private String ACCESS_KEY_ID = "AKLTNmFiMjBjMTZjZDYxNDlhZmI2OTc2M2U4MWZlODhhNGY";
+    private String SECRET_ACCESS_KEY = "TVRjME9UUmhabUZtWW1JNU5EWXhORGhoWVdJME16Z3pNbUprWkRKa1lqTQ==";
+
+
+    // [抖音云COS] 获取进度函数
+    private static DataTransferListener getDataTransferListener() {
+        return new DataTransferListener() {
+            // 自定义实现 DataTransferListener 的 dataTransferStatusChange 接口
+            @Override
+            public void dataTransferStatusChange(DataTransferStatus dataTransferStatus) {
+
+                long once = dataTransferStatus.getRwOnceBytes();
+                long current = dataTransferStatus.getConsumedBytes();
+                long total = dataTransferStatus.getTotalBytes();
+
+                if (dataTransferStatus.getType() == DataTransferType.DATA_TRANSFER_STARTED) {
+                    System.out.println("putObject started.");
+                } else if (dataTransferStatus.getType() == DataTransferType.DATA_TRANSFER_RW) {
+
+                    // 计算百分比
+                    double percentage = NumberUtil.mul(current, 100) / total;
+                    System.out.printf("putObject progress: [%d / %d] = %.02f%% \n", current, total, percentage);
+
+//                    System.out.printf("putObject, send %d bytes once, has sent %d bytes, total %d bytes.\n",
+//                            dataTransferStatus.getRwOnceBytes(), dataTransferStatus.getConsumedBytes(),
+//                            dataTransferStatus.getTotalBytes());
+
+                } else if (dataTransferStatus.getType() == DataTransferType.DATA_TRANSFER_FAILED) {
+                    System.out.printf("putObject failed, has sent %d bytes, total %d bytes.\n", dataTransferStatus.getConsumedBytes(), total);
+                } else if (dataTransferStatus.getType() == DataTransferType.DATA_TRANSFER_SUCCEED) {
+                    System.out.printf("putObject succeed, has sent %d bytes, total %d bytes.\n", dataTransferStatus.getConsumedBytes(), total);
+                }
+            }
+        };
+    }
+
+    /**
+     * [抖音云COS] 上传对象
+     */
+    @Override
+    public SysUploadResult putObject(MultipartFile multipartFile, String object_key) throws IOException {
+
+        if (multipartFile.isEmpty()) throw new CustException("file 上传文件不能为空");
+
+        // 生成 UUID 文件名
+        String filename = CommonUtil.generateUUIDFilename(multipartFile);
+
+        // 如果不传 object_key,则默认使用临时文件夹 (/temp/UUID文件名)
+        if (StrUtil.isEmpty(object_key)) object_key = "temp/" + filename;
+        System.out.println("Upload object: " + object_key);
+
+        // ------------------------------------------------------------------------------
+
+        // 初始化 TosClient
+        TOSV2 tos = new TOSV2ClientBuilder().build(REGION, ENDPOINT, ACCESS_KEY_ID, SECRET_ACCESS_KEY);
+
+        // TOSV2 提供的所有接口均会抛出 TosException 异常,需要使用 try-catch 进行捕获并处理。
+        try{
+
+            // 设置上传的桶名和对象名
+            PutObjectInput putObjectInput = new PutObjectInput()
+                .setBucket(BUCKET_NAME)
+                .setKey(object_key)
+                .setContent(multipartFile.getInputStream());
+
+            // 以下代码展示如何处理进度条
+            // 在 ObjectMetaRequestOptions 中设置文件大小,可在进度条中显示 total 总长度,否则 DataTransferStatus.getTotalBytes 值为 -1。
+            ObjectMetaRequestOptions options = new ObjectMetaRequestOptions().setContentLength(multipartFile.getSize());
+            putObjectInput.setOptions(options);
+            // 自定义实现 DataTransferListener,实现进度条功能
+            DataTransferListener listener = getDataTransferListener();
+            putObjectInput.setDataTransferListener(listener);
+
+            // 上传对象
+            PutObjectOutput output = tos.putObject(putObjectInput);
+
+            // 自定义返回结果实体
+            SysUploadResult result = new SysUploadResult();
+            result.setKey(object_key);
+            result.setRequest_id(output.getRequestInfo().getRequestId());
+            result.setE_tag(output.getEtag());
+            result.setDomain(DOMAIN);
+            return result;
+
+        } catch (TosClientException e) {
+            // 操作失败,捕获客户端异常,一般情况是请求参数错误,此时请求并未发送
+            System.out.println("putObject failed (TosClientException)");
+            throw new CustException(e.getMessage());
+        } catch (TosServerException e) {
+            // 操作失败,捕获服务端异常,可以获取到从服务端返回的详细错误信息
+            System.out.println("putObject failed (TosServerException)");
+            throw new CustException(e.getMessage());
+        } catch (Throwable t) {
+            // 作为兜底捕获其他异常,一般不会执行到这里
+            System.out.println("putObject failed (Throwable)");
+            throw new CustException(t.getMessage());
+        }
+
+    }
+}

+ 1 - 1
src/main/java/com/backendsys/modules/sdk/tencent/cos/entity/Progress.java → src/main/java/com/backendsys/modules/sdk/tencentcloud/cos/entity/Progress.java

@@ -1,4 +1,4 @@
-package com.backendsys.modules.sdk.tencent.cos.entity;
+package com.backendsys.modules.sdk.tencentcloud.cos.entity;
 
 import lombok.Data;
 

+ 1 - 1
src/main/java/com/backendsys/modules/sdk/tencent/cos/entity/ProgressData.java → src/main/java/com/backendsys/modules/sdk/tencentcloud/cos/entity/ProgressData.java

@@ -1,4 +1,4 @@
-package com.backendsys.modules.sdk.tencent.cos.entity;
+package com.backendsys.modules.sdk.tencentcloud.cos.entity;
 
 import lombok.Data;
 

+ 3 - 3
src/main/java/com/backendsys/modules/sdk/tencent/cos/service/TencentCosService.java → src/main/java/com/backendsys/modules/sdk/tencentcloud/cos/service/TencentCosService.java

@@ -1,17 +1,17 @@
-package com.backendsys.modules.sdk.tencent.cos.service;
+package com.backendsys.modules.sdk.tencentcloud.cos.service;
 
+import com.backendsys.modules.upload.entity.SysUploadResult;
 import com.qcloud.cos.model.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
 import java.net.URL;
 import java.util.List;
-import java.util.Map;
 
 public interface TencentCosService {
 
     // [腾讯云COS] 上传对象
-    UploadResult putObject(MultipartFile multipartFile, String object_key) throws IOException;
+    SysUploadResult putObject(MultipartFile multipartFile, String object_key) throws IOException;
 
     // [腾讯云COS] 删除对象
     void deleteObject(String object_key);

+ 29 - 14
src/main/java/com/backendsys/modules/sdk/tencent/cos/service/impl/TencentCosServiceImpl.java → src/main/java/com/backendsys/modules/sdk/tencentcloud/cos/service/impl/TencentCosServiceImpl.java

@@ -1,15 +1,16 @@
-package com.backendsys.modules.sdk.tencent.cos.service.impl;
+package com.backendsys.modules.sdk.tencentcloud.cos.service.impl;
 
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.StrUtil;
 import com.backendsys.exception.CustException;
 import com.backendsys.modules.common.config.security.utils.HttpRequestUtil;
 import com.backendsys.modules.common.utils.CommonUtil;
-import com.backendsys.modules.sdk.tencent.cos.entity.Progress;
-import com.backendsys.modules.sdk.tencent.cos.entity.ProgressData;
-import com.backendsys.modules.sdk.tencent.cos.service.TencentCosService;
-import com.backendsys.modules.sdk.tencent.cos.utils.TencentCosUtil;
+import com.backendsys.modules.sdk.tencentcloud.cos.entity.Progress;
+import com.backendsys.modules.sdk.tencentcloud.cos.entity.ProgressData;
+import com.backendsys.modules.sdk.tencentcloud.cos.service.TencentCosService;
+import com.backendsys.modules.sdk.tencentcloud.cos.utils.TencentCosUtil;
 import com.backendsys.modules.sse.utils.SseUtil;
+import com.backendsys.modules.upload.entity.SysUploadResult;
 import com.qcloud.cos.COSClient;
 import com.qcloud.cos.ClientConfig;
 import com.qcloud.cos.auth.BasicCOSCredentials;
@@ -37,8 +38,8 @@ import java.util.List;
 
 // 图片处理概述
 // https://cloud.tencent.com/document/product/436/42215
-////            // https://cloud.tencent.com/document/product/460/6929
-////            // https://github.com/tencentyun/cos-java-sdk-v5/blob/master/src/main/java/com/qcloud/cos/demo/ci/BasicImageProcessing.java
+// https://cloud.tencent.com/document/product/460/6929
+// https://github.com/tencentyun/cos-java-sdk-v5/blob/master/src/main/java/com/qcloud/cos/demo/ci/BasicImageProcessing.java
 @Service
 public class TencentCosServiceImpl implements TencentCosService {
 
@@ -53,6 +54,8 @@ public class TencentCosServiceImpl implements TencentCosService {
     private String REGION;
     @Value("${tencent.cos.bucket-name}")
     private String BUCKET_NAME;
+    @Value("${tencent.cos.accessible-domain}")
+    private String ACCESSIBLE_DOMAIN;
     @Value("${tencent.cos.secret-id}")
     private String SECRET_ID;
     @Value("${tencent.cos.secret-key}")
@@ -108,18 +111,23 @@ public class TencentCosServiceImpl implements TencentCosService {
      * - 如果对象是图片,则同时产生缩略图
      */
     @Override
-    public UploadResult putObject(MultipartFile multipartFile, String object_key) {
+    public SysUploadResult putObject(MultipartFile multipartFile, String object_key) {
 
         if (multipartFile.isEmpty()) throw new CustException("file 上传文件不能为空");
 
+        // 生成 UUID 文件名
+        String filename = CommonUtil.generateUUIDFilename(multipartFile);
+
+        // 如果不传 object_key,则默认使用临时文件夹 (/temp/UUID文件名)
+        if (StrUtil.isEmpty(object_key)) object_key = "temp/" + filename;
+        System.out.println("Upload object: " + object_key);
+
+        // ------------------------------------------------------------------------------
+
+        // 初始化 CosClient
         COSClient cosClient = getClient();
         try {
 
-            // 如果不传 object_key,则默认使用临时文件夹 (/temp) + UUID文件名
-            String filename = CommonUtil.generateUUIDFilename(multipartFile);
-            if (StrUtil.isEmpty(object_key)) object_key = "temp/" + filename;
-            System.out.println("Upload object: " + object_key);
-
             // [配置]
             ObjectMetadata metadata = new ObjectMetadata();
             // 设置流大小 (只有设置了才有进度)
@@ -160,7 +168,14 @@ public class TencentCosServiceImpl implements TencentCosService {
             Upload upload = transferManager.upload(putObjectRequest);   // 返回一个异步结果Upload
             showTransferProgress(filename, upload);                     // 查询上传进度,直到上传结束
             UploadResult uploadResult = upload.waitForUploadResult();   // 捕获可能出现的异常
-            return uploadResult;
+
+            // 自定义返回结果实体
+            SysUploadResult result = new SysUploadResult();
+            result.setKey(object_key);
+            result.setRequest_id(uploadResult.getRequestId());
+            result.setE_tag(uploadResult.getETag());
+            result.setDomain(ACCESSIBLE_DOMAIN);
+            return result;
 
         } catch (IOException e) {
             throw new CustException(e.getMessage());

+ 1 - 5
src/main/java/com/backendsys/modules/sdk/tencent/cos/utils/TencentBasicImageUtil.java → src/main/java/com/backendsys/modules/sdk/tencentcloud/cos/utils/TencentBasicImageUtil.java

@@ -1,11 +1,7 @@
-package com.backendsys.modules.sdk.tencent.cos.utils;
+package com.backendsys.modules.sdk.tencentcloud.cos.utils;
 
 import com.qcloud.cos.COSClient;
 import com.qcloud.cos.model.GetObjectRequest;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-import java.io.File;
 
 public class TencentBasicImageUtil {
 

+ 1 - 1
src/main/java/com/backendsys/modules/sdk/tencent/cos/utils/TencentCosUtil.java → src/main/java/com/backendsys/modules/sdk/tencentcloud/cos/utils/TencentCosUtil.java

@@ -1,4 +1,4 @@
-package com.backendsys.modules.sdk.tencent.cos.utils;
+package com.backendsys.modules.sdk.tencentcloud.cos.utils;
 
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.io.IORuntimeException;

+ 1 - 1
src/main/java/com/backendsys/modules/sdk/tencent/sms/entity/TencentSmsCallbackStatis.java → src/main/java/com/backendsys/modules/sdk/tencentcloud/sms/entity/TencentSmsCallbackStatis.java

@@ -1,4 +1,4 @@
-package com.backendsys.modules.sdk.tencent.sms.entity;
+package com.backendsys.modules.sdk.tencentcloud.sms.entity;
 
 import lombok.Data;
 

+ 1 - 1
src/main/java/com/backendsys/modules/sdk/tencent/sms/entity/TencentSmsStatis.java → src/main/java/com/backendsys/modules/sdk/tencentcloud/sms/entity/TencentSmsStatis.java

@@ -1,4 +1,4 @@
-package com.backendsys.modules.sdk.tencent.sms.entity;
+package com.backendsys.modules.sdk.tencentcloud.sms.entity;
 
 import lombok.Data;
 

+ 3 - 3
src/main/java/com/backendsys/modules/sdk/tencent/sms/service/TencentSmsService.java → src/main/java/com/backendsys/modules/sdk/tencentcloud/sms/service/TencentSmsService.java

@@ -1,7 +1,7 @@
-package com.backendsys.modules.sdk.tencent.sms.service;
+package com.backendsys.modules.sdk.tencentcloud.sms.service;
 
-import com.backendsys.modules.sdk.tencent.sms.entity.TencentSmsCallbackStatis;
-import com.backendsys.modules.sdk.tencent.sms.entity.TencentSmsStatis;
+import com.backendsys.modules.sdk.tencentcloud.sms.entity.TencentSmsCallbackStatis;
+import com.backendsys.modules.sdk.tencentcloud.sms.entity.TencentSmsStatis;
 import com.tencentcloudapi.common.exception.TencentCloudSDKException;
 import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse;
 

+ 4 - 4
src/main/java/com/backendsys/modules/sdk/tencent/sms/service/impl/TencentSmsServiceImpl.java → src/main/java/com/backendsys/modules/sdk/tencentcloud/sms/service/impl/TencentSmsServiceImpl.java

@@ -1,10 +1,10 @@
-package com.backendsys.modules.sdk.tencent.sms.service.impl;
+package com.backendsys.modules.sdk.tencentcloud.sms.service.impl;
 
 import cn.hutool.core.util.StrUtil;
 import com.backendsys.exception.CustException;
-import com.backendsys.modules.sdk.tencent.sms.entity.TencentSmsCallbackStatis;
-import com.backendsys.modules.sdk.tencent.sms.entity.TencentSmsStatis;
-import com.backendsys.modules.sdk.tencent.sms.service.TencentSmsService;
+import com.backendsys.modules.sdk.tencentcloud.sms.entity.TencentSmsCallbackStatis;
+import com.backendsys.modules.sdk.tencentcloud.sms.entity.TencentSmsStatis;
+import com.backendsys.modules.sdk.tencentcloud.sms.service.TencentSmsService;
 import com.tencentcloudapi.common.Credential;
 import com.tencentcloudapi.common.exception.TencentCloudSDKException;
 import com.tencentcloudapi.common.profile.ClientProfile;

+ 1 - 1
src/main/java/com/backendsys/modules/sms/controller/SmsController.java

@@ -3,7 +3,7 @@ package com.backendsys.modules.sms.controller;
 import com.backendsys.modules.common.utils.Result;
 import com.backendsys.modules.sms.entity.Sms;
 import com.backendsys.modules.sms.service.SmsService;
-import com.backendsys.modules.sdk.tencent.sms.service.TencentSmsService;
+import com.backendsys.modules.sdk.tencentcloud.sms.service.TencentSmsService;
 import com.tencentcloudapi.common.exception.TencentCloudSDKException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;

+ 1 - 1
src/main/java/com/backendsys/modules/sms/service/impl/SmsServiceImpl.java

@@ -5,7 +5,7 @@ import cn.hutool.json.JSONUtil;
 import com.backendsys.exception.CustException;
 import com.backendsys.modules.common.config.redis.utils.RedisUtil;
 import com.backendsys.modules.common.config.security.utils.HttpRequestUtil;
-import com.backendsys.modules.sdk.tencent.sms.service.TencentSmsService;
+import com.backendsys.modules.sdk.tencentcloud.sms.service.TencentSmsService;
 import com.backendsys.modules.sms.dao.SmsDao;
 import com.backendsys.modules.sms.entity.Sms;
 import com.backendsys.utils.response.ResultEnum;

+ 0 - 6
src/main/java/com/backendsys/modules/upload/controller/SysUploadController.java

@@ -1,16 +1,10 @@
 package com.backendsys.modules.upload.controller;
 
 import cn.hutool.core.convert.Convert;
-import com.backendsys.entity.PageDTO;
-import com.backendsys.entity.System.SysFile.SysFileDTO;
-import com.backendsys.entity.Tencent.TencentCos.MultipartUploadDTO;
-import com.backendsys.exception.CustException;
 import com.backendsys.modules.common.config.security.utils.HttpRequestUtil;
 import com.backendsys.modules.common.utils.Result;
-import com.backendsys.modules.sdk.tencent.cos.service.TencentCosService;
 import com.backendsys.modules.sse.emitter.SseEmitterManager;
 import com.backendsys.modules.sse.utils.SseEmitterUTF8;
-import com.backendsys.modules.sse.utils.SseUtil;
 import com.backendsys.modules.upload.entity.SysUpload;
 import com.backendsys.modules.upload.service.SysUploadService;
 import io.swagger.v3.oas.annotations.tags.Tag;

+ 11 - 0
src/main/java/com/backendsys/modules/upload/entity/SysUploadResult.java

@@ -0,0 +1,11 @@
+package com.backendsys.modules.upload.entity;
+
+import lombok.Data;
+
+@Data
+public class SysUploadResult {
+    private String request_id;
+    private String key;
+    private String e_tag;
+    private String domain;
+}

+ 1 - 4
src/main/java/com/backendsys/modules/upload/service/impl/SysUploadMultipartServiceImpl.java

@@ -1,12 +1,11 @@
 package com.backendsys.modules.upload.service.impl;
 
-import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.io.file.FileNameUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.crypto.digest.DigestUtil;
 import com.backendsys.exception.CustException;
 import com.backendsys.modules.common.config.security.utils.HttpRequestUtil;
-import com.backendsys.modules.sdk.tencent.cos.service.TencentCosService;
+import com.backendsys.modules.sdk.tencentcloud.cos.service.TencentCosService;
 import com.backendsys.modules.upload.dao.SysUploadDao;
 import com.backendsys.modules.upload.entity.SysUpload;
 import com.backendsys.modules.upload.service.SysUploadMultipartService;
@@ -17,9 +16,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.LinkedHashMap;
-import java.util.List;
 import java.util.Map;
 
 @Service

+ 19 - 10
src/main/java/com/backendsys/modules/upload/service/impl/SysUploadServiceImpl.java

@@ -5,10 +5,11 @@ import cn.hutool.core.io.file.FileNameUtil;
 import cn.hutool.crypto.digest.DigestUtil;
 import com.backendsys.exception.CustException;
 import com.backendsys.modules.common.config.security.utils.HttpRequestUtil;
-import com.backendsys.modules.sdk.tencent.cos.service.TencentCosService;
-import com.backendsys.modules.system.entity.SysUserInfo;
+import com.backendsys.modules.sdk.douyincloud.tos.service.DouyinTosService;
+import com.backendsys.modules.sdk.tencentcloud.cos.service.TencentCosService;
 import com.backendsys.modules.upload.dao.SysUploadDao;
 import com.backendsys.modules.upload.entity.SysUpload;
+import com.backendsys.modules.upload.entity.SysUploadResult;
 import com.backendsys.modules.upload.service.SysUploadService;
 import com.backendsys.utils.response.PageEntity;
 import com.backendsys.utils.response.PageInfoResult;
@@ -31,13 +32,15 @@ public class SysUploadServiceImpl implements SysUploadService {
 
     @Autowired
     private HttpRequestUtil httpRequestUtil;
-    @Autowired
-    private TencentCosService tencentCosService;
+
     @Autowired
     private SysUploadDao sysUploadDao;
 
-    @Value("${tencent.cos.accessible-domain}")
-    private String ACCESSIBLE_DOMAIN;
+    @Autowired
+    private TencentCosService tencentCosService;
+
+    @Autowired
+    private DouyinTosService douyinTosService;
 
     /**
      * 获取上传文件列表
@@ -70,18 +73,24 @@ public class SysUploadServiceImpl implements SysUploadService {
             String md5 = DigestUtil.md5Hex(multipartFile.getInputStream());
             SysUpload sysUploadEntity = sysUploadDao.selectOne(new LambdaQueryWrapper<SysUpload>().eq(SysUpload::getMd5, md5));
             if (sysUploadEntity == null) {
-                UploadResult uploadResult = tencentCosService.putObject(multipartFile, null);
+
+                // [腾讯云-上传对象]
+                SysUploadResult uploadResult = tencentCosService.putObject(multipartFile, null);
+
+//                // [抖音云-上传对象]
+//                SysUploadResult uploadResult = douyinTosService.putObject(multipartFile, null);
+
                 // [新增] 上传文件记录
                 sysUploadEntity = new SysUpload();
                 sysUploadEntity.setCategory_id(category_id);
-                sysUploadEntity.setRequest_id(uploadResult.getRequestId());
+                sysUploadEntity.setRequest_id(uploadResult.getRequest_id());
                 sysUploadEntity.setUser_id(httpRequestUtil.getUserId());
                 sysUploadEntity.setObject_key(uploadResult.getKey());
                 sysUploadEntity.setName(FileNameUtil.getName(uploadResult.getKey()));
                 sysUploadEntity.setContent_type(multipartFile.getContentType());
-                sysUploadEntity.setUrl(ACCESSIBLE_DOMAIN + "/" + uploadResult.getKey());
+                sysUploadEntity.setUrl(uploadResult.getDomain() + "/" + uploadResult.getKey());
                 sysUploadEntity.setSize(multipartFile.getSize());
-                sysUploadEntity.setMd5(uploadResult.getETag());
+                sysUploadEntity.setMd5(uploadResult.getE_tag());
                 sysUploadEntity.setCreate_time(DateUtil.now());
                 sysUploadEntity.setUpdate_time(DateUtil.now());
                 sysUploadDao.insert(sysUploadEntity);