diff --git a/common/pom.xml b/common/pom.xml
index e488d04..f9a57f2 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -11,6 +11,14 @@
common
+
+
+ org.projectlombok
+ lombok
+ provided
+
+
+
21
21
diff --git a/common/src/main/java/cn/hezhaohui/common/AIConstant.java b/common/src/main/java/cn/hezhaohui/weather/common/AIConstant.java
similarity index 96%
rename from common/src/main/java/cn/hezhaohui/common/AIConstant.java
rename to common/src/main/java/cn/hezhaohui/weather/common/AIConstant.java
index bdbf706..be8a8f3 100644
--- a/common/src/main/java/cn/hezhaohui/common/AIConstant.java
+++ b/common/src/main/java/cn/hezhaohui/weather/common/AIConstant.java
@@ -1,4 +1,4 @@
-package cn.hezhaohui.common;
+package cn.hezhaohui.weather.common;
public class AIConstant {
diff --git a/common/src/main/java/cn/hezhaohui/common/AppConstant.java b/common/src/main/java/cn/hezhaohui/weather/common/AppConstant.java
similarity index 87%
rename from common/src/main/java/cn/hezhaohui/common/AppConstant.java
rename to common/src/main/java/cn/hezhaohui/weather/common/AppConstant.java
index 8578e4a..2f42515 100644
--- a/common/src/main/java/cn/hezhaohui/common/AppConstant.java
+++ b/common/src/main/java/cn/hezhaohui/weather/common/AppConstant.java
@@ -1,4 +1,4 @@
-package cn.hezhaohui.common;
+package cn.hezhaohui.weather.common;
public class AppConstant {
diff --git a/common/src/main/java/cn/hezhaohui/common/CardEnum.java b/common/src/main/java/cn/hezhaohui/weather/common/CardEnum.java
similarity index 91%
rename from common/src/main/java/cn/hezhaohui/common/CardEnum.java
rename to common/src/main/java/cn/hezhaohui/weather/common/CardEnum.java
index b4162b9..d0ef8a2 100644
--- a/common/src/main/java/cn/hezhaohui/common/CardEnum.java
+++ b/common/src/main/java/cn/hezhaohui/weather/common/CardEnum.java
@@ -1,4 +1,4 @@
-package cn.hezhaohui.common;
+package cn.hezhaohui.weather.common;
public enum CardEnum {
CARD_WEATHER("AAqxas5etOJDx", "1.0.5");
diff --git a/common/src/main/java/cn/hezhaohui/common/WeatherConstant.java b/common/src/main/java/cn/hezhaohui/weather/common/WeatherConstant.java
similarity index 87%
rename from common/src/main/java/cn/hezhaohui/common/WeatherConstant.java
rename to common/src/main/java/cn/hezhaohui/weather/common/WeatherConstant.java
index 9ebc7a9..6f4a6d5 100644
--- a/common/src/main/java/cn/hezhaohui/common/WeatherConstant.java
+++ b/common/src/main/java/cn/hezhaohui/weather/common/WeatherConstant.java
@@ -1,4 +1,4 @@
-package cn.hezhaohui.common;
+package cn.hezhaohui.weather.common;
public class WeatherConstant {
diff --git a/weather/src/main/java/cn/hezhaohui/entity/Weather.java b/common/src/main/java/cn/hezhaohui/weather/entity/Weather.java
similarity index 88%
rename from weather/src/main/java/cn/hezhaohui/entity/Weather.java
rename to common/src/main/java/cn/hezhaohui/weather/entity/Weather.java
index 65411a5..8af8d46 100644
--- a/weather/src/main/java/cn/hezhaohui/entity/Weather.java
+++ b/common/src/main/java/cn/hezhaohui/weather/entity/Weather.java
@@ -1,4 +1,4 @@
-package cn.hezhaohui.entity;
+package cn.hezhaohui.weather.entity;
import lombok.Builder;
import lombok.Data;
diff --git a/eureka/pom.xml b/eureka/pom.xml
new file mode 100644
index 0000000..9eff95e
--- /dev/null
+++ b/eureka/pom.xml
@@ -0,0 +1,27 @@
+
+
+ 4.0.0
+
+ cn.hezhaohui
+ lark-panel
+ 1.0.0
+
+
+ eureka
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-eureka-server
+
+
+
+
+ 21
+ 21
+ UTF-8
+
+
+
\ No newline at end of file
diff --git a/eureka/src/main/java/cn/hezhaohui/eureka/EurekaServerApplication.java b/eureka/src/main/java/cn/hezhaohui/eureka/EurekaServerApplication.java
new file mode 100644
index 0000000..b37ba33
--- /dev/null
+++ b/eureka/src/main/java/cn/hezhaohui/eureka/EurekaServerApplication.java
@@ -0,0 +1,13 @@
+package cn.hezhaohui.eureka;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
+
+@SpringBootApplication
+@EnableEurekaServer
+public class EurekaServerApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(EurekaServerApplication.class, args);
+ }
+}
diff --git a/eureka/src/main/resources/application.yml b/eureka/src/main/resources/application.yml
new file mode 100644
index 0000000..78ac245
--- /dev/null
+++ b/eureka/src/main/resources/application.yml
@@ -0,0 +1,16 @@
+server:
+ port: 8761
+
+spring:
+ application:
+ name: eureka-server
+
+eureka:
+ instance:
+ hostname: localhost
+ client:
+ register-with-eureka: false
+ fetch-registry: false
+ service-url:
+ defaultZone:
+ http://${eureka.instance.hostname}:${server.port}/eureka/
\ No newline at end of file
diff --git a/gateway/pom.xml b/gateway/pom.xml
new file mode 100644
index 0000000..a5637c3
--- /dev/null
+++ b/gateway/pom.xml
@@ -0,0 +1,35 @@
+
+
+ 4.0.0
+
+ cn.hezhaohui
+ lark-panel
+ 1.0.0
+
+
+ gateway
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-eureka-client
+
+
+ org.springframework.cloud
+ spring-cloud-starter-loadbalancer
+
+
+ org.springframework.cloud
+ spring-cloud-starter-gateway
+
+
+
+
+ 21
+ 21
+ UTF-8
+
+
+
\ No newline at end of file
diff --git a/gateway/src/main/java/cn/hezhaohui/gateway/GatewayApplication.java b/gateway/src/main/java/cn/hezhaohui/gateway/GatewayApplication.java
new file mode 100644
index 0000000..3374ec6
--- /dev/null
+++ b/gateway/src/main/java/cn/hezhaohui/gateway/GatewayApplication.java
@@ -0,0 +1,13 @@
+package cn.hezhaohui.gateway;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+
+@SpringBootApplication
+@EnableDiscoveryClient
+public class GatewayApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(GatewayApplication.class, args);
+ }
+}
diff --git a/gateway/src/main/resources/application.yml b/gateway/src/main/resources/application.yml
new file mode 100644
index 0000000..348a229
--- /dev/null
+++ b/gateway/src/main/resources/application.yml
@@ -0,0 +1,36 @@
+spring:
+ application:
+ name: api-gateway
+ cloud:
+ gateway:
+ routes:
+ # 路由到service-weather服务
+ - id: service-weather
+ uri: lb://service-weather
+ predicates:
+ - Path=/api/weather/**
+ filters:
+ - StripPrefix=2
+ # 路由到service-consumer服务
+ - id: service-consumer
+ uri: lb://service-consumer
+ predicates:
+ - Path=/api/consumer/**
+ filters:
+ - StripPrefix=2
+ # 全局过滤器配置
+ globalcors:
+ cors-configurations:
+ "[/**]":
+ allowedOriginPatterns: "*"
+ allowedMethods: "*"
+ allowedHeaders: "*"
+
+server:
+ port: 8081
+
+
+eureka:
+ client:
+ service-url:
+ defaultZone: http://localhost:8761/eureka/
\ No newline at end of file
diff --git a/lark/pom.xml b/lark/pom.xml
index 0e573f0..24a0103 100644
--- a/lark/pom.xml
+++ b/lark/pom.xml
@@ -18,9 +18,8 @@
- cn.hezhaohui
- weather
- 1.0.0
+ org.springframework.cloud
+ spring-cloud-starter-openfeign
diff --git a/lark/src/main/java/cn/hezhaohui/lark/Application.java b/lark/src/main/java/cn/hezhaohui/lark/LarkApplication.java
similarity index 51%
rename from lark/src/main/java/cn/hezhaohui/lark/Application.java
rename to lark/src/main/java/cn/hezhaohui/lark/LarkApplication.java
index 7b2380b..213cb21 100644
--- a/lark/src/main/java/cn/hezhaohui/lark/Application.java
+++ b/lark/src/main/java/cn/hezhaohui/lark/LarkApplication.java
@@ -1,16 +1,18 @@
package cn.hezhaohui.lark;
+import cn.hezhaohui.lark.client.WeatherClient;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.annotation.ComponentScan;
+import org.springframework.cloud.openfeign.EnableFeignClients;
import static cn.hezhaohui.lark.handler.EventListener.larkClientStart;
@SpringBootApplication
-@ComponentScan(basePackages = "cn.hezhaohui")
-public class Application {
- public static void main(String[] args) throws Exception {
- SpringApplication.run(Application.class, args);
+@EnableFeignClients
+public class LarkApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(LarkApplication.class, args);
larkClientStart();
}
}
diff --git a/lark/src/main/java/cn/hezhaohui/lark/client/WeatherClient.java b/lark/src/main/java/cn/hezhaohui/lark/client/WeatherClient.java
new file mode 100644
index 0000000..9cd813b
--- /dev/null
+++ b/lark/src/main/java/cn/hezhaohui/lark/client/WeatherClient.java
@@ -0,0 +1,13 @@
+package cn.hezhaohui.lark.client;
+
+import cn.hezhaohui.weather.entity.Weather;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.GetMapping;
+
+@FeignClient(name = "service-weather")
+public interface WeatherClient {
+
+ @GetMapping("get")
+ Weather getWeather();
+}
diff --git a/lark/src/main/java/cn/hezhaohui/lark/handler/EventListener.java b/lark/src/main/java/cn/hezhaohui/lark/handler/EventListener.java
index a09c1e3..f79237b 100644
--- a/lark/src/main/java/cn/hezhaohui/lark/handler/EventListener.java
+++ b/lark/src/main/java/cn/hezhaohui/lark/handler/EventListener.java
@@ -1,6 +1,6 @@
package cn.hezhaohui.lark.handler;
-import cn.hezhaohui.common.AppConstant;
+import cn.hezhaohui.weather.common.AppConstant;
import com.lark.oapi.core.request.EventReq;
import com.lark.oapi.core.utils.Jsons;
import com.lark.oapi.event.CustomEventHandler;
diff --git a/lark/src/main/java/cn/hezhaohui/lark/util/LarkUtil.java b/lark/src/main/java/cn/hezhaohui/lark/util/LarkUtil.java
index 76098a3..61458a4 100644
--- a/lark/src/main/java/cn/hezhaohui/lark/util/LarkUtil.java
+++ b/lark/src/main/java/cn/hezhaohui/lark/util/LarkUtil.java
@@ -1,7 +1,7 @@
package cn.hezhaohui.lark.util;
-import cn.hezhaohui.common.AppConstant;
-import cn.hezhaohui.common.CardEnum;
+import cn.hezhaohui.weather.common.AppConstant;
+import cn.hezhaohui.weather.common.CardEnum;
import cn.hutool.core.util.IdUtil;
import cn.hutool.json.JSONUtil;
import com.google.gson.JsonParser;
diff --git a/lark/src/main/resources/application.yml b/lark/src/main/resources/application.yml
new file mode 100644
index 0000000..2d37ebb
--- /dev/null
+++ b/lark/src/main/resources/application.yml
@@ -0,0 +1,8 @@
+spring:
+ application:
+ name: lark
+server:
+ port: 8082
+
+service-weather:
+ url: http://localhost:8081/api/weather
\ No newline at end of file
diff --git a/lark/src/test/java/cn/hezhaohui/lark/util/LarkUtilTest.java b/lark/src/test/java/cn/hezhaohui/lark/util/LarkUtilTest.java
index 5afe7f9..b8840e7 100644
--- a/lark/src/test/java/cn/hezhaohui/lark/util/LarkUtilTest.java
+++ b/lark/src/test/java/cn/hezhaohui/lark/util/LarkUtilTest.java
@@ -1,17 +1,17 @@
package cn.hezhaohui.lark.util;
-
-import cn.hezhaohui.common.CardEnum;
-import cn.hezhaohui.util.SpringContextUtil;
-import cn.hezhaohui.util.WeatherUtil;
+import cn.hezhaohui.lark.client.WeatherClient;
+import cn.hezhaohui.weather.common.CardEnum;
+import cn.hezhaohui.weather.entity.Weather;
import jakarta.annotation.Resource;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class LarkUtilTest {
+
@Resource
- private SpringContextUtil springContextUtil;
+ private WeatherClient weatherClient;
@Test
void sendText() throws Exception {
@@ -20,6 +20,7 @@ class LarkUtilTest {
@Test
void sendCard() throws Exception {
- LarkUtil.sendCard(CardEnum.CARD_WEATHER, WeatherUtil.getWeather());
+ Weather weather = weatherClient.getWeather();
+ LarkUtil.sendCard(CardEnum.CARD_WEATHER, weather);
}
}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index eaee4e6..bf082b4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,6 +16,8 @@
lark
weather
common
+ eureka
+ gateway
@@ -24,7 +26,14 @@
org.springframework.boot
spring-boot-dependencies
- 3.2.2
+ 3.3.13
+ pom
+ import
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ 2023.0.6
pom
import
diff --git a/weather/pom.xml b/weather/pom.xml
index b5ab855..5ba83d2 100644
--- a/weather/pom.xml
+++ b/weather/pom.xml
@@ -12,15 +12,32 @@
weather
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
org.springframework.ai
spring-ai-starter-model-openai
1.0.3
+
org.projectlombok
lombok
+
+
+ org.springframework.cloud
+ spring-cloud-netflix-eureka-client
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-loadbalancer
+
+
cn.hutool
hutool-all
diff --git a/weather/src/main/java/cn/hezhaohui/Application.java b/weather/src/main/java/cn/hezhaohui/weather/WeatherApplication.java
similarity index 60%
rename from weather/src/main/java/cn/hezhaohui/Application.java
rename to weather/src/main/java/cn/hezhaohui/weather/WeatherApplication.java
index c792b2d..07a20f1 100644
--- a/weather/src/main/java/cn/hezhaohui/Application.java
+++ b/weather/src/main/java/cn/hezhaohui/weather/WeatherApplication.java
@@ -1,11 +1,11 @@
-package cn.hezhaohui;
+package cn.hezhaohui.weather;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
-public class Application {
+public class WeatherApplication {
public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
+ SpringApplication.run(WeatherApplication.class, args);
}
}
diff --git a/weather/src/main/java/cn/hezhaohui/weather/controller/HealthController.java b/weather/src/main/java/cn/hezhaohui/weather/controller/HealthController.java
new file mode 100644
index 0000000..3aa4a87
--- /dev/null
+++ b/weather/src/main/java/cn/hezhaohui/weather/controller/HealthController.java
@@ -0,0 +1,15 @@
+package cn.hezhaohui.weather.controller;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping
+public class HealthController {
+
+ @GetMapping("health")
+ public String health() {
+ return "Hello wonder!";
+ }
+}
diff --git a/weather/src/main/java/cn/hezhaohui/weather/controller/WeatherController.java b/weather/src/main/java/cn/hezhaohui/weather/controller/WeatherController.java
new file mode 100644
index 0000000..42098e4
--- /dev/null
+++ b/weather/src/main/java/cn/hezhaohui/weather/controller/WeatherController.java
@@ -0,0 +1,17 @@
+package cn.hezhaohui.weather.controller;
+
+import cn.hezhaohui.weather.entity.Weather;
+import cn.hezhaohui.weather.util.WeatherUtil;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping
+public class WeatherController {
+
+ @GetMapping("get")
+ public Weather getWeather() {
+ return WeatherUtil.getWeather();
+ }
+}
diff --git a/weather/src/main/java/cn/hezhaohui/service/ChatService.java b/weather/src/main/java/cn/hezhaohui/weather/service/ChatService.java
similarity index 89%
rename from weather/src/main/java/cn/hezhaohui/service/ChatService.java
rename to weather/src/main/java/cn/hezhaohui/weather/service/ChatService.java
index 7cd61ac..4be2f25 100644
--- a/weather/src/main/java/cn/hezhaohui/service/ChatService.java
+++ b/weather/src/main/java/cn/hezhaohui/weather/service/ChatService.java
@@ -1,6 +1,6 @@
-package cn.hezhaohui.service;
+package cn.hezhaohui.weather.service;
-import cn.hezhaohui.common.AIConstant;
+import cn.hezhaohui.weather.common.AIConstant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.stereotype.Service;
diff --git a/weather/src/main/java/cn/hezhaohui/util/SpringContextUtil.java b/weather/src/main/java/cn/hezhaohui/weather/util/SpringContextUtil.java
similarity index 95%
rename from weather/src/main/java/cn/hezhaohui/util/SpringContextUtil.java
rename to weather/src/main/java/cn/hezhaohui/weather/util/SpringContextUtil.java
index 34be83b..d2ef26b 100644
--- a/weather/src/main/java/cn/hezhaohui/util/SpringContextUtil.java
+++ b/weather/src/main/java/cn/hezhaohui/weather/util/SpringContextUtil.java
@@ -1,4 +1,4 @@
-package cn.hezhaohui.util;
+package cn.hezhaohui.weather.util;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
diff --git a/weather/src/main/java/cn/hezhaohui/util/WeatherUtil.java b/weather/src/main/java/cn/hezhaohui/weather/util/WeatherUtil.java
similarity index 89%
rename from weather/src/main/java/cn/hezhaohui/util/WeatherUtil.java
rename to weather/src/main/java/cn/hezhaohui/weather/util/WeatherUtil.java
index 7360aca..2a3d9c6 100644
--- a/weather/src/main/java/cn/hezhaohui/util/WeatherUtil.java
+++ b/weather/src/main/java/cn/hezhaohui/weather/util/WeatherUtil.java
@@ -1,14 +1,14 @@
-package cn.hezhaohui.util;
+package cn.hezhaohui.weather.util;
-import cn.hezhaohui.common.AIConstant;
-import cn.hezhaohui.entity.Weather;
-import cn.hezhaohui.service.ChatService;
+import cn.hezhaohui.weather.common.AIConstant;
+import cn.hezhaohui.weather.entity.Weather;
+import cn.hezhaohui.weather.service.ChatService;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
-import static cn.hezhaohui.common.WeatherConstant.*;
+import static cn.hezhaohui.weather.common.WeatherConstant.*;
@Slf4j
public class WeatherUtil {
diff --git a/weather/src/main/resources/application.yml b/weather/src/main/resources/application.yml
index 42cb511..d20b7ac 100644
--- a/weather/src/main/resources/application.yml
+++ b/weather/src/main/resources/application.yml
@@ -1,4 +1,7 @@
spring:
+ application:
+ name: service-weather
+
ai:
openai:
api-key: sk-ihsqnxhnzmgsaojdkxomcmgdypdfpzojymfndfklgzfchlgz
@@ -7,3 +10,10 @@ spring:
options:
model: Pro/Qwen/Qwen2.5-7B-Instruct
temperature: 0.7
+eureka:
+ client:
+ service-url:
+ defaultZone: http://localhost:8761/eureka/
+server:
+ port: 8083
+
diff --git a/weather/src/test/java/cn/hezhaohui/service/ChatServiceTest.java b/weather/src/test/java/cn/hezhaohui/weather/service/ChatServiceTest.java
similarity index 69%
rename from weather/src/test/java/cn/hezhaohui/service/ChatServiceTest.java
rename to weather/src/test/java/cn/hezhaohui/weather/service/ChatServiceTest.java
index b8f1c17..1616e13 100644
--- a/weather/src/test/java/cn/hezhaohui/service/ChatServiceTest.java
+++ b/weather/src/test/java/cn/hezhaohui/weather/service/ChatServiceTest.java
@@ -1,11 +1,11 @@
-package cn.hezhaohui.service;
+package cn.hezhaohui.weather.service;
-import cn.hezhaohui.common.AIConstant;
+import cn.hezhaohui.weather.common.AIConstant;
import jakarta.annotation.Resource;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
-@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)
+@SpringBootTest
class ChatServiceTest {
@Resource
diff --git a/weather/src/test/java/cn/hezhaohui/util/WeatherUtilTest.java b/weather/src/test/java/cn/hezhaohui/weather/util/WeatherUtilTest.java
similarity index 65%
rename from weather/src/test/java/cn/hezhaohui/util/WeatherUtilTest.java
rename to weather/src/test/java/cn/hezhaohui/weather/util/WeatherUtilTest.java
index 88534ee..dd3e806 100644
--- a/weather/src/test/java/cn/hezhaohui/util/WeatherUtilTest.java
+++ b/weather/src/test/java/cn/hezhaohui/weather/util/WeatherUtilTest.java
@@ -1,10 +1,10 @@
-package cn.hezhaohui.util;
+package cn.hezhaohui.weather.util;
-import cn.hezhaohui.entity.Weather;
+import cn.hezhaohui.weather.entity.Weather;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
-@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)
+@SpringBootTest
class WeatherUtilTest {
@Test