Forráskód Böngészése

新增360浏览器和IM客户端下载功能

- 在 HuaduConfig 和 WorkProConfig 中添加浏览器和客户端目录配置
- 实现浏览器和客户端的下载功能
- 在登录页面添加浏览器下载链接
- 优化文件下载过程中的错误处理
wanyuan 4 hónapja
szülő
commit
3da2a89799

+ 5 - 2
tip-api/src/main/java/com/minto/app/organization/huadu/config/HuaduConfig.java

@@ -27,6 +27,8 @@ public class HuaduConfig{
 
     private String defaultPassword;
 
+    private String browserDir;
+
 
     private HuaduConfig(){
     }
@@ -44,10 +46,11 @@ public class HuaduConfig{
                     INSTANCE.setAppSecret(instance.getProperty("huadu.appSecret"));
                     String defaultPwd = instance.getProperty("huadu.user.password");
                     INSTANCE.setDefaultPassword(StringUtils.isBlank(defaultPwd) ? "123456" : defaultPwd);
+                    INSTANCE.setBrowserDir(instance.getProperty("huadu.browser.dir"));
+
                 }
             }
-        }
-        return INSTANCE;
+        } return INSTANCE;
     }
 
     public boolean enable(){

+ 3 - 0
tip-api/src/main/java/com/minto/app/organization/workpro/config/WorkProConfig.java

@@ -35,6 +35,8 @@ public class WorkProConfig{
 
     private String defaultPassword;
 
+    private String clientDir;
+
 
     private WorkProConfig(){
     }
@@ -57,6 +59,7 @@ public class WorkProConfig{
                     INSTANCE.setPassword(instance.getProperty("workpro.admin.password"));
                     String defaultPwd = instance.getProperty("workpro.user.password");
                     INSTANCE.setDefaultPassword(StringUtils.isBlank(defaultPwd) ? "123456" : defaultPwd);
+                    INSTANCE.setClientDir(instance.getProperty("workpro.client.dir"));
                 }
             }
         }

+ 49 - 1
tip-front/src/main/java/com/minto/app/organization/HuaDuDocController.java

@@ -1,14 +1,23 @@
 package com.minto.app.organization;
 
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.HashMap;
 import java.util.Map;
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import com.minto.app.organization.huadu.IHuaduDocService;
+import com.minto.app.organization.huadu.config.HuaduConfig;
 import com.minto.app.organization.workpro.controller.WorkproController;
 import com.minto.core.common.AppContext;
 import com.minto.core.util.RespUtil;
+import com.minto.core.util.annotation.NeedlessCheckLogin;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,7 +35,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 @Controller
 @RequestMapping("/huadu")
 public class HuaDuDocController{
-    private static final Logger          log = LoggerFactory.getLogger(WorkproController.class);
+    private static final Logger log = LoggerFactory.getLogger(WorkproController.class);
 
     @Autowired
     private IHuaduDocService huaDuDocService;
@@ -45,4 +54,43 @@ public class HuaDuDocController{
             RespUtil.rendJson(response, res);
         }
     }
+
+    @GetMapping("/browser/download")
+    @NeedlessCheckLogin
+    public void download(HttpServletRequest request, HttpServletResponse response) throws IOException{
+        //新的文件目录
+        String filePath = HuaduConfig.getInstance().getBrowserDir();
+        if(StringUtils.isEmpty(filePath)){
+            response.sendError(HttpServletResponse.SC_NOT_FOUND, "文件路径未配置,找不到对应文件!");
+            return;
+        }
+        // 默认统信uos系统
+        // 默认统信uos系统
+        String fileName = "signed_com.360.browser-stable_13.3.1012.21-1_arm64.deb";
+        String realPath = filePath + fileName;
+
+        // 检查文件是否存在
+        Path path = Paths.get(realPath);
+        if(!Files.exists(path)){
+            response.sendError(HttpServletResponse.SC_NOT_FOUND, "文件不存在!");
+            return;
+        }
+
+        // 设置响应头
+        response.setContentType("application/octet-stream");
+        response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
+
+        // 流式传输文件
+        try(InputStream in = Files.newInputStream(path); OutputStream out = response.getOutputStream()){
+            byte[] buffer = new byte[4096];
+            int bytesRead;
+            while((bytesRead = in.read(buffer)) != -1){
+                out.write(buffer, 0, bytesRead);
+            }
+        } catch(IOException e){
+            response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Error reading file");
+            log.error("Error reading file", e);
+        }
+
+    }
 }

+ 15 - 5
tip-front/src/main/java/com/minto/app/organization/workpro/controller/WorkproController.java

@@ -16,6 +16,7 @@ import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import com.minto.app.organization.workpro.config.WorkProConfig;
 import com.minto.app.organization.workpro.service.IWorkProService;
 import com.minto.core.common.AppContext;
 import com.minto.core.util.ReqUtil;
@@ -135,15 +136,20 @@ public class WorkproController{
 
     @GetMapping("/client/download")
     @NeedlessCheckLogin
-    public void download(HttpServletRequest request,HttpServletResponse response) throws IOException{
-        String userAgent = request.getHeader("User-Agent");
-        String filePath = "/WEB-INF/lib/";
-        //默认统信uos系统
+    public void download(HttpServletRequest request, HttpServletResponse response) throws IOException{
+        //新的文件目录
+        String filePath = WorkProConfig.getInstance().getClientDir();
+        if(StringUtils.isEmpty(filePath)){
+            response.sendError(HttpServletResponse.SC_NOT_FOUND, "文件路径未配置,找不到对应文件!");
+            return;
+        }
+        // 默认统信uos系统
         String fileName = "WorkPro.2.3.09_aarch64_20240925.deb";
+        String userAgent = request.getHeader("User-Agent");
         if(userAgent.contains("Windows NT")){
             fileName = "WorkProClient_Setup_V2.3.09.1800-20240719.exe";
         }
-        String realPath = servletContext.getRealPath(filePath + fileName);
+        String realPath = filePath + fileName;
 
         // 检查文件是否存在
         Path path = Paths.get(realPath);
@@ -163,6 +169,10 @@ public class WorkproController{
             while((bytesRead = in.read(buffer)) != -1){
                 out.write(buffer, 0, bytesRead);
             }
+        } catch(IOException e){
+            response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Error reading file");
+            log.error("Error reading file", e);
         }
+
     }
 }

+ 2 - 1
tip-front/src/main/webapp/WEB-INF/pages/tip/main/login.html

@@ -139,8 +139,9 @@
                          :src="baseUrl + qrCodeImg" @error="qrCodeImgError()">
                 </div>
             </div>-->
-            <div class="checkbox-content" style="margin-top: 5rem">
+            <div class="checkbox-content" style="margin-top: 5rem;display: flex;align-items: center;justify-content:space-between">
                 <a :href="baseUrl+'/workpro/client/download'">点击下载IM客户端</a>
+                <a :href="baseUrl+'/huadu/browser/download'">点击下载360浏览器</a>
             </div>
         </div>