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:
2025-11-02 21:24:03 +08:00
parent 594adcc48d
commit f3f320f390
50 changed files with 1193 additions and 997 deletions

View File

@@ -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());
}
}