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