From 6f9816a69583dfe29b9de235036c654af83bc831 Mon Sep 17 00:00:00 2001 From: bamanker <27054792@qq.com> Date: Mon, 12 Jan 2026 18:07:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=98=E6=9B=B4=E4=B8=BAwebclient=E5=93=8D?= =?UTF-8?q?=E5=BA=94=E5=BC=8F=E5=AE=A2=E6=88=B7=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 9 +++ .../dailylove/config/WebClientConfig.java | 33 ++++++++++ .../controller/PushDailyController.java | 5 +- .../dailylove/service/DataRemoteService.java | 62 +++++++++++++++++++ .../service/WechatRequestService.java | 36 +++++++++++ 5 files changed, 143 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/bamanker/dailylove/config/WebClientConfig.java create mode 100644 src/main/java/com/bamanker/dailylove/service/DataRemoteService.java create mode 100644 src/main/java/com/bamanker/dailylove/service/WechatRequestService.java diff --git a/pom.xml b/pom.xml index b36b86b..7ac33bb 100644 --- a/pom.xml +++ b/pom.xml @@ -92,6 +92,15 @@ org.springframework.boot spring-boot-starter-actuator + + org.springframework.boot + spring-boot-starter-webflux + + + io.projectreactor + reactor-test + test + dailylove diff --git a/src/main/java/com/bamanker/dailylove/config/WebClientConfig.java b/src/main/java/com/bamanker/dailylove/config/WebClientConfig.java new file mode 100644 index 0000000..1776fcb --- /dev/null +++ b/src/main/java/com/bamanker/dailylove/config/WebClientConfig.java @@ -0,0 +1,33 @@ +package com.bamanker.dailylove.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.reactive.function.client.WebClient; + +/** + * @descriptions TODO + * @author bamanker + * @date 2026/1/12 17:33 + * @return + */ +@Configuration +public class WebClientConfig { + /** + * 创建WebClient Bean + */ + @Bean + public WebClient wechatWebClient() { + return WebClient.builder() + .baseUrl("https://api.weixin.qq.com/cgi-bin") // 基础URL + .defaultHeader("User-Agent", "WebFlux-Client") // 默认请求头 + .build(); + } + + @Bean + public WebClient dateRemoteWebClient() { + return WebClient.builder() + .baseUrl("${tianxin.server}") // 基础URL + .defaultHeader("User-Agent", "WebFlux-Client") // 默认请求头 + .build(); + } +} diff --git a/src/main/java/com/bamanker/dailylove/controller/PushDailyController.java b/src/main/java/com/bamanker/dailylove/controller/PushDailyController.java index edcea18..9c1c759 100644 --- a/src/main/java/com/bamanker/dailylove/controller/PushDailyController.java +++ b/src/main/java/com/bamanker/dailylove/controller/PushDailyController.java @@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.RestController; import tools.jackson.databind.JsonNode; import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; import java.text.SimpleDateFormat; import java.util.Date; @@ -29,7 +30,7 @@ import java.util.Date; public class PushDailyController { final - ObjectMapper mapper; + JsonMapper mapper; final DataRemoteClient dataRemoteClient; @@ -37,7 +38,7 @@ public class PushDailyController { final WechatRequestClient wechatRequestClient; - public PushDailyController(DataRemoteClient dataRemoteClient, WechatRequestClient wechatRequestClient, ObjectMapper mapper) { + public PushDailyController(DataRemoteClient dataRemoteClient, WechatRequestClient wechatRequestClient, JsonMapper mapper) { this.dataRemoteClient = dataRemoteClient; this.wechatRequestClient = wechatRequestClient; this.mapper = mapper; diff --git a/src/main/java/com/bamanker/dailylove/service/DataRemoteService.java b/src/main/java/com/bamanker/dailylove/service/DataRemoteService.java new file mode 100644 index 0000000..2a413b0 --- /dev/null +++ b/src/main/java/com/bamanker/dailylove/service/DataRemoteService.java @@ -0,0 +1,62 @@ +package com.bamanker.dailylove.service; + +import com.bamanker.dailylove.domain.TianXinReqParam; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.reactive.function.client.WebClient; +import reactor.core.publisher.Mono; + +import java.util.Map; + +@Service +public class DataRemoteService { + + final + WebClient webClient; + + public DataRemoteService(WebClient dateRemoteWebClient) { + this.webClient = dateRemoteWebClient; + } + + public Mono getWeather(@RequestParam TianXinReqParam param) { + return webClient.get() + .uri("/tianqi/index", param) + .retrieve() + .bodyToMono(String.class); + } + + public Mono getRainbow(@RequestParam TianXinReqParam param) { + return webClient.get() + .uri("/caihongpi/index", param) + .retrieve() + .bodyToMono(String.class); + } + + public Mono getDailyEnglish(@RequestParam TianXinReqParam param) { + return webClient.get() + .uri("/ensentence/index", param) + .retrieve() + .bodyToMono(String.class); + } + + public Mono getTips(@RequestParam TianXinReqParam param) { + return webClient.get() + .uri("/qiaomen/index", param) + .retrieve() + .bodyToMono(String.class); + } + + public Mono getMorning(@RequestParam TianXinReqParam param) { + return webClient.get() + .uri("/zaoan/index", param) + .retrieve() + .bodyToMono(String.class); + } + + public Mono getNight(@RequestParam TianXinReqParam param) { + return webClient.get() + .uri("/wanan/index", param) + .retrieve() + .bodyToMono(String.class); + } +} diff --git a/src/main/java/com/bamanker/dailylove/service/WechatRequestService.java b/src/main/java/com/bamanker/dailylove/service/WechatRequestService.java new file mode 100644 index 0000000..4446915 --- /dev/null +++ b/src/main/java/com/bamanker/dailylove/service/WechatRequestService.java @@ -0,0 +1,36 @@ +package com.bamanker.dailylove.service; + +import com.bamanker.dailylove.domain.ResultVo; +import com.bamanker.dailylove.domain.WechatTokenParam; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.openfeign.SpringQueryMap; +import org.springframework.stereotype.Service; +import org.springframework.web.reactive.function.client.WebClient; +import reactor.core.publisher.Mono; + +@Service +public class WechatRequestService { + + final + WebClient webClient; + + public WechatRequestService(WebClient dateRemoteWebClient) { + this.webClient = dateRemoteWebClient; + } + + public Mono getAccessToken(@SpringQueryMap WechatTokenParam param){ + return webClient.get() + .uri("/token", param) + .retrieve() + .bodyToMono(String.class); + } + + public Mono sendMsg(String token, ResultVo resultVo){ + return webClient.post() + .uri("/message/template/send?access_token={token}", token) + .bodyValue(resultVo) + .retrieve() + .bodyToMono(String.class); + } + +}