feat(chat): 实现新的对话接口和相关功能模块
- 添加了 AI 对话请求 VO 类 (AiChatReqVO),支持模型名称、温度等参数 - 新增 AI 响应实体类 (AiResponse)用于封装返回结果 - 创建 API 操作日志注解 (@ApiOperationLog) 和切面类 (ApiOperationLogAspect) - 配置数据源使用 P6Spy 驱动并优化 HikariCP 连接池设置 - 更新 DashScope 模型配置,调整默认模型为 qwen-plus 及温度值 - 引入全局异常处理机制,包括基础异常接口和业务异常类- 新增对话控制器 (ChatController) 支持新建对话及流式交互- 创建对话及相关消息的数据访问对象 (ChatDO, ChatMessageDO) 和映射器 - 实现聊天服务接口及其实现类,支持创建新对话记录 - 添加自定义流式日志顾问 (CustomStreamLoggerAdvisor) 用于调试输出 - 删除旧版控制器和相关模型类,移除冗余配置项 - 增加日期常量工具类统一时间格式管理 - 修改 .gitignore 忽略 /logs/ 目录避免日志文件被提交
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
package com.hanserwei.airobot.service.impl;
|
||||
|
||||
import com.hanserwei.airobot.domain.dos.ChatDO;
|
||||
import com.hanserwei.airobot.domain.mapper.ChatMapper;
|
||||
import com.hanserwei.airobot.model.vo.chat.NewChatReqVO;
|
||||
import com.hanserwei.airobot.model.vo.chat.NewChatRspVO;
|
||||
import com.hanserwei.airobot.service.ChatService;
|
||||
import com.hanserwei.airobot.utils.Response;
|
||||
import com.hanserwei.airobot.utils.StringUtil;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.UUID;
|
||||
|
||||
@Service
|
||||
public class ChatServiceImpl implements ChatService {
|
||||
|
||||
@Resource
|
||||
private ChatMapper chatMapper;
|
||||
|
||||
@Override
|
||||
public Response<NewChatRspVO> newChat(NewChatReqVO newChatReqVO) {
|
||||
// 用户发来的消息
|
||||
String message = newChatReqVO.getMessage();
|
||||
|
||||
// 生成对话的UUID
|
||||
String uuid = UUID.randomUUID().toString();
|
||||
// 截取用户发送的消息,作为对话的摘要
|
||||
String summary = StringUtil.truncate(message, 20);
|
||||
// 存储对话记录到数据库中
|
||||
chatMapper.insert(ChatDO.builder()
|
||||
.summary(summary)
|
||||
.uuid(uuid)
|
||||
.createTime(LocalDateTime.now())
|
||||
.updateTime(LocalDateTime.now())
|
||||
.build());
|
||||
|
||||
// 将摘要、UUID 返回给前端
|
||||
return Response.success(NewChatRspVO.builder()
|
||||
.uuid(uuid)
|
||||
.summary(summary)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user