From 177dfff3c76b39f8062b83d0dadc51e035af9c94 Mon Sep 17 00:00:00 2001
From: Hanserwei <2628273921@qq.com>
Date: Sat, 25 Oct 2025 10:06:37 +0800
Subject: [PATCH] =?UTF-8?q?refactor(project):=E9=87=8D=E6=9E=84=E9=A1=B9?=
=?UTF-8?q?=E7=9B=AE=E7=BB=93=E6=9E=84=E5=B9=B6=E8=BF=81=E7=A7=BB=E8=87=B3?=
=?UTF-8?q?snails-chat=E6=A8=A1=E5=9D=97-=20=E5=B0=86=E9=A1=B9=E7=9B=AE?=
=?UTF-8?q?=E4=B8=BB=E6=A8=A1=E5=9D=97=E6=9B=B4=E5=90=8D=E4=B8=BAsnails-ch?=
=?UTF-8?q?at=EF=BC=8C=E8=B0=83=E6=95=B4=E5=8C=85=E7=BB=93=E6=9E=84=20-=20?=
=?UTF-8?q?=E7=A7=BB=E9=99=A4JPA=E7=9B=B8=E5=85=B3=E4=BE=9D=E8=B5=96?=
=?UTF-8?q?=EF=BC=8C=E6=9B=BF=E6=8D=A2=E4=B8=BAMyBatis-Plus-=20=E6=95=B0?=
=?UTF-8?q?=E6=8D=AE=E5=BA=93=E4=BB=8EMySQL=E8=BF=81=E7=A7=BB=E8=87=B3Post?=
=?UTF-8?q?greSQL-=20=E7=A7=BB=E9=99=A4QueryTool=E5=B7=A5=E5=85=B7?=
=?UTF-8?q?=E7=B1=BB=E5=8F=8A=E7=9B=B8=E5=85=B3=E4=BE=9D=E8=B5=96-=20?=
=?UTF-8?q?=E6=9B=B4=E6=96=B0Redis=E9=85=8D=E7=BD=AE=EF=BC=8C=E4=BD=BF?=
=?UTF-8?q?=E7=94=A8JSON=E5=BA=8F=E5=88=97=E5=8C=96-=20=E7=A7=BB=E9=99=A4D?=
=?UTF-8?q?ashScopeController=E5=8F=8AAIResponse=E7=B1=BB=20-=20=E6=B7=BB?=
=?UTF-8?q?=E5=8A=A0User=E5=AE=9E=E4=BD=93=E7=B1=BB=E5=8F=8AMapper?=
=?UTF-8?q?=E6=8E=A5=E5=8F=A3=20-=20=E8=B0=83=E6=95=B4ChatClientConfigurat?=
=?UTF-8?q?ion=E9=85=8D=E7=BD=AE=E7=B1=BB-=20=E6=9B=B4=E6=96=B0pom.xml?=
=?UTF-8?q?=E4=BE=9D=E8=B5=96=E7=AE=A1=E7=90=86=E5=8F=8A=E6=A8=A1=E5=9D=97?=
=?UTF-8?q?=E9=85=8D=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 45 ++++++++----
snails-chat/pom.xml | 28 ++++++++
.../hanserwei/chat/SnailsChatApplication.java | 13 ++++
.../chat}/config/ChatClientConfiguration.java | 6 +-
.../hanserwei/chat}/config/CorsConfig.java | 2 +-
.../hanserwei/chat/config/RedisConfig.java | 30 ++++++++
.../chat/domain/dataobject/User.java | 37 ++++++++++
.../chat/domain/mapper/UserMapper.java | 9 +++
.../hanserwei/chat/service/UserService.java | 9 +++
.../chat/service/impl/UserServiceImpl.java | 12 ++++
.../hanserwei/chat}/utils/EncryptorUtil.java | 2 +-
.../main/resources/config/application.yml | 24 +++----
.../src}/main/resources/config/banner.txt | 0
.../main/resources/mapperxml/UserMapper.xml | 18 +++++
.../snailsai/SnailsAiApplication.java | 13 ----
.../snailsai/config/RedisConfig.java | 7 --
.../controller/DashScopeController.java | 41 -----------
.../controller/TestDataController.java | 29 --------
.../snailsai/dto/ChatMessageDTO.java | 17 -----
.../hanserwei/snailsai/entity/UserEntity.java | 54 ---------------
.../hanserwei/snailsai/model/AIResponse.java | 15 ----
.../snailsai/repository/UserRepository.java | 21 ------
.../snailsai/service/UserService.java | 69 -------------------
.../hanserwei/snailsai/tools/QueryTool.java | 27 --------
.../snailsai/SnailsAiApplicationTests.java | 13 ----
25 files changed, 203 insertions(+), 338 deletions(-)
create mode 100644 snails-chat/pom.xml
create mode 100644 snails-chat/src/main/java/com/hanserwei/chat/SnailsChatApplication.java
rename {src/main/java/com/hanserwei/snailsai => snails-chat/src/main/java/com/hanserwei/chat}/config/ChatClientConfiguration.java (92%)
rename {src/main/java/com/hanserwei/snailsai => snails-chat/src/main/java/com/hanserwei/chat}/config/CorsConfig.java (95%)
create mode 100644 snails-chat/src/main/java/com/hanserwei/chat/config/RedisConfig.java
create mode 100644 snails-chat/src/main/java/com/hanserwei/chat/domain/dataobject/User.java
create mode 100644 snails-chat/src/main/java/com/hanserwei/chat/domain/mapper/UserMapper.java
create mode 100644 snails-chat/src/main/java/com/hanserwei/chat/service/UserService.java
create mode 100644 snails-chat/src/main/java/com/hanserwei/chat/service/impl/UserServiceImpl.java
rename {src/main/java/com/hanserwei/snailsai => snails-chat/src/main/java/com/hanserwei/chat}/utils/EncryptorUtil.java (89%)
rename {src => snails-chat/src}/main/resources/config/application.yml (72%)
rename {src => snails-chat/src}/main/resources/config/banner.txt (100%)
create mode 100644 snails-chat/src/main/resources/mapperxml/UserMapper.xml
delete mode 100644 src/main/java/com/hanserwei/snailsai/SnailsAiApplication.java
delete mode 100644 src/main/java/com/hanserwei/snailsai/config/RedisConfig.java
delete mode 100644 src/main/java/com/hanserwei/snailsai/controller/DashScopeController.java
delete mode 100644 src/main/java/com/hanserwei/snailsai/controller/TestDataController.java
delete mode 100644 src/main/java/com/hanserwei/snailsai/dto/ChatMessageDTO.java
delete mode 100644 src/main/java/com/hanserwei/snailsai/entity/UserEntity.java
delete mode 100644 src/main/java/com/hanserwei/snailsai/model/AIResponse.java
delete mode 100644 src/main/java/com/hanserwei/snailsai/repository/UserRepository.java
delete mode 100644 src/main/java/com/hanserwei/snailsai/service/UserService.java
delete mode 100644 src/main/java/com/hanserwei/snailsai/tools/QueryTool.java
delete mode 100644 src/test/java/com/hanserwei/snailsai/SnailsAiApplicationTests.java
diff --git a/pom.xml b/pom.xml
index 7db8d2d..b08430d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,23 +6,33 @@
org.springframework.boot
spring-boot-starter-parent
3.5.6
-
+
com.hanserwei
snails-ai
0.0.1-SNAPSHOT
+ pom
snails-ai
snails-ai
+
+
+
+ snails-chat
+
+
+
21
1.0.3
+ 3.0.5
+
+
org.springframework.boot
spring-boot-starter-web
-
org.projectlombok
lombok
@@ -33,19 +43,10 @@
spring-boot-starter-test
test
-
- org.springframework.boot
- spring-boot-starter-data-jpa
-
org.springframework.boot
spring-boot-starter-webflux
-
- com.mysql
- mysql-connector-j
- runtime
-
com.alibaba.cloud.ai
@@ -55,7 +56,7 @@
com.github.ulisesbocchio
jasypt-spring-boot-starter
- 3.0.5
+ ${jasypt-starter-version}
com.alibaba.cloud.ai
@@ -65,6 +66,19 @@
org.springframework.boot
spring-boot-starter-data-redis
+
+ org.postgresql
+ postgresql
+ runtime
+
+
+ com.baomidou
+ mybatis-plus-spring-boot3-starter
+
+
+ com.baomidou
+ mybatis-plus-jsqlparser
+
@@ -83,6 +97,13 @@
pom
import
+
+ com.baomidou
+ mybatis-plus-bom
+ 3.5.14
+ pom
+ import
+
diff --git a/snails-chat/pom.xml b/snails-chat/pom.xml
new file mode 100644
index 0000000..9d351e0
--- /dev/null
+++ b/snails-chat/pom.xml
@@ -0,0 +1,28 @@
+
+ 4.0.0
+
+ com.hanserwei
+ snails-ai
+ 0.0.1-SNAPSHOT
+
+
+ com.hanserwei.chat
+ snails-chat
+ jar
+
+ snails-chat
+
+
+ UTF-8
+
+
+
+
+ junit
+ junit
+ 3.8.1
+ test
+
+
+
diff --git a/snails-chat/src/main/java/com/hanserwei/chat/SnailsChatApplication.java b/snails-chat/src/main/java/com/hanserwei/chat/SnailsChatApplication.java
new file mode 100644
index 0000000..62aa05c
--- /dev/null
+++ b/snails-chat/src/main/java/com/hanserwei/chat/SnailsChatApplication.java
@@ -0,0 +1,13 @@
+package com.hanserwei.chat;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+@MapperScan("com.hanserwei.chat.domain.mapper")
+public class SnailsChatApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(SnailsChatApplication.class, args);
+ }
+}
diff --git a/src/main/java/com/hanserwei/snailsai/config/ChatClientConfiguration.java b/snails-chat/src/main/java/com/hanserwei/chat/config/ChatClientConfiguration.java
similarity index 92%
rename from src/main/java/com/hanserwei/snailsai/config/ChatClientConfiguration.java
rename to snails-chat/src/main/java/com/hanserwei/chat/config/ChatClientConfiguration.java
index 3493856..ca0d99f 100644
--- a/src/main/java/com/hanserwei/snailsai/config/ChatClientConfiguration.java
+++ b/snails-chat/src/main/java/com/hanserwei/chat/config/ChatClientConfiguration.java
@@ -1,9 +1,8 @@
-package com.hanserwei.snailsai.config;
+package com.hanserwei.chat.config;
import com.alibaba.cloud.ai.dashscope.chat.DashScopeChatModel;
import com.alibaba.cloud.ai.memory.redis.BaseRedisChatMemoryRepository;
import com.alibaba.cloud.ai.memory.redis.LettuceRedisChatMemoryRepository;
-import com.hanserwei.snailsai.tools.QueryTool;
import jakarta.annotation.Resource;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.client.advisor.PromptChatMemoryAdvisor;
@@ -29,8 +28,6 @@ public class ChatClientConfiguration {
@Resource
private DashScopeChatModel dashScopeChatModel;
- @Resource
- private QueryTool queryTool;
@Bean
public BaseRedisChatMemoryRepository redisChatMemoryRepository() {
@@ -54,7 +51,6 @@ public class ChatClientConfiguration {
@Bean
public ChatClient dashScopeChatClient(ChatMemory chatMemory) {
return ChatClient.builder(dashScopeChatModel)
- .defaultTools(queryTool)
.defaultAdvisors(PromptChatMemoryAdvisor.builder(chatMemory).build(), new SimpleLoggerAdvisor())
.build();
}
diff --git a/src/main/java/com/hanserwei/snailsai/config/CorsConfig.java b/snails-chat/src/main/java/com/hanserwei/chat/config/CorsConfig.java
similarity index 95%
rename from src/main/java/com/hanserwei/snailsai/config/CorsConfig.java
rename to snails-chat/src/main/java/com/hanserwei/chat/config/CorsConfig.java
index ec9e2e7..ff850ce 100644
--- a/src/main/java/com/hanserwei/snailsai/config/CorsConfig.java
+++ b/snails-chat/src/main/java/com/hanserwei/chat/config/CorsConfig.java
@@ -1,4 +1,4 @@
-package com.hanserwei.snailsai.config;
+package com.hanserwei.chat.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
diff --git a/snails-chat/src/main/java/com/hanserwei/chat/config/RedisConfig.java b/snails-chat/src/main/java/com/hanserwei/chat/config/RedisConfig.java
new file mode 100644
index 0000000..5af31dc
--- /dev/null
+++ b/snails-chat/src/main/java/com/hanserwei/chat/config/RedisConfig.java
@@ -0,0 +1,30 @@
+package com.hanserwei.chat.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+@Configuration
+public class RedisConfig {
+ @Bean
+ public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) {
+ RedisTemplate redisTemplate = new RedisTemplate<>();
+ // 设置 RedisTemplate 的连接工厂
+ redisTemplate.setConnectionFactory(connectionFactory);
+
+ // 使用 StringRedisSerializer 来序列化和反序列化 redis 的 key 值,确保 key 是可读的字符串
+ redisTemplate.setKeySerializer(new StringRedisSerializer());
+ redisTemplate.setHashKeySerializer(new StringRedisSerializer());
+
+ // 使用 Jackson2JsonRedisSerializer 来序列化和反序列化 redis 的 value 值, 确保存储的是 JSON 格式
+ Jackson2JsonRedisSerializer