From 62a399b547c3bd8c7081f7470ce66a6e17cf6d6f Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期四, 29 一月 2026 16:33:17 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/controller/ApkBuildTaskController.java |   46 +++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 45 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/ApkBuildTaskController.java b/src/main/java/com/zy/asrs/controller/ApkBuildTaskController.java
index c8edf43..b6e12cc 100644
--- a/src/main/java/com/zy/asrs/controller/ApkBuildTaskController.java
+++ b/src/main/java/com/zy/asrs/controller/ApkBuildTaskController.java
@@ -1,5 +1,6 @@
 package com.zy.asrs.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.plugins.Page;
@@ -13,6 +14,13 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
@@ -89,8 +97,10 @@
     public R triggerBuild(@RequestBody JSONObject param) {
         try {
             String buildType = param.getString("buildType");
+            String androidTarget = param.getString("android_target");
             String repoAlias = param.getString("repoAlias");
             String branch = param.getString("branch");
+            String serverUrl = param.getString("server_url");
 
             if (Cools.isEmpty(buildType)) {
                 buildType = "release";
@@ -102,7 +112,7 @@
                 branch = "master";
             }
 
-            ApkBuildTask task = apkBuildTaskService.triggerBuild(buildType, repoAlias, branch);
+            ApkBuildTask task = apkBuildTaskService.triggerBuild(buildType, androidTarget, repoAlias, branch, serverUrl);
             return R.ok(task);
         } catch (Exception e) {
             return R.error("鎵撳寘浠诲姟鍒涘缓澶辫触: " + e.getMessage());
@@ -160,6 +170,40 @@
         }
     }
 
+    @RequestMapping(value = "/apkBuildTask/downloadFile/{id}/auth", method = RequestMethod.GET)
+    @ManagerAuth
+    public void downloadApkFile(@PathVariable("id") Long id, HttpServletResponse response) {
+        try {
+            String localPath = apkBuildTaskService.downloadApk(id);
+            File file = new File(localPath);
+            if (!file.exists()) {
+                throw new RuntimeException("APK鏂囦欢涓嶅瓨鍦�");
+            }
+            String fileName = URLEncoder.encode(file.getName(), "UTF-8");
+            response.setContentType("application/vnd.android.package-archive");
+            response.setCharacterEncoding("utf-8");
+            response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
+            response.setHeader("Content-Length", String.valueOf(file.length()));
+            try (InputStream inputStream = new FileInputStream(file);
+                 OutputStream outputStream = response.getOutputStream()) {
+                byte[] buffer = new byte[8192];
+                int len;
+                while ((len = inputStream.read(buffer)) != -1) {
+                    outputStream.write(buffer, 0, len);
+                }
+                outputStream.flush();
+            }
+        } catch (Exception e) {
+            try {
+                response.reset();
+                response.setCharacterEncoding("utf-8");
+                response.setContentType("application/json; charset=utf-8");
+                response.getWriter().print(JSON.toJSONString(R.error("涓嬭浇APK澶辫触: " + e.getMessage())));
+            } catch (IOException ignore) {
+            }
+        }
+    }
+
     /**
      * 閫氳繃ADB瀹夎APK鍒版寚瀹氳澶�
      */

--
Gitblit v1.9.1