From 736673ede8ccd2dac27f297520f02bf33eb557ab Mon Sep 17 00:00:00 2001 From: vivid <2390310671@qq.com> Date: Sun, 20 Jul 2025 11:54:42 +0800 Subject: [PATCH] =?UTF-8?q?feat(dify):=20=E5=90=88=E5=B9=B6=E7=88=AC?= =?UTF-8?q?=E8=99=AB1=E5=92=8C3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dify/common/strategy/SpiderStrategy.java | 12 +++++ .../factory/SpiderStrategyFactory.java | 35 +++++++++++++ .../strategy/impl/Spider1StrategyImpl.java | 43 ++++++++++++++++ .../strategy/impl/Spider3StrategyImpl.java | 29 +++++++++++ .../dify/controller/SpiderController.java | 50 +++++++------------ .../{UserMapper.xml => SpiderStrategy.xml} | 0 6 files changed, 138 insertions(+), 31 deletions(-) create mode 100644 src/main/java/com/zsc/edu/dify/common/strategy/SpiderStrategy.java create mode 100644 src/main/java/com/zsc/edu/dify/common/strategy/factory/SpiderStrategyFactory.java create mode 100644 src/main/java/com/zsc/edu/dify/common/strategy/impl/Spider1StrategyImpl.java create mode 100644 src/main/java/com/zsc/edu/dify/common/strategy/impl/Spider3StrategyImpl.java rename src/main/resources/mappers/system/{UserMapper.xml => SpiderStrategy.xml} (100%) diff --git a/src/main/java/com/zsc/edu/dify/common/strategy/SpiderStrategy.java b/src/main/java/com/zsc/edu/dify/common/strategy/SpiderStrategy.java new file mode 100644 index 0000000..a58d388 --- /dev/null +++ b/src/main/java/com/zsc/edu/dify/common/strategy/SpiderStrategy.java @@ -0,0 +1,12 @@ +package com.zsc.edu.dify.common.strategy; + +import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.zsc.edu.dify.modules.dify.dto.SpiderDto; + +public interface SpiderStrategy { + + JSONObject run(SpiderDto dto) throws JsonProcessingException; + + String getUrl(); +} diff --git a/src/main/java/com/zsc/edu/dify/common/strategy/factory/SpiderStrategyFactory.java b/src/main/java/com/zsc/edu/dify/common/strategy/factory/SpiderStrategyFactory.java new file mode 100644 index 0000000..e991de8 --- /dev/null +++ b/src/main/java/com/zsc/edu/dify/common/strategy/factory/SpiderStrategyFactory.java @@ -0,0 +1,35 @@ +package com.zsc.edu.dify.common.strategy.factory; + +import com.zsc.edu.dify.common.strategy.SpiderStrategy; +import com.zsc.edu.dify.exception.NotExistException; +import jakarta.annotation.PostConstruct; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component +public class SpiderStrategyFactory { + + @Autowired + private List spiderUrlStrategyList; + + private final Map spiderUrlStrategyMap = new HashMap<>(); + + @PostConstruct + public void init() { + spiderUrlStrategyMap.put("1", spiderUrlStrategyList.get(0)); + spiderUrlStrategyMap.put("3", spiderUrlStrategyList.get(1)); + } + + public SpiderStrategy getSpiderStrategy(String strategyName) { + SpiderStrategy spiderUrlStrategy = spiderUrlStrategyMap.get(strategyName); + if (spiderUrlStrategy == null) { + throw new NotExistException(SpiderStrategy.class); + } + return spiderUrlStrategy; + } + +} diff --git a/src/main/java/com/zsc/edu/dify/common/strategy/impl/Spider1StrategyImpl.java b/src/main/java/com/zsc/edu/dify/common/strategy/impl/Spider1StrategyImpl.java new file mode 100644 index 0000000..a2746dc --- /dev/null +++ b/src/main/java/com/zsc/edu/dify/common/strategy/impl/Spider1StrategyImpl.java @@ -0,0 +1,43 @@ +package com.zsc.edu.dify.common.strategy.impl; + +import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.zsc.edu.dify.common.strategy.SpiderStrategy; +import com.zsc.edu.dify.modules.dify.dto.SpiderDto; +import jakarta.annotation.Resource; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Component; +import org.springframework.web.reactive.function.client.WebClient; + +@Component("spider1") +public class Spider1StrategyImpl implements SpiderStrategy { + + @Value("${quanguo.url}") + private String SPIDER_URL; + + @Value("${quanguo.api-key}") + private String API_KEY; + + @Resource + private ObjectMapper objectMapper; + + + @Override + public JSONObject run(SpiderDto dto) throws JsonProcessingException { + dto.setLlm_api_key(API_KEY); + String body = objectMapper.writeValueAsString(dto); + return WebClient.create(SPIDER_URL).post().uri("/start_crawl") + .contentType(MediaType.APPLICATION_JSON) + .bodyValue(body) + .retrieve() + .bodyToMono(JSONObject.class) + .block(); + } + + @Override + public String getUrl() { + return SPIDER_URL; + } +} diff --git a/src/main/java/com/zsc/edu/dify/common/strategy/impl/Spider3StrategyImpl.java b/src/main/java/com/zsc/edu/dify/common/strategy/impl/Spider3StrategyImpl.java new file mode 100644 index 0000000..84fc48d --- /dev/null +++ b/src/main/java/com/zsc/edu/dify/common/strategy/impl/Spider3StrategyImpl.java @@ -0,0 +1,29 @@ +package com.zsc.edu.dify.common.strategy.impl; + +import com.alibaba.fastjson.JSONObject; +import com.zsc.edu.dify.common.strategy.SpiderStrategy; +import com.zsc.edu.dify.modules.dify.dto.SpiderDto; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Component; +import org.springframework.web.reactive.function.client.WebClient; + +@Component("spider3") +public class Spider3StrategyImpl implements SpiderStrategy { + @Value("${spider3.url}") + private String SPIDER_URL; + + @Override + public JSONObject run(SpiderDto dto) { + return WebClient.create(SPIDER_URL).post().uri("/start_crawl") + .contentType(MediaType.APPLICATION_JSON) + .retrieve() + .bodyToMono(JSONObject.class) + .block(); + } + + @Override + public String getUrl() { + return SPIDER_URL; + } +} diff --git a/src/main/java/com/zsc/edu/dify/modules/dify/controller/SpiderController.java b/src/main/java/com/zsc/edu/dify/modules/dify/controller/SpiderController.java index 5a773b8..3de1e30 100644 --- a/src/main/java/com/zsc/edu/dify/modules/dify/controller/SpiderController.java +++ b/src/main/java/com/zsc/edu/dify/modules/dify/controller/SpiderController.java @@ -2,63 +2,51 @@ package com.zsc.edu.dify.modules.dify.controller; import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; +import com.zsc.edu.dify.common.strategy.SpiderStrategy; +import com.zsc.edu.dify.common.strategy.factory.SpiderStrategyFactory; import com.zsc.edu.dify.modules.dify.dto.SpiderDto; -import jakarta.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; -import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import org.springframework.web.reactive.function.client.WebClient; -import java.util.Collections; - @RestController @RequestMapping("/api/spider") public class SpiderController { - @Resource - private ObjectMapper objectMapper; - - @Value("${quanguo.url}") - private String SPIDER_URL; - - @Value("${quanguo.api-key}") - private String API_KEY; + @Autowired + private SpiderStrategyFactory spiderStrategyFactory; @PostMapping("/run") - public JSONObject run(@RequestBody SpiderDto dto) throws JsonProcessingException { - dto.setLlm_api_key(API_KEY); - String body = objectMapper.writeValueAsString(dto); - return WebClient.create(SPIDER_URL).post().uri("/start_crawl") - .contentType(MediaType.APPLICATION_JSON) - .bodyValue(body) - .retrieve() - .bodyToMono(JSONObject.class) - .block(); + public JSONObject run(@RequestBody(required = false) SpiderDto dto, @RequestParam String spiderId) throws JsonProcessingException { + SpiderStrategy spiderStrategy = spiderStrategyFactory.getSpiderStrategy(spiderId); + return spiderStrategy.run(dto); } @PostMapping("/status") - public JSONObject status() { - return WebClient.create(SPIDER_URL).post().uri("/crawl_status") + public JSONObject status(@RequestParam String spiderId) { + SpiderStrategy spiderStrategy = spiderStrategyFactory.getSpiderStrategy(spiderId); + String url = spiderStrategy.getUrl(); + return WebClient.create(url).post().uri("/crawl_status") .retrieve() .bodyToMono(JSONObject.class) .block(); } @PostMapping("/logs") - public JSONObject logs() { - return WebClient.create(SPIDER_URL).post().uri("/logs") + public JSONObject logs(@RequestParam String spiderId) { + SpiderStrategy spiderStrategy = spiderStrategyFactory.getSpiderStrategy(spiderId); + String url = spiderStrategy.getUrl(); + return WebClient.create(url).post().uri("/logs") .retrieve() .bodyToMono(JSONObject.class) .block(); } @PostMapping("/stop") - public JSONObject stop() { - return WebClient.create(SPIDER_URL).post().uri("/stop_crawl") + public JSONObject stop(@RequestParam String spiderId) { + SpiderStrategy spiderStrategy = spiderStrategyFactory.getSpiderStrategy(spiderId); + String url = spiderStrategy.getUrl(); + return WebClient.create(url).post().uri("/stop_crawl") .retrieve() .bodyToMono(JSONObject.class) .block(); diff --git a/src/main/resources/mappers/system/UserMapper.xml b/src/main/resources/mappers/system/SpiderStrategy.xml similarity index 100% rename from src/main/resources/mappers/system/UserMapper.xml rename to src/main/resources/mappers/system/SpiderStrategy.xml