新增asyncMessageStatus接口以获取消息状态,并在消息处理逻辑中集成该接口以优化消息同步。调整ProfileCard组件的状态管理以支持快速回复功能。
This commit is contained in:
@@ -2,6 +2,15 @@ import axios from "axios";
|
|||||||
import { useUserStore } from "@/store/module/user";
|
import { useUserStore } from "@/store/module/user";
|
||||||
import { request } from "@/api/request";
|
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对话接口
|
//ai对话接口
|
||||||
export interface AiChatParams {
|
export interface AiChatParams {
|
||||||
friendId: number;
|
friendId: number;
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ interface PersonProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const Person: React.FC<PersonProps> = ({ contract }) => {
|
const Person: React.FC<PersonProps> = ({ contract }) => {
|
||||||
const [activeKey, setActiveKey] = useState("profile");
|
const [activeKey, setActiveKey] = useState("quickwords");
|
||||||
const isGroup = "chatroomId" in contract;
|
const isGroup = "chatroomId" in contract;
|
||||||
// 使用state保存当前contract的副本,确保在切换tab时不会丢失修改
|
// 使用state保存当前contract的副本,确保在切换tab时不会丢失修改
|
||||||
const [currentContract, setCurrentContract] = useState<
|
const [currentContract, setCurrentContract] = useState<
|
||||||
@@ -52,8 +52,8 @@ const Person: React.FC<PersonProps> = ({ contract }) => {
|
|||||||
}, [currentContract, isGroup]);
|
}, [currentContract, isGroup]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setActiveKey("profile");
|
setActiveKey("quickwords");
|
||||||
setRenderedKeys(["profile"]);
|
setRenderedKeys(["quickwords"]);
|
||||||
}, [contract]);
|
}, [contract]);
|
||||||
|
|
||||||
const tabHeaderItems = useMemo(
|
const tabHeaderItems = useMemo(
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import { Messages } from "./msg.data";
|
|||||||
import { db } from "@/utils/db";
|
import { db } from "@/utils/db";
|
||||||
import { Modal } from "antd";
|
import { Modal } from "antd";
|
||||||
import { useCustomerStore, updateCustomerList } from "../weChat/customer";
|
import { useCustomerStore, updateCustomerList } from "../weChat/customer";
|
||||||
import { dataProcessing } from "@/api/ai";
|
import { dataProcessing, asyncMessageStatus } from "@/api/ai";
|
||||||
// 消息处理器类型定义
|
// 消息处理器类型定义
|
||||||
type MessageHandler = (message: WebSocketMessage) => void;
|
type MessageHandler = (message: WebSocketMessage) => void;
|
||||||
|
|
||||||
@@ -54,30 +54,36 @@ const messageHandlers: Record<string, MessageHandler> = {
|
|||||||
// 发送消息响应
|
// 发送消息响应
|
||||||
CmdSendMessageResp: (message: Messages) => {
|
CmdSendMessageResp: (message: Messages) => {
|
||||||
const { findMessageBySeq, updateMessage } = getWeChatStoreMethods();
|
const { findMessageBySeq, updateMessage } = getWeChatStoreMethods();
|
||||||
|
|
||||||
const msg = findMessageBySeq(message.seq);
|
const msg = findMessageBySeq(message.seq);
|
||||||
if (msg) {
|
|
||||||
updateMessage(message.seq, {
|
|
||||||
sendStatus: 1,
|
|
||||||
id: message.friendMessage?.id || message.chatroomMessage?.id,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//异步传新消息给数据库
|
//异步传新消息给数据库
|
||||||
goAsyncServiceData(message);
|
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 => {
|
CmdSendMessageResult: message => {
|
||||||
const { updateMessage } = getWeChatStoreMethods();
|
console.log("CmdSendMessageResult 发送消息结果", message);
|
||||||
updateMessage(message.friendMessageId || message.chatroomMessageId, {
|
|
||||||
sendStatus: 0,
|
|
||||||
});
|
|
||||||
// 最终消息同步处理
|
|
||||||
dataProcessing({
|
dataProcessing({
|
||||||
chatroomMessageId: message.chatroomMessageId,
|
chatroomMessageId: message.chatroomMessageId,
|
||||||
friendMessageId: message.friendMessageId,
|
friendMessageId: message.friendMessageId,
|
||||||
sendStatus: message.sendStatus,
|
sendStatus: message.sendStatus,
|
||||||
type: "CmdSendMessageResult",
|
type: "CmdSendMessageResult",
|
||||||
wechatAccountId: 1,
|
wechatAccountId: 1,
|
||||||
wechatTime: message.wechatTime,
|
wechatTime: message?.wechatTime,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
// 接收消息响应
|
// 接收消息响应
|
||||||
|
|||||||
Reference in New Issue
Block a user