新增asyncMessageStatus接口以获取消息状态,并在消息处理逻辑中集成该接口以优化消息同步。调整ProfileCard组件的状态管理以支持快速回复功能。
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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,
|
||||
});
|
||||
},
|
||||
// 接收消息响应
|
||||
|
||||
Reference in New Issue
Block a user