Jelajahi Sumber

代码提交:
1.获取oss文件信息新增临时URL字段;
2.项目保存接口增加保存oss文件信息接口;

sunruiqi 2 tahun lalu
induk
melakukan
3d085f43b0

+ 8 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/oss/domain/WorkAttachment.java

@@ -1,5 +1,6 @@
 package com.jeeplus.test.oss.domain;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.jeeplus.core.domain.BaseEntity;
 import lombok.Data;
@@ -57,4 +58,11 @@ public class WorkAttachment extends BaseEntity {
      * 文件描述
      */
     private String description;
+
+    /**
+     * 附件临时地址
+     *该属性不是实体字段
+     */
+    @TableField(exist = false)
+    private String temporaryUrl;
 }

+ 58 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/oss/service/OssService.java

@@ -2,6 +2,7 @@ package com.jeeplus.test.oss.service;
 
 import cn.hutool.core.collection.CollectionUtil;
 import com.alibaba.fastjson.JSONObject;
+import com.aliyun.oss.OSSClient;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.jeeplus.sys.service.dto.UserDTO;
 import com.jeeplus.sys.utils.UserUtils;
@@ -11,15 +12,35 @@ import com.jeeplus.test.oss.service.dto.OssServiceDto;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.net.URL;
 import java.util.*;
 
 @Slf4j
 @Service
 public class OssService {
 
+    @Value("${config.accessory.aliyun.aliyunUrl}")
+    private String aliyunUrl;
+
+    @Value("${config.accessory.aliyun.aliyunDownloadUrl}")
+    private String aliyunDownloadUrl;
+
+    @Value("${config.accessory.aliyun.endpoint}")
+    private String endpoint;
+
+    @Value("${config.accessory.aliyun.accessKeyId}")
+    private String accessKeyId;
+
+    @Value("${config.accessory.aliyun.accessKeySecret}")
+    private String accessKeySecret;
+
+    @Value("${config.accessory.aliyun.bucketName}")
+    private String bucketName;
+
     @Resource
     private OssServiceMapper ossServiceMapper;
 
@@ -40,7 +61,7 @@ public class OssService {
                 log.info("删除操作完成,共删除{}条数据" , attachmentId);
             }
             log.info("开始执行保存操作,入参:{}" , JSONObject.toJSONString(dtos));
-            //TODO:获取当前登录人信息
+            //获取当前登录人信息
             String id = UserUtils.getCurrentUserDTO().getId();
             int i = 1;
             for (OssServiceDto dto : dtos) {
@@ -90,6 +111,7 @@ public class OssService {
         List<WorkAttachment> list = ossServiceMapper.selectList(lambdaQueryWrapper);
         //创建人和文件名称处理
         if (CollectionUtil.isNotEmpty(list)) {
+            temporaryUrl(list);
             for (WorkAttachment workAttachment : list) {
                 UserDTO userDTO = UserUtils.get(workAttachment.getCreateBy());
                 workAttachment.setCreateBy(userDTO.getName());
@@ -99,4 +121,39 @@ public class OssService {
         log.info("文件查询结束,查询结果:{}" , JSONObject.toJSONString(list));
         return list;
     }
+
+    /**
+     * 生成临时文件
+     * @param list
+     * @return
+     */
+    public List<WorkAttachment> temporaryUrl(List<WorkAttachment> list) {
+        list.stream().forEach(work -> {
+            String url = aliyunUrl+work.getUrl();
+            work.setTemporaryUrl(getFileTemporaryLookUrl(url));
+        });
+        return list;
+    }
+
+    /**
+     * 阿里云获取临时文件查看url
+     * @param url
+     */
+    public String getFileTemporaryLookUrl(String url){
+        url = url.replace("amp;","");
+        String cons = "";
+        if (url.contains(aliyunUrl)){
+            cons = aliyunUrl;
+        }else if (url.contains("http://gangwan-app.oss-cn-hangzhou.aliyuncs.com")){
+            cons = "http://gangwan-app.oss-cn-hangzhou.aliyuncs.com";
+        }else {
+            cons = aliyunDownloadUrl;
+        }
+        String key = url.split(cons+"/")[1];
+        // 指定过期时间为24小时。
+        Date expiration = new Date(new Date().getTime() + 1000 * 60 * 60 * 24 );
+        //初始化OSSClient
+        OSSClient ossClient = new OSSClient(endpoint,accessKeyId,accessKeySecret);
+        return ossClient.generatePresignedUrl(bucketName, key, expiration).toString();
+    }
 }

+ 16 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/projectRecords/controller/ProjectController.java

@@ -1,5 +1,6 @@
 package com.jeeplus.test.projectRecords.controller;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -14,6 +15,8 @@ import com.jeeplus.core.excel.ExportMode;
 import com.jeeplus.core.excel.utils.EasyPoiUtil;
 import com.jeeplus.core.query.QueryWrapperGenerator;
 import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.test.oss.service.OssService;
+import com.jeeplus.test.oss.service.dto.OssServiceDto;
 import com.jeeplus.test.projectRecords.constant.enums.ProjectStatusEnum;
 import com.jeeplus.test.projectRecords.constant.enums.ProjectTypeEnum;
 import com.jeeplus.test.projectRecords.constant.enums.YesOrNoEnum;
@@ -28,12 +31,15 @@ import org.apache.commons.lang3.time.DateUtils;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.ss.usermodel.WorkbookFactory;
+import org.flowable.editor.language.json.converter.util.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
@@ -68,6 +74,9 @@ public class ProjectController {
     @Autowired
     private UserService userService;
 
+    @Resource
+    private OssService ossService;
+
     private int successNum;
 
     @ApiLog("查询项目列表")
@@ -159,6 +168,13 @@ public class ProjectController {
             LambdaUpdateWrapper<Project> wrapper = projectService.getLambdaUpdateWrapper(projectDTO);
             projectService.update (pro,wrapper);//修改
         }
+        //项目id处理
+        List<OssServiceDto> dtos = projectDTO.getDtos();
+        if (CollectionUtils.isNotEmpty(dtos)) {
+            dtos.stream().forEach(i -> {i.setAttachmentId(project.getId());});
+            //oss上传文件相关
+            ossService.saveMsg(projectDTO.getDtos());
+        }
 
         return ResponseEntity.ok ("保存项目成功");
     }

+ 7 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/projectRecords/service/dto/ProjectDTO.java

@@ -2,10 +2,12 @@ package com.jeeplus.test.projectRecords.service.dto;
 
 import cn.afterturn.easypoi.excel.annotation.Excel;
 import com.jeeplus.core.service.dto.BaseDTO;
+import com.jeeplus.test.oss.service.dto.OssServiceDto;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.util.Date;
+import java.util.List;
 
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -261,5 +263,10 @@ public class ProjectDTO extends BaseDTO {
         super(id);
     }
 
+    /**
+     * oss上传文件相关数据
+     */
+    public List<OssServiceDto> dtos;
+
 
 }

+ 8 - 8
jeeplus-web/src/main/resources/application-development.yml

@@ -47,10 +47,8 @@ spring:
       datasource:
         master:
           username: root
-#          password: 123456
           password: root
-          url: jdbc:mysql://192.168.2.4/assess_process_master?allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8&useSSL=false&nullCatalogMeansCurrent=true&serverTimezone=Asia/Shanghai
-#          url: jdbc:mysql://127.0.0.1:3306/jeeplus-vue-base?useUnicode=true&characterEncoding=utf-8&useSSL=false&nullCatalogMeansCurrent=true&serverTimezone=Asia/Shanghai
+          url: jdbc:mysql://192.168.2.4:3306/assess_process_master?useUnicode=true&characterEncoding=utf-8&useSSL=false&nullCatalogMeansCurrent=true&serverTimezone=Asia/Shanghai
           driver-class-name: com.mysql.cj.jdbc.Driver
 
           #oracle database settings
@@ -87,7 +85,7 @@ spring:
     port: 6379
     expireTime: 3600000 #单位秒
     database: 1
-#    password: 123456
+    password:
   mvc.servlet.load-on-startup: 1
   jmx:
     enabled: false
@@ -159,10 +157,12 @@ config:
     local:
       location: d:\\accessory
     aliyun:
-      endpoint: oss-cn-hangzhou.aliyuncs.com
-      accessKeyId: LTAI4Fhraue2ayc1KQMkZz5F
-      accessKeySecret: hMpiD9KXcuWNMgzZxFt1fXK0gRMR70
-      bucketName: testajgw
+      aliyunUrl: http://oss.gangwaninfo.com
+      aliyunDownloadUrl: http://cdn.gangwaninfo.com
+      endpoint: http://oss-cn-hangzhou.aliyuncs.com
+      accessKeyId: LTAI5tQDWoM9c1WyJNPs86rX
+      accessKeySecret: 84dDIx4edT1n78KUOqqSmDZ35pchJv
+      bucketName: xgxm-test
     minIO:
       endpoint:
       accessKey: