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