From 4e3a145c822e37f3fa1af0f6ed7f78148fa9003f Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期一, 04 十二月 2023 09:53:41 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/crm/system/controller/AppVersionController.java |   49 +++++++++
 src/main/resources/mapper/AppVersionMapper.xml                       |    3 
 src/main/webapp/static/js/appVersion/appVersion.js                   |  156 +++++++++++++++++++++++++++++++
 src/main/java/com/zy/crm/system/entity/AppVersion.java               |   21 ++++
 src/main/webapp/views/appVersion/appVersion.html                     |   34 ++++++
 5 files changed, 260 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/zy/crm/system/controller/AppVersionController.java b/src/main/java/com/zy/crm/system/controller/AppVersionController.java
index 9cf7eb6..1b632d3 100644
--- a/src/main/java/com/zy/crm/system/controller/AppVersionController.java
+++ b/src/main/java/com/zy/crm/system/controller/AppVersionController.java
@@ -9,8 +9,14 @@
 import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.common.R;
+import com.zy.crm.common.utils.FileSaveExampleUtil;
 import com.zy.crm.common.web.BaseController;
+import com.zy.crm.manager.entity.Plan;
+import com.zy.crm.manager.entity.PlanType;
+import com.zy.crm.manager.entity.PlanUrl;
+import com.zy.crm.manager.entity.PriQuote;
 import com.zy.crm.system.entity.AppVersion;
+import com.zy.crm.system.entity.User;
 import com.zy.crm.system.service.AppVersionService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.io.ClassPathResource;
@@ -213,4 +219,47 @@
             response.setStatus(404);
         }
     }
+
+    @RequestMapping(value = "/appVersion/downloadApp/url/view/file/auth")
+    @ManagerAuth
+    public R viewFile(@RequestParam("appId") String appId){
+        List<FileSaveExampleUtil.FileDTO> fileDTOS = new ArrayList<>();
+        if (Cools.isEmpty(appId)){
+            return R.ok(fileDTOS);
+        }
+        Long id = Long.parseLong(appId);
+        AppVersion appVersion = appVersionService.selectById(id);
+        if (Cools.isEmpty(appVersion.getPath())){
+            return R.ok(fileDTOS);
+        }
+        try{
+            FileSaveExampleUtil.FileDTO fileDTO = new FileSaveExampleUtil.FileDTO(appVersion.getPath(),appVersion.getFileSize(),appVersion.getUrl());
+            fileDTO.setUserName(appVersion.getUserName());
+            fileDTOS.add(fileDTO);
+            return R.ok(fileDTOS);
+        }catch (Exception e){
+            return R.error();
+        }
+    }
+
+    @RequestMapping(value = "/appVersion/downloadApp/url/insert/file/auth")
+    @ManagerAuth
+    public R insertFilePriQuote(@RequestParam("appId") String appId, @RequestParam("filename") String filename,
+                                @RequestParam("filesize") Long filesize) {
+        try {
+            String[] split = appId.split("-");
+            Long id = Long.parseLong(split[1]);
+            AppVersion appVersion = appVersionService.selectById(id);
+            appVersion.setPath(filename);
+            appVersion.setFileSize(filesize);
+            appVersion.setUserName(getUser().getNickname());
+            String url = "http://zhongyang-ftpserver.oss-cn-hangzhou.aliyuncs.com/" + filename;
+            appVersion.setUrl(url);
+            appVersionService.updateById(appVersion);
+            return R.ok();
+        } catch (Exception e) {
+            System.out.println(e);
+            return R.error();
+        }
+    }
 }
diff --git a/src/main/java/com/zy/crm/system/entity/AppVersion.java b/src/main/java/com/zy/crm/system/entity/AppVersion.java
index d7c171e..b80ae5d 100644
--- a/src/main/java/com/zy/crm/system/entity/AppVersion.java
+++ b/src/main/java/com/zy/crm/system/entity/AppVersion.java
@@ -1,5 +1,6 @@
 package com.zy.crm.system.entity;
 
+import com.baomidou.mybatisplus.annotations.TableField;
 import com.baomidou.mybatisplus.annotations.TableId;
 import com.baomidou.mybatisplus.annotations.TableName;
 import com.baomidou.mybatisplus.enums.IdType;
@@ -42,6 +43,26 @@
     @ApiModelProperty(value= "app绫诲瀷 0: pda  1: lcd  ")
     private Integer type;
 
+    /**
+     * app璺緞
+     */
+    @ApiModelProperty(value= "appurl")
+    private String url;
+
+    /**
+     * app璺緞
+     */
+    @ApiModelProperty(value= "appSize")
+    @TableField("file_size")
+    private Long fileSize;
+
+    /**
+     * app璺緞
+     */
+    @ApiModelProperty(value= "userName")
+    @TableField("user_name")
+    private String userName;
+
     public AppVersion() {}
 
     public AppVersion(String version, String path, Integer latest, Integer type) {
diff --git a/src/main/resources/mapper/AppVersionMapper.xml b/src/main/resources/mapper/AppVersionMapper.xml
index 8c26acd..e66e9c4 100644
--- a/src/main/resources/mapper/AppVersionMapper.xml
+++ b/src/main/resources/mapper/AppVersionMapper.xml
@@ -9,6 +9,9 @@
         <result column="path" property="path" />
         <result column="latest" property="latest" />
         <result column="type" property="type" />
+        <result column="url" property="url" />
+        <result column="file_size" property="fileSize" />
+        <result column="user_name" property="userName" />
 
     </resultMap>
 
diff --git a/src/main/webapp/static/js/appVersion/appVersion.js b/src/main/webapp/static/js/appVersion/appVersion.js
index d036a0e..be8531c 100644
--- a/src/main/webapp/static/js/appVersion/appVersion.js
+++ b/src/main/webapp/static/js/appVersion/appVersion.js
@@ -1,7 +1,7 @@
 var pageCurr;
 layui.config({
     base: baseUrl + "/static/layui/lay/modules/"
-}).use(['table','laydate', 'form', 'admin','upload'], function(){
+}).use(['table','laydate', 'form', 'admin','upload',"element", 'xmSelect'], function(){
     var table = layui.table;
     var $ = layui.jquery;
     var layer = layui.layer;
@@ -9,6 +9,7 @@
     var form = layui.form;
     var admin = layui.admin;
     var upload = layui.upload;
+    var element = layui.element;
 
     // 鏁版嵁娓叉煋
     tableIns = table.render({
@@ -59,6 +60,99 @@
             pageCurr=curr;
             limit();
         }
+    });
+    $("#data-btn-file2").on("click", (e) => {
+        $("#data-btn-upload").click()
+    });
+    var _uploadFile = null
+    //鍝嶅簲涓婁紶
+    $("#data-btn-upload").on("change",(evt) => {
+        var files = evt.target.files;
+        if(files==null || files.length==0){
+            alert("No files wait for import");
+            return;
+        }
+
+        var file = files[0]
+
+        var tr = $(['<tr id="upload-">'
+            ,'<td id="upload-filename-id-'+ file.lastModified + '">' + file.name +'</td>'
+            ,'<td>'+ (file.size/1014).toFixed(1) +'kb</td>'
+            ,'<td id="upload-filename-userName-'+ '">' +'</td>'
+            ,'<td id="upload-file-id-' + file.lastModified + '"><div class="layui-progress layui-progress-big" lay-showPercent="true" lay-filter="progress-demo-'+ file.lastModified +'"><div class="layui-progress-bar" lay-percent=""></div></div></td>'
+            ,'<td>'
+            ,'<button class="layui-btn layui-btn-xs demo-reload layui-hide">閲嶄紶</button>'
+            ,'<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">鍒犻櫎</button>'
+            ,'<button id="file-download" class="layui-btn layui-btn-xs demo-reload layui-hide">涓嬭浇</button>'
+            ,'</td>'
+            ,'</tr>'].join(''));
+
+        //鍒犻櫎
+        tr.find('.demo-delete').on('click', function(){
+            tr.remove();
+            $("#data-btn-upload").val("")
+            _uploadFile = null
+        });
+
+        $('#data-btn-file3').append(tr)
+
+        element.progress('progress-demo-'+ file.lastModified, '0%'); //鎵ц杩涘害鏉°��
+        element.init();
+
+        _uploadFile = file
+    })
+
+    //寮�濮嬩笂浼�
+    $("#testListAction").on("click", async (e) => {
+        if (_uploadFile == null) {
+            return false;
+        }
+
+        var index = layer.load(1, {
+            shadeClose: false,
+            title: '涓婁紶涓�..',
+            shade: [0.5,'#000']
+        });
+
+        var file = _uploadFile
+
+        putObject(file,(p) => {
+            element.progress('progress-demo-'+ file.lastModified, (Math.round(p * 100)) + "%"); //鎵ц杩涘害鏉°��
+        }).then((result) => {
+            var filename = result.name
+            layer.msg('涓婁紶鎴愬姛', {icon: 1});
+            $("#upload-file-id-" + file.lastModified).html("涓婁紶鎴愬姛")
+            $("#upload-filename-id-" + file.lastModified).html(filename)
+            let token = localStorage.getItem("token");
+            $.ajax({
+                url: baseUrl+"/appVersion/downloadApp/url/insert/file/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {
+                    'appId': $('.layui-layer-title').text(),
+                    'filename': filename,
+                    'filesize': file.size
+                },
+                method: 'POST',
+                success: function (res) {
+                    if (res.code === 200){
+                        layer.close(index)
+                        // console.log(res)
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    } else {
+                        layer.msg(res.msg)
+                    }
+                }
+            });
+        }).catch((e) => {
+            // console.log(e)
+            layer.msg('涓婁紶澶辫触', {icon: 2});
+            $("#upload-file-id-" + file.lastModified).html("涓婁紶澶辫触")
+        })
+
+        //娓呯┖file
+        $("#data-btn-upload").val("")
+        _uploadFile = null
     });
 
     // 鐩戝惉鎺掑簭浜嬩欢
@@ -136,6 +230,56 @@
     table.on('tool(appVersion)', function(obj){
         var data = obj.data;
         switch (obj.event) {
+            case "uploadLink":
+                // 鎵撳紑寮圭獥
+                // 鏋勫缓甯﹀弬鏁扮殑鍐呭
+                layer.open({
+                    type: 1,
+                    title: '涓婁紶鏂囦欢-'+data.id,
+                    content: $('#myModal')
+                });
+                // 鑾峰彇璺緞涓嬬殑鏂囦欢鍒楄〃锛屼娇鐢� jQuery 鐨� ajax 鏂规硶
+                $.ajax({
+                    url: '/appVersion/downloadApp/url/view/file/auth',
+                    headers: {'token': localStorage.getItem('token')},
+                    data:{
+                        appId:data.id,
+                    },
+                    success: function(response) {
+                        if (response.code==200){
+                            var targetTable = document.getElementById("data-btn-file3");
+                            // var targetTable1 = document.getElementById("layui-layer2");
+                            // // 鑾峰彇鏂囨湰鍐呭
+                            // var text = targetTable1.textContent.trim();
+                            // console.log(text); // 杈撳嚭 '涓婁紶鏂囦欢-20'
+                            targetTable.innerHTML = '';
+                            // 灏嗚幏鍙栧埌鐨勬枃浠跺垪琛ㄦ坊鍔犲埌鏂囦欢闃熷垪涓繘琛屾樉绀�
+                            response.data.forEach(function(file,index) {
+                                // 鍒涘缓tr鍏冪礌
+                                var tr = document.createElement("tr");
+                                tr.id = "upload-"+index;
+                                tr.innerHTML = '<td>' + file.name + '</td>'
+                                    + '<td>' + (file.size / 1024).toFixed(1) + 'kb</td>'
+                                    + '<td>' + file.userName + '</td>'
+                                    // + '<td><div class="layui-progress" lay-filter="progress-demo-' + index ,100 + '%'+ '"><div class="layui-progress-bar" lay-percent=""></div></div></td>'
+                                    + '<td>'+'宸插畬鎴�'+'</td>'
+                                    + '<td>'
+                                    + '<button class="layui-btn layui-btn-xs demo-reload layui-hide">閲嶄紶</button>'
+                                    // + '<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">鍒犻櫎</button>'
+                                    + '<a href="' + file.path + '" download class="layui-btn layui-btn-xs layui-btn-primary">涓嬭浇</a>'
+                                    + '</td>';
+                                // 灏唗r鍏冪礌娣诲姞鍒扮洰鏍噒able涓�
+                                targetTable.appendChild(tr);
+                            });
+                        }else {
+                            console.log('Failed to get file list error.');
+                        }
+                    },
+                    error: function() {
+                        console.log('Failed to get file list.');
+                    }
+                });
+                break;
             case 'edit':
                 showEditModel(data);
                 break;
@@ -183,6 +327,16 @@
         }
     });
 
+    // 鐐瑰嚮涓嬭浇鎸夐挳鏃惰Е鍙戞枃浠朵笅杞�
+    $('#data-btn-file3').on('click', 'a', function() {
+        var downloadUrl = $(this).attr('href');
+        let url = getObjectUrl(downloadUrl)
+        layer.msg("鍑嗗涓嬭浇涓�", {icon: 1});
+        // location.href = url
+        window.open(url)
+        return false;  // 闃绘榛樿鐨勯摼鎺ヨ烦杞涓�
+    });
+
     /* 寮圭獥 - 鏂板銆佷慨鏀� */
     function showEditModel(mData) {
         admin.open({
diff --git a/src/main/webapp/views/appVersion/appVersion.html b/src/main/webapp/views/appVersion/appVersion.html
index e839f80..5f22df0 100644
--- a/src/main/webapp/views/appVersion/appVersion.html
+++ b/src/main/webapp/views/appVersion/appVersion.html
@@ -54,17 +54,47 @@
     </div>
 </script>
 
+<div id="myModal"  style="display: none;">
+    <div style="padding: 10px">
+        <div class="layui-upload">
+            <button type="button" class="layui-btn layui-btn-normal" id="data-btn-file2">閫夋嫨鏂囦欢</button><input id="data-btn-upload" class="layui-upload-file" type="file" accept="" name="file" multiple="">
+            <div class="layui-upload-list" style="max-width: 1000px;height:400px;overflow: scroll">
+                <table class="layui-table">
+                    <colgroup>
+                        <col>
+                        <col width="150">
+                        <col width="260">
+                        <col width="150">
+                    </colgroup>
+                    <thead>
+                    <tr><th>鏂囦欢鍚�</th>
+                        <th>澶у皬</th>
+                        <th>涓婁紶鑰�</th>
+                        <th>涓婁紶杩涘害</th>
+                        <th>鎿嶄綔</th>
+                    </tr></thead>
+                    <tbody id="data-btn-file3"></tbody>
+                </table>
+            </div>
+            <button type="button" class="layui-btn" id="testListAction">寮�濮嬩笂浼�</button>
+        </div>
+    </div>
+</div>
+
 <script type="text/html" id="operate">
-    <a class="layui-btn layui-btn-xs btn-edit" lay-event="upload">涓婁紶APP</a>
-    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="download">涓嬭浇APP</a>
+    <a class="layui-btn layui-btn-xs btn-edit" lay-event="uploadLink">APP鍖�</a>
     <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
     <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
 </script>
 
 <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/js/FileSaver.js"></script>
+<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
 <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
 <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
 <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/layui/lay/modules/cascader/citys-data.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/aliyun-oss-sdk.min.js" charset="utf-8"></script>
 <script type="text/javascript" src="../../static/js/appVersion/appVersion.js" charset="utf-8"></script>
 </body>
 <!-- 琛ㄥ崟寮圭獥 -->

--
Gitblit v1.9.1