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 positions; + private String url; + } + + // 内部类 - 文档聚合 + @Data + public static class DocAgg { + private Integer count; + private String docId; + private String docName; + } +} \ No newline at end of file diff --git a/src/main/java/cn/bugstack/xfg/frame/service/IKnowledgeCenterService.java b/src/main/java/cn/bugstack/xfg/frame/service/IKnowledgeCenterService.java new file mode 100644 index 0000000..fab2bc0 --- /dev/null +++ b/src/main/java/cn/bugstack/xfg/frame/service/IKnowledgeCenterService.java @@ -0,0 +1,26 @@ +package cn.bugstack.xfg.frame.service; + +import cn.bugstack.xfg.frame.domain.req.KeySensorCompletionReq; +import cn.bugstack.xfg.frame.domain.res.CompletionRes; +import retrofit2.Call; +import retrofit2.http.*; + +public interface IKnowledgeCenterService { + + + /** + * 对接 completion 接口 + * + * @param authorization 认证头信息 + * @param req 请求参数对象 + * @return 响应结果 + */ + @POST("api/v1/chats/{chat_id}/completions") + Call getCompletions( + @Header("Authorization") String authorization, + @Body KeySensorCompletionReq req, + @Path("chat_id") String chat_id + ); + + +} diff --git a/target/classes/application.yml b/target/classes/application.yml new file mode 100644 index 0000000..0e5468f --- /dev/null +++ b/target/classes/application.yml @@ -0,0 +1,13 @@ +server: + port: 8089 + +spring: + datasource: + username: root + password: 123456 + url: jdbc:mysql://127.0.0.1:3306/road-map?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&serverTimezone=UTC&useSSL=true + driver-class-name: com.mysql.jdbc.Driver + +mybatis: + mapper-locations: classpath:/mybatis/mapper/*.xml + config-location: classpath:/mybatis/config/mybatis-config.xml \ No newline at end of file diff --git a/target/classes/mybatis/config/mybatis-config.xml b/target/classes/mybatis/config/mybatis-config.xml new file mode 100644 index 0000000..1a7d53c --- /dev/null +++ b/target/classes/mybatis/config/mybatis-config.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/target/classes/mybatis/mapper/User_Mapper.xml b/target/classes/mybatis/mapper/User_Mapper.xml new file mode 100644 index 0000000..f4d70d0 --- /dev/null +++ b/target/classes/mybatis/mapper/User_Mapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + -- GitLab