From 4c75b5ab76431ef301f104a6639e21f404dadefa Mon Sep 17 00:00:00 2001
From: Linnea Lin <1604326066@qq.com>
Date: Tue, 14 Oct 2025 09:35:36 +0800
Subject: [PATCH] retrofit
---
pom.xml | 20 +++++++
.../xfg/frame/config/Retrofit2Config.java | 52 +++++++++++++++++++
.../xfg/frame/controller/UserController.java | 25 ++++++++-
.../frame/domain/req/CompletionBaseReq.java | 23 ++++++++
.../domain/req/KeySensorCompletionReq.java | 22 ++++++++
.../xfg/frame/domain/res/CompletionRes.java | 42 +++++++++++++++
.../service/IKnowledgeCenterService.java | 26 ++++++++++
target/classes/application.yml | 13 +++++
.../classes/mybatis/config/mybatis-config.xml | 9 ++++
target/classes/mybatis/mapper/User_Mapper.xml | 22 ++++++++
10 files changed, 252 insertions(+), 2 deletions(-)
create mode 100644 src/main/java/cn/bugstack/xfg/frame/config/Retrofit2Config.java
create mode 100644 src/main/java/cn/bugstack/xfg/frame/domain/req/CompletionBaseReq.java
create mode 100644 src/main/java/cn/bugstack/xfg/frame/domain/req/KeySensorCompletionReq.java
create mode 100644 src/main/java/cn/bugstack/xfg/frame/domain/res/CompletionRes.java
create mode 100644 src/main/java/cn/bugstack/xfg/frame/service/IKnowledgeCenterService.java
create mode 100644 target/classes/application.yml
create mode 100644 target/classes/mybatis/config/mybatis-config.xml
create mode 100644 target/classes/mybatis/mapper/User_Mapper.xml
diff --git a/pom.xml b/pom.xml
index 8b62684..78b5961 100644
--- a/pom.xml
+++ b/pom.xml
@@ -60,6 +60,26 @@
junit
test
+
+ com.squareup.retrofit2
+ retrofit
+ 2.9.0
+
+
+ com.squareup.retrofit2
+ converter-jackson
+ 2.9.0
+
+
+ com.squareup.retrofit2
+ adapter-rxjava2
+ 2.9.0
+
+
+ com.squareup.okhttp3
+ logging-interceptor
+ 4.12.0
+
diff --git a/src/main/java/cn/bugstack/xfg/frame/config/Retrofit2Config.java b/src/main/java/cn/bugstack/xfg/frame/config/Retrofit2Config.java
new file mode 100644
index 0000000..d612756
--- /dev/null
+++ b/src/main/java/cn/bugstack/xfg/frame/config/Retrofit2Config.java
@@ -0,0 +1,52 @@
+package cn.bugstack.xfg.frame.config;
+
+import cn.bugstack.xfg.frame.service.IKnowledgeCenterService;
+import lombok.extern.slf4j.Slf4j;
+import okhttp3.OkHttpClient;
+import okhttp3.logging.HttpLoggingInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import retrofit2.Retrofit;
+import retrofit2.converter.jackson.JacksonConverterFactory;
+
+import java.util.concurrent.TimeUnit;
+
+
+@Slf4j
+@Configuration
+public class Retrofit2Config {
+ private static final String BASE_URL = "https://demo.ragflow.io/";
+
+ @Bean
+ public Retrofit retrofit() {
+ // 创建日志拦截器
+ HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
+ @Override
+ public void log(String message) {
+ // 使用 SLF4J 记录日志,便于与 Spring Boot 日志系统集成
+ log.info("Retrofit: {}", message);
+ }
+ });
+
+ // 设置日志级别
+ loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
+
+ // 创建 OkHttpClient 并添加拦截器
+ OkHttpClient okHttpClient = new OkHttpClient.Builder()
+ .addInterceptor(loggingInterceptor)
+ .connectTimeout(30, TimeUnit.SECONDS)
+ .readTimeout(30, TimeUnit.SECONDS)
+ .writeTimeout(30, TimeUnit.SECONDS)
+ .build();
+
+ return new Retrofit.Builder()
+ .baseUrl(BASE_URL)
+ .client(okHttpClient)
+ .addConverterFactory(JacksonConverterFactory.create()).build();
+ }
+
+ @Bean
+ public IKnowledgeCenterService knowledgeCenterService() {
+ return retrofit().create(IKnowledgeCenterService.class);
+ }
+}
diff --git a/src/main/java/cn/bugstack/xfg/frame/controller/UserController.java b/src/main/java/cn/bugstack/xfg/frame/controller/UserController.java
index a69fc2f..0ec1714 100644
--- a/src/main/java/cn/bugstack/xfg/frame/controller/UserController.java
+++ b/src/main/java/cn/bugstack/xfg/frame/controller/UserController.java
@@ -1,14 +1,19 @@
package cn.bugstack.xfg.frame.controller;
import cn.bugstack.xfg.frame.common.Result;
+import cn.bugstack.xfg.frame.domain.req.KeySensorCompletionReq;
+import cn.bugstack.xfg.frame.domain.res.CompletionRes;
import cn.bugstack.xfg.frame.domain.res.UserRes;
import cn.bugstack.xfg.frame.domain.vo.UserVO;
+import cn.bugstack.xfg.frame.service.IKnowledgeCenterService;
import cn.bugstack.xfg.frame.service.IUserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import retrofit2.Call;
import javax.annotation.Resource;
+import java.io.IOException;
import java.util.List;
@Slf4j
@@ -18,13 +23,16 @@ public class UserController {
@Resource
private IUserService userService;
+ @Resource
+ private IKnowledgeCenterService knowledgeCenterService;
+
/**
* http://localhost:8089/queryUserInfo
*/
- @RequestMapping("queryUserInfo")
+ @RequestMapping("/queryUserInfo")
public UserRes queryUserInfo() {
try {
- log.info("查询用户信息");
+ log.info("查询用户信息开始");
List userVOList = userService.queryUserList();
return UserRes.builder().userVOList(userVOList).result(Result.buildSuccess()).build();
} catch (Exception e) {
@@ -33,4 +41,17 @@ public class UserController {
}
}
+ @RequestMapping("/queryAI")
+ public String queryAI() throws IOException {
+ KeySensorCompletionReq.KeySensorCompletionReqBuilder reqBuilder =
+ KeySensorCompletionReq.builder()
+ .question("请给我一个5个字")
+ .style("normal");
+ Call call = knowledgeCenterService.getCompletions("Bearer ragflow-djN2QwZjc0YTNlNzExZjBiYjBlNDIwMT", reqBuilder.build(), "56a8f80aa85911f08a8a42010a8e0005");
+ CompletionRes completionRes = call.execute().body();
+ log.info("completionRes: {}", completionRes);
+
+ return "test";
+ }
+
}
diff --git a/src/main/java/cn/bugstack/xfg/frame/domain/req/CompletionBaseReq.java b/src/main/java/cn/bugstack/xfg/frame/domain/req/CompletionBaseReq.java
new file mode 100644
index 0000000..15dddba
--- /dev/null
+++ b/src/main/java/cn/bugstack/xfg/frame/domain/req/CompletionBaseReq.java
@@ -0,0 +1,23 @@
+package cn.bugstack.xfg.frame.domain.req;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * @author Linnea
+ * @Description xx类
+ * @Date 2025/10/14
+ */
+@Data
+@SuperBuilder
+@AllArgsConstructor
+@NoArgsConstructor
+public class CompletionBaseReq {
+ private String question;
+ private String style;
+ private String[] kb_ids;
+ private boolean stream;
+}
diff --git a/src/main/java/cn/bugstack/xfg/frame/domain/req/KeySensorCompletionReq.java b/src/main/java/cn/bugstack/xfg/frame/domain/req/KeySensorCompletionReq.java
new file mode 100644
index 0000000..f3bba10
--- /dev/null
+++ b/src/main/java/cn/bugstack/xfg/frame/domain/req/KeySensorCompletionReq.java
@@ -0,0 +1,22 @@
+package cn.bugstack.xfg.frame.domain.req;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * @author Linnea
+ * @Description xx类
+ * @Date 2025/10/14
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@SuperBuilder
+public class KeySensorCompletionReq extends CompletionBaseReq{
+ private String sensorList;
+ private String session_id;
+ private String user_id;
+}
diff --git a/src/main/java/cn/bugstack/xfg/frame/domain/res/CompletionRes.java b/src/main/java/cn/bugstack/xfg/frame/domain/res/CompletionRes.java
new file mode 100644
index 0000000..2685fed
--- /dev/null
+++ b/src/main/java/cn/bugstack/xfg/frame/domain/res/CompletionRes.java
@@ -0,0 +1,42 @@
+package cn.bugstack.xfg.frame.domain.res;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class CompletionRes {
+ // 主要响应字段
+ private String answer;
+ private String audioBinary;
+ private Double createdAt;
+ private String id;
+ private String prompt;
+ private String sessionId;
+
+ // 引用信息相关字段
+ private List chunks;
+ private List docAggs;
+ private Integer total;
+
+ // 内部类 - 文本块
+ @Data
+ public static class Chunk {
+ private String content;
+ private String datasetId;
+ private String documentId;
+ private String documentName;
+ private String id;
+ private String imageId;
+ private List