From dc4a121795188febcc60ef39346c519c852b6c93 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 06 十一月 2023 15:11:36 +0800
Subject: [PATCH] #

---
 src/main/webapp/static/js/contract/contract.js                      |   44 +++++++-------
 src/main/java/com/zy/crm/manager/controller/PlanController.java     |    3 
 src/main/java/com/zy/crm/manager/controller/ContractController.java |   15 ++---
 src/main/webapp/static/js/plan/plan.js                              |    4 +
 src/main/java/com/zy/crm/common/service/OssService.java             |   97 +++++++++----------------------
 5 files changed, 60 insertions(+), 103 deletions(-)

diff --git a/src/main/java/com/zy/crm/common/service/OssService.java b/src/main/java/com/zy/crm/common/service/OssService.java
index 1472c11..fcd156e 100644
--- a/src/main/java/com/zy/crm/common/service/OssService.java
+++ b/src/main/java/com/zy/crm/common/service/OssService.java
@@ -21,6 +21,7 @@
 import java.io.*;
 import java.net.URL;
 import java.nio.file.Path;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.nio.file.StandardCopyOption;
 import java.nio.file.Files;
@@ -88,18 +89,16 @@
     }
 
     @Deprecated
-    public String upload(InputStream inputStream, String suffix,String contentType){
-        if(suffix.trim().equals("file")){
-            suffix="jpg";
-        }
+    public String upload(InputStream inputStream, String filename, String contentType) {
         OSSClient ossClient = new OSSClient(OSS_ENDPOINT, accessKeyId, accessKeySecret);
         String name = "";
         try {
             if (!ossClient.doesBucketExist(bucket)) {
                 ossClient.createBucket(bucket);
-                log.info("鎮ㄧ殑Bucket涓嶅瓨鍦紝鍒涘缓Bucket锛歿}",bucket);
+                log.info("鎮ㄧ殑Bucket涓嶅瓨鍦紝鍒涘缓Bucket锛歿}", bucket);
             }
-            name = String.valueOf(snowflakeIdWorker.nextId()).concat(".").concat(suffix);
+            SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd_HHmmss");
+            name = format.format(new Date()) + "_" + filename;
             // 娣诲姞 ContentType
             ObjectMetadata objectMetadata = new ObjectMetadata();
 //            objectMetadata.setContentType("image/jpg");
@@ -109,8 +108,8 @@
             URL url = ossClient.generatePresignedUrl(bucket, name, expiration);
             log.info("OSS鏂囦欢涓婁紶鎴愬姛: {}", name);
 //            return String.valueOf(url);
-            return "http://zhongyang-ftpserver.oss-cn-hangzhou.aliyuncs.com/"+name;
-        } catch (Exception e){
+            return "http://zhongyang-ftpserver.oss-cn-hangzhou.aliyuncs.com/" + name;
+        } catch (Exception e) {
             e.printStackTrace();
         } finally {
             ossClient.shutdown();
@@ -137,24 +136,24 @@
         return true;
     }
 
-    /**
-     * 涓嬭浇鏂囦欢
-     * @param filePath OSS璺緞
-     */
-    public ResponseEntity<InputStreamResource> downloadFile(String filePath) throws IOException {
-        OSSClient ossClient = new OSSClient(OSS_ENDPOINT, accessKeyId, accessKeySecret);
-        OSSObject ossObject = ossClient.getObject(bucket, filePath);
-        InputStream inputStream = ossObject.getObjectContent();
-
-        // 鍒涘缓鍝嶅簲瀹炰綋锛屽皢杈撳嚭娴佷綔涓烘枃浠跺唴瀹硅繑鍥�
-        HttpHeaders headers = new HttpHeaders();
-        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
-        headers.setContentDispositionFormData("attachment", "output.docx");
-        InputStreamResource resource = new InputStreamResource(convertToByteArrayInputStream(inputStream));
-        return ResponseEntity.ok()
-                .headers(headers)
-                .body(resource);
-    }
+//    /**
+//     * 涓嬭浇鏂囦欢
+//     * @param filePath OSS璺緞
+//     */
+//    public ResponseEntity<InputStreamResource> downloadFile(String filePath) throws IOException {
+//        OSSClient ossClient = new OSSClient(OSS_ENDPOINT, accessKeyId, accessKeySecret);
+//        OSSObject ossObject = ossClient.getObject(bucket, filePath);
+//        InputStream inputStream = ossObject.getObjectContent();
+//
+//        // 鍒涘缓鍝嶅簲瀹炰綋锛屽皢杈撳嚭娴佷綔涓烘枃浠跺唴瀹硅繑鍥�
+//        HttpHeaders headers = new HttpHeaders();
+//        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
+//        headers.setContentDispositionFormData("attachment", "output.docx");
+//        InputStreamResource resource = new InputStreamResource(convertToByteArrayInputStream(inputStream));
+//        return ResponseEntity.ok()
+//                .headers(headers)
+//                .body(resource);
+//    }
 
     public static ByteArrayInputStream convertToByteArrayInputStream(InputStream inputStream) throws IOException {
         ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
@@ -167,51 +166,13 @@
         return new ByteArrayInputStream(data);
     }
 
-    /**
-     * 涓嬭浇OSS鏂囦欢
-     */
-//    public void download(String name) {
-//        OSSClient ossClient = new OSSClient(OSS_ENDPOINT, accessKeyId, accessKeySecret);
-//        try {
-//            OSSObject ossObject = ossClient.getObject(bucket, name);
-//            InputStream inputStream = ossObject.getObjectContent();
-//            // do transfer
-//            inputStream.close();
-//            log.info("OSS鏂囦欢涓嬭浇鎴愬姛: {}", name);
-//        } catch (Exception e){
-//            e.printStackTrace();
-//        } finally {
-//            ossClient.shutdown();
-//        }
-//    }
-
     @Deprecated
     public String download(String name) {
         OSSClient ossClient = new OSSClient(OSS_ENDPOINT, accessKeyId, accessKeySecret);
-        try {
-            OSSObject ossObject = ossClient.getObject(bucket, name);
-            InputStream inputStream = ossObject.getObjectContent();
-
-            // 鑾峰彇榛樿涓嬭浇鐩綍
-            String defaultDownloadDir = System.getProperty("user.home") + "/Downloads";
-
-            // 鍒涘缓鏂囦欢淇濆瓨璺緞
-            Path filePath = Paths.get(defaultDownloadDir, name);
-
-            // 灏嗚緭鍏ユ祦澶嶅埗鍒版枃浠�
-            Files.copy(inputStream, filePath, StandardCopyOption.REPLACE_EXISTING);
-
-            // 鍏抽棴杈撳叆娴�
-            inputStream.close();
-
-            log.info("OSS鏂囦欢涓嬭浇鎴愬姛锛屼繚瀛樿矾寰�: {}", filePath);
-            return ""+filePath;
-        } catch (Exception e) {
-            e.printStackTrace();
-        } finally {
-            ossClient.shutdown();
-        }
-        return "";
+        //鑾峰彇涓存椂涓嬭浇閾炬帴
+        URL url = ossClient.generatePresignedUrl(bucket, name, new Date(new Date().getTime() + 3600 * 1000));
+        log.info("OSS鏂囦欢涓存椂涓嬭浇璺緞锛孶RL璺緞: {}", url);
+        return url.toString();
     }
 
     /**
diff --git a/src/main/java/com/zy/crm/manager/controller/ContractController.java b/src/main/java/com/zy/crm/manager/controller/ContractController.java
index 4ec0053..573a275 100644
--- a/src/main/java/com/zy/crm/manager/controller/ContractController.java
+++ b/src/main/java/com/zy/crm/manager/controller/ContractController.java
@@ -271,7 +271,7 @@
         //鏂囦欢鍚庣紑鍚�
         String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
         //涓婁紶鏂囦欢鍚�
-        String filename = format.format(new Date()) + suffix;
+        String filename = format.format(new Date()) + "_" + file.getOriginalFilename();
         //鏈�缁堟枃浠惰矾寰�
         String filepath = path + "/" + filename;
         //OSS鏂囦欢瀛樺偍璺緞
@@ -299,20 +299,17 @@
 
     @RequestMapping(value = "/contract/download/auth")
     @ManagerAuth(memo = "涓嬭浇鍚堝悓")
-    public ResponseEntity<InputStreamResource> download(@RequestParam("id") Integer id) {
+    public R download(@RequestParam("id") Integer id) {
         Contract contract = contractService.selectById(id);
         if (contract == null) {
-            return null;
+            return R.error();
         }
         if (Cools.isEmpty(contract.getFilepath())) {
-            return null;
+            return R.error();
         }
 
-        try {
-            return ossService.downloadFile(contract.getFilepath());//浠嶰SS涓笅杞芥枃浠�
-        } catch (Exception e) {
-            return null;
-        }
+        String download = ossService.download(contract.getFilepath());//鑾峰彇OSS涓存椂涓嬭浇URL
+        return R.ok().add(download);
     }
 
     @RequestMapping(value = "/contract/export/auth")
diff --git a/src/main/java/com/zy/crm/manager/controller/PlanController.java b/src/main/java/com/zy/crm/manager/controller/PlanController.java
index eb74659..c6bf694 100644
--- a/src/main/java/com/zy/crm/manager/controller/PlanController.java
+++ b/src/main/java/com/zy/crm/manager/controller/PlanController.java
@@ -262,8 +262,7 @@
             InputStream inputStream = file.getInputStream();
             // 鑾峰彇鏂囦欢鐨勫唴瀹圭被鍨�
             String contentType = file.getContentType();
-            String suffix = getFileSuffix(file.getOriginalFilename());
-            String url = ossService.upload(inputStream, suffix,contentType);
+            String url = ossService.upload(inputStream, file.getOriginalFilename(), contentType);
 //            String url = "http://tjdt.oss-cn-hangzhou.aliyuncs.com/"+file.getOriginalFilename();
             String[] names = url.split("com/");
             String name= names[1];
diff --git a/src/main/webapp/static/js/contract/contract.js b/src/main/webapp/static/js/contract/contract.js
index 564887d..48362f9 100644
--- a/src/main/webapp/static/js/contract/contract.js
+++ b/src/main/webapp/static/js/contract/contract.js
@@ -432,30 +432,28 @@
             headers: {'token': localStorage.getItem('token')},
             data: data,
             method: 'GET',
-            xhrFields: {
-                responseType: "blob" // 璁剧疆鍝嶅簲绫诲瀷涓轰簩杩涘埗鏁版嵁
-            },
             success: function (res) {
-                // 鍒涘缓涓�涓复鏃剁殑涓嬭浇閾炬帴
-                const url = window.URL.createObjectURL(res);
-                // 鍒涘缓涓�涓殣钘忕殑 <a> 鍏冪礌骞惰缃笅杞介摼鎺�
-                const a = document.createElement("a");
-                a.style.display = "none";
-                a.href = url;
-
-                let list = data.filepath.split(".")
-                let suffix = "." + list[list.length - 1]//鑾峰彇鍚庣紑鍚�
-                a.download = data.name + suffix; // 鎸囧畾涓嬭浇鐨勬枃浠跺悕
-                document.body.appendChild(a);
-
-                // 瑙﹀彂鐐瑰嚮浜嬩欢浠ュ紑濮嬩笅杞�
-                a.click();
-
-                // 娓呯悊涓存椂璧勬簮
-                setTimeout(function () {
-                    window.URL.revokeObjectURL(url);
-                    document.body.removeChild(a);
-                }, 100);
+                location.href = res.data
+                // // 鍒涘缓涓�涓复鏃剁殑涓嬭浇閾炬帴
+                // const url = window.URL.createObjectURL(res);
+                // // 鍒涘缓涓�涓殣钘忕殑 <a> 鍏冪礌骞惰缃笅杞介摼鎺�
+                // const a = document.createElement("a");
+                // a.style.display = "none";
+                // a.href = url;
+                //
+                // let list = data.filepath.split(".")
+                // let suffix = "." + list[list.length - 1]//鑾峰彇鍚庣紑鍚�
+                // a.download = data.name + suffix; // 鎸囧畾涓嬭浇鐨勬枃浠跺悕
+                // document.body.appendChild(a);
+                //
+                // // 瑙﹀彂鐐瑰嚮浜嬩欢浠ュ紑濮嬩笅杞�
+                // a.click();
+                //
+                // // 娓呯悊涓存椂璧勬簮
+                // setTimeout(function () {
+                //     window.URL.revokeObjectURL(url);
+                //     document.body.removeChild(a);
+                // }, 100);
             }
         });
     }
diff --git a/src/main/webapp/static/js/plan/plan.js b/src/main/webapp/static/js/plan/plan.js
index 518566f..f85a6bc 100644
--- a/src/main/webapp/static/js/plan/plan.js
+++ b/src/main/webapp/static/js/plan/plan.js
@@ -646,7 +646,9 @@
             data: { downloadUrl: downloadUrl },  // 浼犻�掍笅杞介摼鎺ヤ綔涓哄弬鏁�
             success: function(response) {
                 console.log(response)
-                layer.msg(response.msg+',宸蹭笅杞借嚦榛樿璺緞锛佽缁嗕笅杞借矾寰勶細'+response.data, {icon: 1});
+                // layer.msg(response.msg+',宸蹭笅杞借嚦榛樿璺緞锛佽缁嗕笅杞借矾寰勶細'+response.data, {icon: 1});
+                layer.msg(response.msg, {icon: 1});
+                location.href = response.data
         //         // window.open(baseUrl+response.msg)
         //         // 鍒涘缓涓�涓狟lob瀵硅薄
         //         var blob = new Blob([response]);

--
Gitblit v1.9.1