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(); + } + } +}