Selaa lähdekoodia

fix存储服务切换腾讯

Eric 1 vuosi sitten
vanhempi
commit
9e82a28904

+ 15 - 9
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/UploadFileController.java

@@ -1,10 +1,17 @@
 package com.yonge.cooleshow.admin.controller;
 
-import com.ksyun.ks3.dto.PostObjectFormFields;
+import com.microsvc.toolkit.middleware.oss.wrapper.OssWrapper;
+import com.yonge.cooleshow.biz.dal.service.UploadFileService;
+import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.entity.UploadReturnBean;
 import com.yonge.toolset.thirdparty.entity.UploadSign;
-import io.swagger.annotations.*;
-
+import com.yonge.toolset.utils.upload.UploadUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -15,11 +22,6 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
-import com.yonge.cooleshow.biz.dal.service.UploadFileService;
-import com.yonge.cooleshow.common.controller.BaseController;
-import com.yonge.cooleshow.common.entity.UploadReturnBean;
-import com.yonge.toolset.utils.upload.UploadUtil;
-
 /**
  * 上传控制层
  */
@@ -55,6 +57,7 @@ public class UploadFileController extends BaseController {
             @ApiImplicitParam(name = "postData", dataType = "Map", value = "1.如果使用js sdk上传的时候设置了ACL请设置,例\"acl\":\"public-read\"值要与SDK中一致,没有则删除该项</br>" +
                     "2.提供js sdk中的key值,例\"key\":\"20150115/中文/${filename}\""),
             @ApiImplicitParam(name = "unknowValueField", dataType = "List", value = "对于用户无法确定表单值的放在unknownValueField中(比如有的上传控件会添加一些表单项,但表单项的值可能是随机的)"),
+            @ApiImplicitParam(name = "pluginName", dataType = "String", value = "插件名称,默认ks3,可选值:ks3,aliyun,tencent"),
     })
     @ApiOperation(value = "获取上传文件签名", notes = "{\n" +
             "    \"bucketName\":\"\",\n" +
@@ -66,7 +69,10 @@ public class UploadFileController extends BaseController {
             "    \"unknowValueField\":[\"test\"]\n" +
             "}")
     @PostMapping("/getUploadSign")
-    public HttpResponseResult<PostObjectFormFields> getUploadSign(@RequestBody UploadSign uploadSign) {
+    public HttpResponseResult<OssWrapper.ResponseSign> getUploadSign(@RequestParam(defaultValue = "ks3") String pluginName,
+                                                                     @RequestBody UploadSign uploadSign) {
+        // 设置默认文件存储服务方
+        uploadSign.setPluginName(pluginName);
         return succeed(uploadFileService.getUploadSign(uploadSign));
     }
 }

+ 6 - 0
cooleshow-user/user-biz/pom.xml

@@ -104,6 +104,12 @@
             <artifactId>toolset-payment</artifactId>
             <version>${project.toolset.version}</version>
         </dependency>
+
+        <dependency>
+            <groupId>com.microsvc.toolkit.middleware</groupId>
+            <artifactId>microsvc-middleware-oss</artifactId>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 23 - 15
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UploadFileService.java

@@ -1,14 +1,14 @@
 package com.yonge.cooleshow.biz.dal.service;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-import com.ksyun.ks3.dto.PostObjectFormFields;
+import com.alibaba.fastjson.JSON;
+import com.microsvc.toolkit.middleware.oss.OssPluginContext;
+import com.microsvc.toolkit.middleware.oss.wrapper.OssWrapper;
+import com.yonge.cooleshow.common.entity.UploadReturnBean;
+import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.thirdparty.entity.UploadSign;
+import com.yonge.toolset.thirdparty.storage.StoragePluginContext;
+import com.yonge.toolset.thirdparty.storage.provider.KS3StoragePlugin;
+import com.yonge.toolset.utils.upload.UploadUtil;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -17,11 +17,12 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
-import com.yonge.cooleshow.common.entity.UploadReturnBean;
-import com.yonge.toolset.base.exception.BizException;
-import com.yonge.toolset.thirdparty.storage.StoragePluginContext;
-import com.yonge.toolset.thirdparty.storage.provider.KS3StoragePlugin;
-import com.yonge.toolset.utils.upload.UploadUtil;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
 
 /**
  * 上传工具服务层实现类
@@ -31,6 +32,8 @@ public class UploadFileService {
 
     @Autowired
     private StoragePluginContext storagePluginContext;
+    @Autowired
+    private OssPluginContext ossPluginContext;
 
     /**
      * 最大上传大小,单位kb
@@ -149,7 +152,12 @@ public class UploadFileService {
      * @param uploadSign
      * @return
      */
-    public PostObjectFormFields getUploadSign(UploadSign uploadSign) {
-        return storagePluginContext.getUploadSign(KS3StoragePlugin.PLUGIN_NAME, uploadSign);
+    public OssWrapper.ResponseSign getUploadSign(UploadSign uploadSign) {
+        //return storagePluginContext.getUploadSign(KS3StoragePlugin.PLUGIN_NAME, uploadSign);
+
+        // 请求授权签名
+        OssWrapper.RequestSign requestSign = JSON.parseObject(JSON.toJSONString(uploadSign), OssWrapper.RequestSign.class);
+
+        return ossPluginContext.getPluginService(uploadSign.getPluginName()).getUploadSign(requestSign);
     }
 }

+ 15 - 9
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/UploadFileController.java

@@ -1,10 +1,17 @@
 package com.yonge.cooleshow.student.controller;
 
-import com.ksyun.ks3.dto.PostObjectFormFields;
+import com.microsvc.toolkit.middleware.oss.wrapper.OssWrapper;
+import com.yonge.cooleshow.biz.dal.service.UploadFileService;
+import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.entity.UploadReturnBean;
 import com.yonge.toolset.thirdparty.entity.UploadSign;
-import io.swagger.annotations.*;
-
+import com.yonge.toolset.utils.upload.UploadUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -15,11 +22,6 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
-import com.yonge.cooleshow.biz.dal.service.UploadFileService;
-import com.yonge.cooleshow.common.controller.BaseController;
-import com.yonge.cooleshow.common.entity.UploadReturnBean;
-import com.yonge.toolset.utils.upload.UploadUtil;
-
 /**
  * 上传控制层
  */
@@ -55,6 +57,7 @@ public class UploadFileController extends BaseController {
             @ApiImplicitParam(name = "postData", dataType = "Map", value = "1.如果使用js sdk上传的时候设置了ACL请设置,例\"acl\":\"public-read\"值要与SDK中一致,没有则删除该项</br>" +
                     "2.提供js sdk中的key值,例\"key\":\"20150115/中文/${filename}\""),
             @ApiImplicitParam(name = "unknowValueField", dataType = "List", value = "对于用户无法确定表单值的放在unknownValueField中(比如有的上传控件会添加一些表单项,但表单项的值可能是随机的)"),
+            @ApiImplicitParam(name = "pluginName", dataType = "String", value = "插件名称,默认ks3,可选值:ks3,aliyun,tencent"),
     })
     @ApiOperation(value = "获取上传文件签名", notes = "{\n" +
             "    \"bucketName\":\"\",\n" +
@@ -66,7 +69,10 @@ public class UploadFileController extends BaseController {
             "    \"unknowValueField\":[\"test\"]\n" +
             "}")
     @PostMapping("/getUploadSign")
-    public HttpResponseResult<PostObjectFormFields> getUploadSign(@RequestBody UploadSign uploadSign) {
+    public HttpResponseResult<OssWrapper.ResponseSign> getUploadSign(@RequestParam(defaultValue = "ks3") String pluginName,
+                                                                    @RequestBody UploadSign uploadSign) {
+        // 设置默认文件存储服务方
+        uploadSign.setPluginName(pluginName);
         return succeed(uploadFileService.getUploadSign(uploadSign));
     }
 }

+ 6 - 2
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/open/OpenClient.java

@@ -1,6 +1,6 @@
 package com.yonge.cooleshow.student.controller.open;
 
-import com.ksyun.ks3.dto.PostObjectFormFields;
+import com.microsvc.toolkit.middleware.oss.wrapper.OssWrapper;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.MusicImgDto;
@@ -134,6 +134,7 @@ public class OpenClient extends BaseController {
             @ApiImplicitParam(name = "postData", dataType = "Map", value = "1.如果使用js sdk上传的时候设置了ACL请设置,例\"acl\":\"public-read\"值要与SDK中一致,没有则删除该项</br>" +
                     "2.提供js sdk中的key值,例\"key\":\"20150115/中文/${filename}\""),
             @ApiImplicitParam(name = "unknowValueField", dataType = "List", value = "对于用户无法确定表单值的放在unknownValueField中(比如有的上传控件会添加一些表单项,但表单项的值可能是随机的)"),
+            @ApiImplicitParam(name = "pluginName", dataType = "String", value = "插件名称,默认ks3,可选值:ks3,aliyun,tencent"),
     })
     @ApiOperation(value = "获取上传文件签名", notes = "{\n" +
             "    \"bucketName\":\"\",\n" +
@@ -145,7 +146,10 @@ public class OpenClient extends BaseController {
             "    \"unknowValueField\":[\"test\"]\n" +
             "}")
     @PostMapping("/getUploadSign")
-    public HttpResponseResult<PostObjectFormFields> getUploadSign(@RequestBody UploadSign uploadSign) {
+    public HttpResponseResult<OssWrapper.ResponseSign> getUploadSign(@RequestParam(defaultValue = "ks3") String pluginName,
+                                                                     @RequestBody UploadSign uploadSign) {
+        // 设置默认文件存储服务方
+        uploadSign.setPluginName(pluginName);
         return succeed(uploadFileService.getUploadSign(uploadSign));
     }
 

+ 15 - 9
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/UploadFileController.java

@@ -1,10 +1,17 @@
 package com.yonge.cooleshow.teacher.controller;
 
-import com.ksyun.ks3.dto.PostObjectFormFields;
+import com.microsvc.toolkit.middleware.oss.wrapper.OssWrapper;
+import com.yonge.cooleshow.biz.dal.service.UploadFileService;
+import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.entity.UploadReturnBean;
 import com.yonge.toolset.thirdparty.entity.UploadSign;
-import io.swagger.annotations.*;
-
+import com.yonge.toolset.utils.upload.UploadUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -15,11 +22,6 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
-import com.yonge.cooleshow.biz.dal.service.UploadFileService;
-import com.yonge.cooleshow.common.controller.BaseController;
-import com.yonge.cooleshow.common.entity.UploadReturnBean;
-import com.yonge.toolset.utils.upload.UploadUtil;
-
 /**
  * 上传控制层
  */
@@ -55,6 +57,7 @@ public class UploadFileController extends BaseController {
             @ApiImplicitParam(name = "postData", dataType = "Map", value = "1.如果使用js sdk上传的时候设置了ACL请设置,例\"acl\":\"public-read\"值要与SDK中一致,没有则删除该项</br>" +
                     "2.提供js sdk中的key值,例\"key\":\"20150115/中文/${filename}\""),
             @ApiImplicitParam(name = "unknowValueField", dataType = "List", value = "对于用户无法确定表单值的放在unknownValueField中(比如有的上传控件会添加一些表单项,但表单项的值可能是随机的)"),
+            @ApiImplicitParam(name = "pluginName", dataType = "String", value = "插件名称,默认ks3,可选值:ks3,aliyun,tencent"),
     })
     @ApiOperation(value = "获取上传文件签名", notes = "{\n" +
             "    \"bucketName\":\"\",\n" +
@@ -66,7 +69,10 @@ public class UploadFileController extends BaseController {
             "    \"unknowValueField\":[\"test\"]\n" +
             "}")
     @PostMapping("/getUploadSign")
-    public HttpResponseResult<PostObjectFormFields> getUploadSign(@RequestBody UploadSign uploadSign) {
+    public HttpResponseResult<OssWrapper.ResponseSign> getUploadSign(@RequestParam(defaultValue = "ks3") String pluginName,
+                                                                     @RequestBody UploadSign uploadSign) {
+        // 设置默认文件存储服务方
+        uploadSign.setPluginName(pluginName);
         return succeed(uploadFileService.getUploadSign(uploadSign));
     }
 }

+ 11 - 3
cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/UploadFileController.java

@@ -1,13 +1,17 @@
 package com.yonge.cooleshow.website.controller;
 
-import com.ksyun.ks3.dto.PostObjectFormFields;
+import com.microsvc.toolkit.middleware.oss.wrapper.OssWrapper;
 import com.yonge.cooleshow.biz.dal.service.UploadFileService;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.entity.UploadReturnBean;
 import com.yonge.toolset.thirdparty.entity.UploadSign;
 import com.yonge.toolset.utils.upload.UploadUtil;
-import io.swagger.annotations.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -53,6 +57,7 @@ public class UploadFileController extends BaseController {
             @ApiImplicitParam(name = "postData", dataType = "Map", value = "1.如果使用js sdk上传的时候设置了ACL请设置,例\"acl\":\"public-read\"值要与SDK中一致,没有则删除该项</br>" +
                     "2.提供js sdk中的key值,例\"key\":\"20150115/中文/${filename}\""),
             @ApiImplicitParam(name = "unknowValueField", dataType = "List", value = "对于用户无法确定表单值的放在unknownValueField中(比如有的上传控件会添加一些表单项,但表单项的值可能是随机的)"),
+            @ApiImplicitParam(name = "pluginName", dataType = "String", value = "插件名称,默认ks3,可选值:ks3,aliyun,tencent"),
     })
     @ApiOperation(value = "获取上传文件签名", notes = "{\n" +
             "    \"bucketName\":\"\",\n" +
@@ -64,7 +69,10 @@ public class UploadFileController extends BaseController {
             "    \"unknowValueField\":[\"test\"]\n" +
             "}")
     @PostMapping("/getUploadSign")
-    public HttpResponseResult<PostObjectFormFields> getUploadSign(@RequestBody UploadSign uploadSign) {
+    public HttpResponseResult<OssWrapper.ResponseSign> getUploadSign(@RequestParam(defaultValue = "ks3") String pluginName,
+                                                                     @RequestBody UploadSign uploadSign) {
+        // 设置默认文件存储服务方
+        uploadSign.setPluginName(pluginName);
         return succeed(uploadFileService.getUploadSign(uploadSign));
     }
 }

+ 14 - 15
cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/open/OpenClient.java

@@ -1,25 +1,20 @@
 package com.yonge.cooleshow.website.controller.open;
 
-import com.ksyun.ks3.dto.PostObjectFormFields;
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.biz.dal.dto.MusicImgDto;
-import com.yonge.cooleshow.biz.dal.service.*;
-import com.yonge.cooleshow.biz.dal.vo.MusicActivityVo;
-import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
+import com.microsvc.toolkit.middleware.oss.wrapper.OssWrapper;
+import com.yonge.cooleshow.biz.dal.service.UploadFileService;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import com.yonge.toolset.base.util.StringUtil;
 import com.yonge.toolset.thirdparty.entity.UploadSign;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
-import com.yonge.toolset.utils.string.ValueUtil;
-import io.swagger.annotations.*;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.Valid;
-import java.util.Map;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 
 
 @RestController
@@ -37,6 +32,7 @@ public class OpenClient extends BaseController {
             @ApiImplicitParam(name = "postData", dataType = "Map", value = "1.如果使用js sdk上传的时候设置了ACL请设置,例\"acl\":\"public-read\"值要与SDK中一致,没有则删除该项</br>" +
                     "2.提供js sdk中的key值,例\"key\":\"20150115/中文/${filename}\""),
             @ApiImplicitParam(name = "unknowValueField", dataType = "List", value = "对于用户无法确定表单值的放在unknownValueField中(比如有的上传控件会添加一些表单项,但表单项的值可能是随机的)"),
+            @ApiImplicitParam(name = "pluginName", dataType = "String", value = "插件名称,默认ks3,可选值:ks3,aliyun,tencent"),
     })
     @ApiOperation(value = "获取上传文件签名", notes = "{\n" +
             "    \"bucketName\":\"\",\n" +
@@ -48,7 +44,10 @@ public class OpenClient extends BaseController {
             "    \"unknowValueField\":[\"test\"]\n" +
             "}")
     @PostMapping("/getUploadSign")
-    public HttpResponseResult<PostObjectFormFields> getUploadSign(@RequestBody UploadSign uploadSign) {
+    public HttpResponseResult<OssWrapper.ResponseSign> getUploadSign(@RequestParam(defaultValue = "ks3") String pluginName,
+                                                                     @RequestBody UploadSign uploadSign) {
+        // 设置默认文件存储服务方
+        uploadSign.setPluginName(pluginName);
         return succeed(uploadFileService.getUploadSign(uploadSign));
     }
 }

+ 12 - 0
toolset/thirdparty-component/src/main/java/com/yonge/toolset/thirdparty/entity/UploadSign.java

@@ -3,12 +3,14 @@ package com.yonge.toolset.thirdparty.entity;
 import java.io.Serializable;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 
 /**
  * @Author: cy
  * @Date: 2022/4/27
  */
 public class UploadSign implements Serializable {
+
     private String bucketName;
 
     private String filename;
@@ -17,6 +19,8 @@ public class UploadSign implements Serializable {
 
     private List<String> unknowValueField;
 
+    private String pluginName;
+
     public String getBucketName() {
         return bucketName;
     }
@@ -48,5 +52,13 @@ public class UploadSign implements Serializable {
     public void setUnknowValueField(List<String> unknowValueField) {
         this.unknowValueField = unknowValueField;
     }
+
+    public String getPluginName() {
+        return Optional.ofNullable(pluginName).orElse("ks3");
+    }
+
+    public void setPluginName(String pluginName) {
+        this.pluginName = pluginName;
+    }
 }