From 56cdd668ee42bc1ee38ccbe8c51dcd80e5dfdd95 Mon Sep 17 00:00:00 2001 From: Vinjor Date: Tue, 26 Aug 2025 15:46:35 +0800 Subject: [PATCH] 1 --- .../ruoyi/base/controller/WebController.java | 48 +++++++++++++++++++ .../java/com/ruoyi/base/domain/BaseApp.java | 6 +-- .../java/com/ruoyi/constant/StrConstants.java | 4 ++ .../resources/mapper/base/BaseAppMapper.xml | 5 +- dl_vue/src/views/base/app/index.vue | 16 +------ 5 files changed, 57 insertions(+), 22 deletions(-) diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/WebController.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/WebController.java index c41baa6..cc80c30 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/WebController.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/WebController.java @@ -24,6 +24,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.constant.StrConstants; import com.ruoyi.system.service.ISysDictDataService; import com.ruoyi.webSocket.Message; import io.swagger.annotations.Api; @@ -36,12 +37,17 @@ import org.springframework.web.HttpRequestHandler; import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.OutputStream; import java.util.*; import static com.ruoyi.constant.DictConstants.*; import static com.ruoyi.constant.DictConstants.CATG_TYPE_WZ; +import static com.ruoyi.constant.StrConstants.UPLOAD_DIR; /** * Web 专用Controller @@ -502,4 +508,46 @@ public class WebController extends BaseController { public R getNewApp() { return R.ok(appService.selectNewApp()); } + + @ApiOperation("下载APK文件") + @GetMapping("/downloadApk") + public void downloadApk(HttpServletResponse response) { + try { + // APK文件路径 + File file = new File(UPLOAD_DIR); + + // 检查文件是否存在 + if (!file.exists()) { + response.setStatus(HttpServletResponse.SC_NOT_FOUND); + response.getWriter().write("文件不存在"); + return; + } + + // 设置响应头 + response.setContentType("application/vnd.android.package-archive"); + response.setHeader("Content-Disposition", "attachment; filename=truck.apk"); + response.setHeader("Content-Length", String.valueOf(file.length())); + + // 写入响应流 + FileInputStream fis = new FileInputStream(file); + OutputStream os = response.getOutputStream(); + + byte[] buffer = new byte[1024]; + int bytesRead; + while ((bytesRead = fis.read(buffer)) != -1) { + os.write(buffer, 0, bytesRead); + } + + fis.close(); + os.flush(); + os.close(); + } catch (Exception e) { + try { + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + response.getWriter().write("文件下载失败: " + e.getMessage()); + } catch (Exception ex) { + logger.error("下载APK文件时发生错误", ex); + } + } + } } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/domain/BaseApp.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/domain/BaseApp.java index 5e51028..4483bc7 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/domain/BaseApp.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/domain/BaseApp.java @@ -31,11 +31,7 @@ public class BaseApp extends DlBaseEntity /** 版本 */ @Excel(name = "版本") - private BigDecimal version; - - /** app包下载地址 */ - @Excel(name = "app包下载地址") - private String apkUrl; + private String version; /** 本次升级描述 */ @Excel(name = "本次升级描述") diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/constant/StrConstants.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/constant/StrConstants.java index 2fa5edf..8b29541 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/constant/StrConstants.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/constant/StrConstants.java @@ -36,4 +36,8 @@ public class StrConstants { * 国家 */ public static final String COUNTRY = "country"; + /** + * app下载目录 + */ + public static final String UPLOAD_DIR = "/app/apk/truck.apk"; } diff --git a/dl_admin/ruoyi-admin/src/main/resources/mapper/base/BaseAppMapper.xml b/dl_admin/ruoyi-admin/src/main/resources/mapper/base/BaseAppMapper.xml index b53d06f..560aa22 100644 --- a/dl_admin/ruoyi-admin/src/main/resources/mapper/base/BaseAppMapper.xml +++ b/dl_admin/ruoyi-admin/src/main/resources/mapper/base/BaseAppMapper.xml @@ -7,7 +7,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - @@ -17,7 +16,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id, version, apk_url, content, creator, create_time, updater, update_time, del_flag from dl_base_app + select id, version, content, creator, create_time, updater, update_time, del_flag from dl_base_app \ No newline at end of file diff --git a/dl_vue/src/views/base/app/index.vue b/dl_vue/src/views/base/app/index.vue index 9148de4..69e26fc 100644 --- a/dl_vue/src/views/base/app/index.vue +++ b/dl_vue/src/views/base/app/index.vue @@ -33,12 +33,7 @@ - - - @@ -74,10 +69,7 @@ - - - - + @@ -130,9 +122,6 @@ export default { version: [ { required: true, message: '请输入版本号', trigger: 'blur' } ], - apkUrl: [ - { required: true, message: '请上传程序包', trigger: 'blur' } - ], } }; }, @@ -159,7 +148,6 @@ export default { this.form = { id: null, version: null, - apkUrl: null, content: null, creator: null, createTime: null,