|
|
@@ -2,13 +2,17 @@ package cn.qinys.platform.mobile.service.impl;
|
|
|
|
|
|
import cn.qinys.platform.base.security.utils.CurrentUtils;
|
|
|
import cn.qinys.platform.entity.wishing.ChatMessage;
|
|
|
+import cn.qinys.platform.mobile.constants.MsgTypeEnum;
|
|
|
import cn.qinys.platform.mobile.mapper.ChatMessageMapper;
|
|
|
+import cn.qinys.platform.mobile.req.ChatHistoryReq;
|
|
|
import cn.qinys.platform.mobile.req.ChatReq;
|
|
|
import cn.qinys.platform.mobile.resp.ChatHistoryResp;
|
|
|
import cn.qinys.platform.mobile.service.ChatService;
|
|
|
import cn.qinys.platform.mobile.tool.DateTimeTools;
|
|
|
import cn.qinys.platform.mobile.tool.WeatherTools;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import jakarta.annotation.Resource;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.ai.chat.client.ChatClient;
|
|
|
@@ -35,7 +39,7 @@ public class ChatServiceImpl implements ChatService {
|
|
|
req.setConversationId(userId);
|
|
|
}
|
|
|
// 保存用户消息
|
|
|
- saveMessage(userId, req.getTreeId(), "user", req.getMessage());
|
|
|
+ saveMessage(userId, req.getTreeId(), "user", req.getMessage(), MsgTypeEnum.TEXT.getValue());
|
|
|
String reply;
|
|
|
try {
|
|
|
reply = chatClient.prompt()
|
|
|
@@ -50,7 +54,7 @@ public class ChatServiceImpl implements ChatService {
|
|
|
}
|
|
|
|
|
|
// 保存 AI 回复
|
|
|
- saveMessage(userId, req.getTreeId(), "ai", reply);
|
|
|
+ saveMessage(userId, req.getTreeId(), "ai", reply, MsgTypeEnum.TEXT.getValue());
|
|
|
|
|
|
return reply;
|
|
|
}
|
|
|
@@ -58,47 +62,30 @@ public class ChatServiceImpl implements ChatService {
|
|
|
// ...existing code...
|
|
|
|
|
|
@Override
|
|
|
- public ChatHistoryResp getHistory(Integer treeId) {
|
|
|
+ public Page<ChatHistoryResp> getHistory(ChatHistoryReq req) {
|
|
|
String userId = getUserId();
|
|
|
- ChatHistoryResp resp = new ChatHistoryResp();
|
|
|
- if ("0".equals(userId) || "anonymous".equals(userId)) {
|
|
|
- resp.setList(List.of());
|
|
|
- return resp;
|
|
|
+ if ("0".equals(userId)) {
|
|
|
+ return new Page<>(0, 0);
|
|
|
}
|
|
|
- LambdaQueryWrapper<ChatMessage> wrapper = new LambdaQueryWrapper<ChatMessage>()
|
|
|
- .eq(ChatMessage::getUserId, userId)
|
|
|
- .orderByAsc(ChatMessage::getCreatedAt);
|
|
|
- if (treeId != null) {
|
|
|
- wrapper.eq(ChatMessage::getTreeId, treeId);
|
|
|
- }
|
|
|
- List<ChatMessage> messages = chatMessageMapper.selectList(wrapper);
|
|
|
-
|
|
|
- List<ChatHistoryResp.ChatMsg> list = messages.stream().map(m -> {
|
|
|
- ChatHistoryResp.ChatMsg msg = new ChatHistoryResp.ChatMsg();
|
|
|
- msg.setRole(m.getRole());
|
|
|
- msg.setContent(m.getContent());
|
|
|
- msg.setCreatedAt(m.getCreatedAt());
|
|
|
- return msg;
|
|
|
- }).toList();
|
|
|
-
|
|
|
- resp.setList(list);
|
|
|
- return resp;
|
|
|
+ Page<ChatMessage> page = new Page<>(req.getPage(), req.getPageSize());
|
|
|
+ QueryWrapper<ChatMessage> wrapper = new QueryWrapper<>();
|
|
|
+ wrapper.eq("tree_id", req.getTreeId());
|
|
|
+ wrapper.eq("user_id", userId);
|
|
|
+ wrapper.orderByDesc("created_at");
|
|
|
+ return chatMessageMapper.getChatHistoryPage(page, wrapper);
|
|
|
}
|
|
|
|
|
|
- private void saveMessage(String userId, Integer treeId, String role, String content) {
|
|
|
+ private void saveMessage(String userId, Integer treeId, String role, String content, String type) {
|
|
|
ChatMessage msg = new ChatMessage();
|
|
|
msg.setUserId(userId);
|
|
|
msg.setTreeId(treeId);
|
|
|
msg.setRole(role);
|
|
|
msg.setContent(content);
|
|
|
+ msg.setType(type);
|
|
|
chatMessageMapper.insert(msg);
|
|
|
}
|
|
|
|
|
|
private String getUserId() {
|
|
|
- try {
|
|
|
- return CurrentUtils.getCurrentUserId();
|
|
|
- } catch (Exception e) {
|
|
|
- return "anonymous";
|
|
|
- }
|
|
|
+ return CurrentUtils.getCurrentUserId();
|
|
|
}
|
|
|
}
|