diff --git a/Touchkebao/src/pages/pc/ckbox/weChat/components/ChatWindow/components/MessageEnter/components/toContract/index.tsx b/Touchkebao/src/pages/pc/ckbox/weChat/components/ChatWindow/components/MessageEnter/components/toContract/index.tsx index 7c569755..1c7975f5 100644 --- a/Touchkebao/src/pages/pc/ckbox/weChat/components/ChatWindow/components/MessageEnter/components/toContract/index.tsx +++ b/Touchkebao/src/pages/pc/ckbox/weChat/components/ChatWindow/components/MessageEnter/components/toContract/index.tsx @@ -7,9 +7,11 @@ import { WechatFriendRebackAllot, } from "@/pages/pc/ckbox/weChat/api"; import { useCurrentContact } from "@/store/module/weChat/weChat"; -import { useCkChatStore } from "@/store/module/ckchat/ckchat"; -import { ContactManager } from "@/utils/dbAction"; +import { ContactManager } from "@/utils/dbAction/contact"; +import { MessageManager } from "@/utils/dbAction/message"; +import { triggerRefresh } from "@/store/module/weChat/message"; import { useUserStore } from "@/store/module/user"; +import { useWeChatStore } from "@/store/module/weChat/weChat"; const { TextArea } = Input; const { Option } = Select; @@ -33,6 +35,9 @@ const ToContract: React.FC = ({ disabled = false, }) => { const currentContact = useCurrentContact(); + const clearCurrentContact = useWeChatStore( + state => state.clearCurrentContact, + ); const [visible, setVisible] = useState(false); const [selectedTarget, setSelectedTarget] = useState(null); const [comment, setComment] = useState(""); @@ -40,7 +45,6 @@ const ToContract: React.FC = ({ const [customerServiceList, setCustomerServiceList] = useState( [], ); - const deleteChatSession = useCkChatStore(state => state.deleteChatSession); // 打开弹窗 const openModal = () => { setVisible(true); @@ -67,8 +71,6 @@ const ToContract: React.FC = ({ try { setLoading(true); - console.log(currentContact); - // 调用转接接口 if (currentContact) { if ("chatroomId" in currentContact && currentContact.chatroomId) { @@ -88,18 +90,37 @@ const ToContract: React.FC = ({ } } - message.success("转接成功"); + // 先关闭弹窗 + closeModal(); + + // 删除本地数据库记录并关闭聊天窗口 try { - // 删除聊天会话 - deleteChatSession(currentContact.id); - // 删除本地数据库记录 const currentUserId = useUserStore.getState().user?.id || 0; const contactType = "chatroomId" in currentContact ? "group" : "friend"; + + // 1. 从会话列表数据库删除 + await MessageManager.deleteSession( + currentUserId, + currentContact.id, + contactType, + ); + console.log("✅ 已从会话列表删除"); + + // 2. 从联系人数据库删除 await ContactManager.deleteContact(currentContact.id); + console.log("✅ 已从联系人数据库删除"); + + // 3. 触发会话列表刷新 + triggerRefresh(); + + // 4. 清空当前选中的联系人(关闭聊天窗口) + clearCurrentContact(); + + message.success("转接成功,已清理本地数据"); } catch (deleteError) { console.error("删除本地数据失败:", deleteError); + message.error("删除本地数据失败"); } - closeModal(); } catch (error) { console.error("转接失败:", error); message.error("转接失败,请重试"); @@ -126,18 +147,37 @@ const ToContract: React.FC = ({ } } - message.success("转回成功"); + // 先关闭弹窗 + closeModal(); + + // 删除本地数据库记录并关闭聊天窗口 try { - // 删除聊天会话 - deleteChatSession(currentContact.id); - // 删除本地数据库记录 const currentUserId = useUserStore.getState().user?.id || 0; const contactType = "chatroomId" in currentContact ? "group" : "friend"; + + // 1. 从会话列表数据库删除 + await MessageManager.deleteSession( + currentUserId, + currentContact.id, + contactType, + ); + console.log("✅ 已从会话列表删除"); + + // 2. 从联系人数据库删除 await ContactManager.deleteContact(currentContact.id); + console.log("✅ 已从联系人数据库删除"); + + // 3. 触发会话列表刷新 + triggerRefresh(); + + // 4. 清空当前选中的联系人(关闭聊天窗口) + clearCurrentContact(); + + message.success("转回成功,已清理本地数据"); } catch (deleteError) { console.error("删除本地数据失败:", deleteError); + message.error("删除本地数据失败"); } - closeModal(); } catch (error) { console.error("转回失败:", error); message.error("转回失败,请重试"); diff --git a/Touchkebao/src/pages/pc/ckbox/weChat/components/ChatWindow/components/MessageEnter/index.tsx b/Touchkebao/src/pages/pc/ckbox/weChat/components/ChatWindow/components/MessageEnter/index.tsx index f302a759..73391f5e 100644 --- a/Touchkebao/src/pages/pc/ckbox/weChat/components/ChatWindow/components/MessageEnter/index.tsx +++ b/Touchkebao/src/pages/pc/ckbox/weChat/components/ChatWindow/components/MessageEnter/index.tsx @@ -49,8 +49,6 @@ const MessageEnter: React.FC = ({ contract }) => { const isLoadingAiChat = useWeChatStore(state => state.isLoadingAiChat); useEffect(() => { if (quoteMessageContent) { - console.log("quoteMessageContent", quoteMessageContent); - setInputValue(quoteMessageContent); } }, [quoteMessageContent]);