From 74a610733fbcb617dcf926d4f09aa90427110e33 Mon Sep 17 00:00:00 2001 From: huangge1199 Date: Wed, 28 May 2025 16:21:55 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E7=94=A8=E5=B7=A5=E5=85=B7=EF=BC=9A?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E4=B8=8B=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aiagent/Service/ToolsService.java | 2 ++ .../Service/impl/ToolsServiceImpl.java | 6 ++++ .../aiagent/controller/ToolController.java | 11 +++++++ .../aiagent/tools/DownloadTool.java | 31 +++++++++++++++++++ 4 files changed, 50 insertions(+) create mode 100644 src/main/java/com/huangge1199/aiagent/tools/DownloadTool.java diff --git a/src/main/java/com/huangge1199/aiagent/Service/ToolsService.java b/src/main/java/com/huangge1199/aiagent/Service/ToolsService.java index 97f5c89..5e008ec 100644 --- a/src/main/java/com/huangge1199/aiagent/Service/ToolsService.java +++ b/src/main/java/com/huangge1199/aiagent/Service/ToolsService.java @@ -22,4 +22,6 @@ public interface ToolsService { List webScrap(String question); String terminalTool(String command); + + void downloadTool(String url, String name); } diff --git a/src/main/java/com/huangge1199/aiagent/Service/impl/ToolsServiceImpl.java b/src/main/java/com/huangge1199/aiagent/Service/impl/ToolsServiceImpl.java index c8597f8..79d0d46 100644 --- a/src/main/java/com/huangge1199/aiagent/Service/impl/ToolsServiceImpl.java +++ b/src/main/java/com/huangge1199/aiagent/Service/impl/ToolsServiceImpl.java @@ -74,4 +74,10 @@ public class ToolsServiceImpl implements ToolsService { TerminalTool terminalTool = new TerminalTool(); return terminalTool.executeTerminalCommand(command); } + + @Override + public void downloadTool(String url, String name) { + DownloadTool downloadTool = new DownloadTool(); + downloadTool.downloadResource(url, name); + } } diff --git a/src/main/java/com/huangge1199/aiagent/controller/ToolController.java b/src/main/java/com/huangge1199/aiagent/controller/ToolController.java index 54be1a7..ea345cb 100644 --- a/src/main/java/com/huangge1199/aiagent/controller/ToolController.java +++ b/src/main/java/com/huangge1199/aiagent/controller/ToolController.java @@ -86,4 +86,15 @@ public class ToolController { String result = toolsService.terminalTool(command); return R.ok(result); } + + @PostMapping("/downloadTool") + @Operation(summary = "资源下载") + public R downloadTool(@RequestBody JSONObject params) { + String url = params.getStr("url"); + String name = params.getStr("name"); + CheckUtils.checkEmpty(url, "url地址"); + CheckUtils.checkEmpty(name, "文件名"); + toolsService.downloadTool(url, name); + return R.ok(); + } } diff --git a/src/main/java/com/huangge1199/aiagent/tools/DownloadTool.java b/src/main/java/com/huangge1199/aiagent/tools/DownloadTool.java new file mode 100644 index 0000000..ce060ed --- /dev/null +++ b/src/main/java/com/huangge1199/aiagent/tools/DownloadTool.java @@ -0,0 +1,31 @@ +package com.huangge1199.aiagent.tools; + +import cn.hutool.core.io.FileUtil; +import cn.hutool.http.HttpUtil; +import org.springframework.ai.tool.annotation.Tool; +import org.springframework.ai.tool.annotation.ToolParam; + +import java.io.File; + +/** + * DownloadTool + * + * @author huangge1199 + * @since 2025/5/28 16:11:48 + */ +public class DownloadTool { + @Tool(description = "Download a resource from a given URL") + public String downloadResource(@ToolParam(description = "URL of the resource to download") String url, @ToolParam(description = "Name of the file to save the downloaded resource") String fileName) { + String fileDir = FileConstant.FILE_SAVE_DIR + "/download"; + String filePath = fileDir + "/" + fileName; + try { + // 创建目录 + FileUtil.mkdir(fileDir); + // 使用 Hutool 的 downloadFile 方法下载资源 + HttpUtil.downloadFile(url, new File(filePath)); + return "Resource downloaded successfully to: " + filePath; + } catch (Exception e) { + return "Error downloading resource: " + e.getMessage(); + } + } +}