Bläddra i källkod

完成通用上传接口

tomatozq 5 år sedan
förälder
incheckning
3f7a50b085

+ 17 - 0
picc-common/src/main/java/com/jpsoft/picc/modules/common/config/OSSConfig.java

@@ -0,0 +1,17 @@
+package com.jpsoft.picc.modules.common.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Component
+@ConfigurationProperties(prefix = "oss" )
+@Data
+public class OSSConfig {
+    private String accessKeyId;
+    private String accessKeySecret;
+    private String endpoint;
+    private String bucketName;
+    private String urlPrefix;
+    private String objectPre;
+}

+ 7 - 0
picc-common/src/main/java/com/jpsoft/picc/modules/common/utils/PojoUtils.java

@@ -3,6 +3,7 @@ package com.jpsoft.picc.modules.common.utils;
 import com.github.dozermapper.core.DozerBeanMapperBuilder;
 import com.github.dozermapper.core.Mapper;
 import com.github.pagehelper.Page;
+import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -54,14 +55,20 @@ public class PojoUtils {
         return map;
     }
 
+
     public static Map pageWrapper(Page page){
         Map<String,Object> pageMap = new HashMap<>();
 
+        //记录总数
         pageMap.put("recordsTotal",page.getTotal());
         pageMap.put("recordsFiltered",page.getTotal());
+        //总页数
         pageMap.put("totalPage",page.getPages());
+        //当前页
         pageMap.put("pageNumber",page.getPageNum());
+        //每页条数
         pageMap.put("pageSize",page.getPageSize());
+        //本页数据
         pageMap.put("data", page.getResult());
 
         return pageMap;

+ 44 - 0
picc-common/src/main/java/com/jpsoft/picc/modules/common/utils/Uploader.java

@@ -0,0 +1,44 @@
+package com.jpsoft.picc.modules.common.utils;
+
+import com.aliyun.oss.OSS;
+import com.aliyun.oss.OSSClientBuilder;
+import com.aliyun.oss.model.PutObjectResult;
+import com.jpsoft.picc.modules.common.config.OSSConfig;
+import com.jpsoft.picc.modules.common.dto.MessageResult;
+
+import java.io.InputStream;
+import java.util.Calendar;
+import java.util.Date;
+
+public class Uploader {
+    public static String ossUpload(OSSConfig ossConfig,
+                                   String subFolder, String fileName,
+                                   InputStream fileInputStream){
+        Date now = new Date();
+
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(now);
+
+        String savePath = ossConfig.getObjectPre();
+
+        if(!subFolder.startsWith("/")){
+            savePath += "/";
+        }
+
+        savePath += subFolder;
+
+        savePath = savePath + "/" + cal.get(Calendar.YEAR) + "/" +  (cal.get(Calendar.MONTH)+1) + "/";
+
+        OSS ossClient = new OSSClientBuilder().build(ossConfig.getEndpoint(), ossConfig.getAccessKeyId(), ossConfig.getAccessKeySecret());
+
+        String retFileUrl = savePath + fileName;
+
+        // 上传文件流
+        PutObjectResult result = ossClient.putObject(ossConfig.getBucketName(), retFileUrl, fileInputStream);
+
+        // 关闭OSSClient
+        ossClient.shutdown();
+
+        return ossConfig.getUrlPrefix() + "/" + retFileUrl;
+    }
+}

+ 48 - 0
picc-enterprise-server/src/main/java/com/jpsoft/picc/modules/auth/controller/AttachmentController.java

@@ -1,9 +1,57 @@
 package com.jpsoft.picc.modules.auth.controller;
 
+import com.alibaba.druid.util.StringUtils;
+import com.jpsoft.picc.modules.common.config.OSSConfig;
+import com.jpsoft.picc.modules.common.dto.MessageResult;
+import com.jpsoft.picc.modules.common.utils.Uploader;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
 
 @Api(description="附件管理")
 @RestController
+@RequestMapping("/auth/attachment")
+@Slf4j
 public class AttachmentController {
+    @Autowired
+    private OSSConfig ossConfig;
+
+    @PostMapping("upload")
+    @ApiOperation(value="附件上传")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "fileName",value = "文件名", required = false, paramType = "form"),
+            @ApiImplicitParam(name = "subFolder",value = "子目录名(如/test)", required = false, paramType = "form"),
+            @ApiImplicitParam(name = "uploadFile",value = "上传文件", required = true,paramType="form", dataType = "__file")
+    })
+    public MessageResult<String> upload(String fileName,String subFolder,MultipartFile uploadFile){
+        MessageResult<String> messageResult = new MessageResult<>();
+
+        try {
+            if (StringUtils.isEmpty(fileName)){
+                fileName = uploadFile.getOriginalFilename();
+            }
+
+            String retFileUrl = Uploader.ossUpload(ossConfig,subFolder,fileName,uploadFile.getInputStream());
+
+            messageResult.setResult(true);
+            messageResult.setData(retFileUrl);
+            messageResult.setCode(200);
+        } catch (Exception e) {
+            log.error(e.getMessage(),e);
+
+            messageResult.setResult(false);
+            messageResult.setMessage(e.getMessage());
+        }
+
+        return messageResult;
+    }
 }

+ 9 - 1
picc-enterprise-server/src/main/resources/application-dev.yml

@@ -17,4 +17,12 @@ cas:
 
 logger:
   level: WARN
-  dir: H:\\projects\\picc\\logs\\picc-enterprise-server\\
+  dir: H:\\projects\\picc\\logs\\picc-enterprise-server\\
+
+oss:
+  accessKeyId: LTAILGOo7bwpkvnq
+  accessKeySecret: ZGsaTO5klbSHxULr2Q3s2PiqKDzN15
+  endpoint: http://oss-cn-hangzhou.aliyuncs.com
+  bucketName: wzzgh2out
+  urlPrefix: http://vod.wzgh.org
+  objectPre: picc

+ 8 - 0
pom.xml

@@ -106,5 +106,13 @@
             <scope>compile</scope>
         </dependency>
         <!-- apache poi end -->
+
+        <!-- aliyun oss start -->
+        <dependency>
+            <groupId>com.aliyun.oss</groupId>
+            <artifactId>aliyun-sdk-oss</artifactId>
+            <version>3.1.0</version>
+        </dependency>
+        <!-- aliyun oss end -->
     </dependencies>
 </project>