移除未使用的客服列表相关代码,优化消息管理逻辑,新增消息状态管理功能,提升代码结构和可读性。
This commit is contained in:
@@ -27,8 +27,6 @@ const MessageList: React.FC<MessageListProps> = () => {
|
|||||||
const kfSelected = useCkChatStore(state => state.kfSelected);
|
const kfSelected = useCkChatStore(state => state.kfSelected);
|
||||||
const { sendCommand } = useWebSocketStore();
|
const { sendCommand } = useWebSocketStore();
|
||||||
const onContactClick = (session: ContractData | weChatGroup) => {
|
const onContactClick = (session: ContractData | weChatGroup) => {
|
||||||
console.log(session);
|
|
||||||
|
|
||||||
setCurrentContact(session, true);
|
setCurrentContact(session, true);
|
||||||
};
|
};
|
||||||
const [chatSessions, setChatSessions] = useState<
|
const [chatSessions, setChatSessions] = useState<
|
||||||
|
|||||||
@@ -52,11 +52,6 @@ export const chatInitAPIdata = async () => {
|
|||||||
|
|
||||||
await asyncWeChatGroup(groupList);
|
await asyncWeChatGroup(groupList);
|
||||||
|
|
||||||
// //获取控制终端列表
|
|
||||||
// const kfUserList: KfUserListData[] = await getCustomerList();
|
|
||||||
|
|
||||||
// //获取用户列表
|
|
||||||
// updateCustomerList(kfUserList);
|
|
||||||
//获取标签列表
|
//获取标签列表
|
||||||
const countLables = await getCountLables();
|
const countLables = await getCountLables();
|
||||||
await asyncCountLables(countLables);
|
await asyncCountLables(countLables);
|
||||||
@@ -112,7 +107,6 @@ export const chatInitAPIdata = async () => {
|
|||||||
return {
|
return {
|
||||||
contractList,
|
contractList,
|
||||||
groupList,
|
groupList,
|
||||||
kfUserList,
|
|
||||||
};
|
};
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("获取联系人列表失败:", error);
|
console.error("获取联系人列表失败:", error);
|
||||||
|
|||||||
39
Touchkebao/src/store/module/weChat/message.data.ts
Normal file
39
Touchkebao/src/store/module/weChat/message.data.ts
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
export interface Message {
|
||||||
|
id: number;
|
||||||
|
wechatId: string;
|
||||||
|
nickname: string;
|
||||||
|
alias: string;
|
||||||
|
avatar: string;
|
||||||
|
region: string;
|
||||||
|
signature: string;
|
||||||
|
bindQQ: string;
|
||||||
|
bindEmail: string;
|
||||||
|
bindMobile: string;
|
||||||
|
createTime: string;
|
||||||
|
currentDeviceId: number;
|
||||||
|
isDeleted: boolean;
|
||||||
|
deleteTime: string;
|
||||||
|
groupId: number;
|
||||||
|
memo: string;
|
||||||
|
wechatVersion: string;
|
||||||
|
labels: string[];
|
||||||
|
lastUpdateTime: string;
|
||||||
|
isOnline?: boolean;
|
||||||
|
momentsMax: number;
|
||||||
|
momentsNum: number;
|
||||||
|
[key: string]: any;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Store State
|
||||||
|
export interface MessageState {
|
||||||
|
//消息列表
|
||||||
|
messageList: Message[];
|
||||||
|
//当前选中的消息
|
||||||
|
currentMessage: Message | null;
|
||||||
|
//更新消息列表
|
||||||
|
updateMessageList: (messageList: Message[]) => void;
|
||||||
|
//更新消息状态
|
||||||
|
updateMessageStatus: (messageId: number, status: string) => void;
|
||||||
|
//更新当前选中的消息
|
||||||
|
updateCurrentMessage: (message: Message) => void;
|
||||||
|
}
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
import { create } from "zustand";
|
||||||
|
import { persist } from "zustand/middleware";
|
||||||
|
import { Message, MessageState } from "./message.data";
|
||||||
|
export const useMessageStore = create<MessageState>()(
|
||||||
|
persist(
|
||||||
|
(set, get) => ({
|
||||||
|
messageList: [], //消息列表
|
||||||
|
currentMessage: null, //当前选中的消息
|
||||||
|
updateMessageList: (messageList: Message[]) => set({ messageList }), //更新消息列表
|
||||||
|
updateCurrentMessage: (message: Message) =>
|
||||||
|
set({ currentMessage: message }), //更新当前选中的消息
|
||||||
|
updateMessageStatus: (messageId: number, status: string) =>
|
||||||
|
set({
|
||||||
|
messageList: get().messageList.map(message =>
|
||||||
|
message.id === messageId ? { ...message, status } : message,
|
||||||
|
),
|
||||||
|
}), //更新消息状态
|
||||||
|
}),
|
||||||
|
{
|
||||||
|
name: "message-storage",
|
||||||
|
partialize: state => ({
|
||||||
|
messageList: [],
|
||||||
|
currentMessage: null,
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
|
/**
|
||||||
|
* 更新当前选中的消息
|
||||||
|
* @param message 消息
|
||||||
|
* @returns void
|
||||||
|
*/
|
||||||
|
export const updateCurrentMessage = (message: Message) =>
|
||||||
|
useMessageStore.getState().updateCurrentMessage(message);
|
||||||
|
/**
|
||||||
|
* 更新消息列表
|
||||||
|
* @param messageList 消息列表
|
||||||
|
* @returns void
|
||||||
|
*/
|
||||||
|
export const updateMessageList = (messageList: Message[]) =>
|
||||||
|
useMessageStore.getState().updateMessageList(messageList);
|
||||||
|
/**
|
||||||
|
* 获取当前选中的消息
|
||||||
|
* @returns Message | null
|
||||||
|
*/
|
||||||
|
export const getCurrentMessage = () =>
|
||||||
|
useMessageStore.getState().currentMessage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新消息状态
|
||||||
|
* @param messageId 消息ID
|
||||||
|
* @param status 状态
|
||||||
|
* @returns void
|
||||||
|
*/
|
||||||
|
export const updateMessageStatus = (messageId: number, status: string) =>
|
||||||
|
useMessageStore.getState().updateMessageStatus(messageId, status);
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
//消息管理器
|
//消息管理器
|
||||||
import { getkfUserList, asyncKfUserList } from "@/store/module/ckchat/ckchat";
|
|
||||||
import { useWeChatStore } from "../weChat/weChat";
|
import { useWeChatStore } from "../weChat/weChat";
|
||||||
import { WebSocketMessage } from "./websocket";
|
import { WebSocketMessage } from "./websocket";
|
||||||
import { deepCopy } from "@/utils/common";
|
import { deepCopy } from "@/utils/common";
|
||||||
import { Messages } from "./msg.data";
|
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";
|
||||||
// 消息处理器类型定义
|
// 消息处理器类型定义
|
||||||
type MessageHandler = (message: WebSocketMessage) => void;
|
type MessageHandler = (message: WebSocketMessage) => void;
|
||||||
const addMessage = useWeChatStore.getState().addMessage;
|
const addMessage = useWeChatStore.getState().addMessage;
|
||||||
@@ -20,21 +20,24 @@ const messageHandlers: Record<string, MessageHandler> = {
|
|||||||
CmdRequestWechatAccountsAliveStatusResp: message => {
|
CmdRequestWechatAccountsAliveStatusResp: message => {
|
||||||
// console.log("微信账号存活状态响应", message);
|
// console.log("微信账号存活状态响应", message);
|
||||||
// 获取客服列表
|
// 获取客服列表
|
||||||
const kfUserList = deepCopy(getkfUserList());
|
const customerList = deepCopy(useCustomerStore.getState().customerList);
|
||||||
const wechatAccountsAliveStatus = message.wechatAccountsAliveStatus || {};
|
const wechatAccountsAliveStatus = message.wechatAccountsAliveStatus || {};
|
||||||
// 遍历客服列表,更新存活状态
|
|
||||||
kfUserList.forEach(kfUser => {
|
// 遍历客服列表,更新在线状态
|
||||||
kfUser.isOnline = wechatAccountsAliveStatus[kfUser.id];
|
const updatedCustomerList = customerList.map(customer => ({
|
||||||
});
|
...customer,
|
||||||
|
isOnline: wechatAccountsAliveStatus[customer.id] || false,
|
||||||
|
}));
|
||||||
|
|
||||||
// 按在线状态排序,在线的排在前面
|
// 按在线状态排序,在线的排在前面
|
||||||
kfUserList.sort((a, b) => {
|
updatedCustomerList.sort((a, b) => {
|
||||||
if (a.isOnline && !b.isOnline) return -1;
|
if (a.isOnline && !b.isOnline) return -1;
|
||||||
if (!a.isOnline && b.isOnline) return 1;
|
if (!a.isOnline && b.isOnline) return 1;
|
||||||
return 0;
|
return 0;
|
||||||
});
|
});
|
||||||
|
|
||||||
asyncKfUserList(kfUserList);
|
// 更新客服列表
|
||||||
|
updateCustomerList(updatedCustomerList);
|
||||||
},
|
},
|
||||||
// 发送消息响应
|
// 发送消息响应
|
||||||
CmdSendMessageResp: message => {
|
CmdSendMessageResp: message => {
|
||||||
@@ -57,7 +60,7 @@ const messageHandlers: Record<string, MessageHandler> = {
|
|||||||
// 在这里添加具体的处理逻辑
|
// 在这里添加具体的处理逻辑
|
||||||
receivedMsg(message.friendMessage || message.chatroomMessage);
|
receivedMsg(message.friendMessage || message.chatroomMessage);
|
||||||
},
|
},
|
||||||
CmdFriendInfoChanged: message => {
|
CmdFriendInfoChanged: () => {
|
||||||
// console.log("好友信息变更", message);
|
// console.log("好友信息变更", message);
|
||||||
// 在这里添加具体的处理逻辑
|
// 在这里添加具体的处理逻辑
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user