新增asyncMessageStatus接口以获取消息状态,并在消息处理逻辑中集成该接口以优化消息同步。调整ProfileCard组件的状态管理以支持快速回复功能。

This commit is contained in:
乘风
2025-12-06 17:10:57 +08:00
parent 903ea005e3
commit 1be091522e
3 changed files with 32 additions and 17 deletions

View File

@@ -2,6 +2,15 @@ import axios from "axios";
import { useUserStore } from "@/store/module/user";
import { request } from "@/api/request";
export function asyncMessageStatus(params: {
messageId: number;
wechatFriendId?: number;
wechatChatroomId?: number;
wechatAccountId: number;
}) {
return request("/v1/kefu/message/getMessageStatus", params, "GET");
}
//ai对话接口
export interface AiChatParams {
friendId: number;

View File

@@ -16,7 +16,7 @@ interface PersonProps {
}
const Person: React.FC<PersonProps> = ({ contract }) => {
const [activeKey, setActiveKey] = useState("profile");
const [activeKey, setActiveKey] = useState("quickwords");
const isGroup = "chatroomId" in contract;
// 使用state保存当前contract的副本确保在切换tab时不会丢失修改
const [currentContract, setCurrentContract] = useState<
@@ -52,8 +52,8 @@ const Person: React.FC<PersonProps> = ({ contract }) => {
}, [currentContract, isGroup]);
useEffect(() => {
setActiveKey("profile");
setRenderedKeys(["profile"]);
setActiveKey("quickwords");
setRenderedKeys(["quickwords"]);
}, [contract]);
const tabHeaderItems = useMemo(

View File

@@ -6,7 +6,7 @@ import { Messages } from "./msg.data";
import { db } from "@/utils/db";
import { Modal } from "antd";
import { useCustomerStore, updateCustomerList } from "../weChat/customer";
import { dataProcessing } from "@/api/ai";
import { dataProcessing, asyncMessageStatus } from "@/api/ai";
// 消息处理器类型定义
type MessageHandler = (message: WebSocketMessage) => void;
@@ -54,30 +54,36 @@ const messageHandlers: Record<string, MessageHandler> = {
// 发送消息响应
CmdSendMessageResp: (message: Messages) => {
const { findMessageBySeq, updateMessage } = getWeChatStoreMethods();
const msg = findMessageBySeq(message.seq);
if (msg) {
updateMessage(message.seq, {
sendStatus: 1,
id: message.friendMessage?.id || message.chatroomMessage?.id,
});
}
//异步传新消息给数据库
goAsyncServiceData(message);
asyncMessageStatus({
messageId: message.friendMessage?.id || message.chatroomMessage?.id,
wechatFriendId: message.friendMessage?.wechatFriendId,
wechatChatroomId: message.chatroomMessage?.wechatChatroomId,
wechatAccountId:
message.friendMessage?.wechatAccountId ||
message.chatroomMessage?.wechatAccountId,
}).then(res => {
if (msg) {
console.log("CmdSendMessageResp 发送消息响应", res);
updateMessage(message.seq, {
sendStatus: 0,
id: message.friendMessage?.id || message.chatroomMessage?.id,
});
}
});
},
CmdSendMessageResult: message => {
const { updateMessage } = getWeChatStoreMethods();
updateMessage(message.friendMessageId || message.chatroomMessageId, {
sendStatus: 0,
});
// 最终消息同步处理
console.log("CmdSendMessageResult 发送消息结果", message);
dataProcessing({
chatroomMessageId: message.chatroomMessageId,
friendMessageId: message.friendMessageId,
sendStatus: message.sendStatus,
type: "CmdSendMessageResult",
wechatAccountId: 1,
wechatTime: message.wechatTime,
wechatTime: message?.wechatTime,
});
},
// 接收消息响应