diff --git a/Touchkebao/src/pages/pc/ckbox/weChat/api.ts b/Touchkebao/src/pages/pc/ckbox/weChat/api.ts index af476f26..57f6cdf2 100644 --- a/Touchkebao/src/pages/pc/ckbox/weChat/api.ts +++ b/Touchkebao/src/pages/pc/ckbox/weChat/api.ts @@ -1,4 +1,5 @@ -import request from "@/api/request2"; +import request2 from "@/api/request2"; +import request from "@/api/request"; import { MessageData, ChatHistoryResponse, @@ -11,6 +12,16 @@ import { ChatSettings, } from "./data"; +//群、好友聊天记录列表 +export function getChatroomList() { + return request("/v1/kefu/wechatChatroom/list", {}, "GET"); +} + +//获取客服列表 +export function getAgentList() { + return request("/v1/kefu/customerService/list", {}, "GET"); +} + //读取聊天信息 //kf.quwanzhi.com:9991/api/WechatFriend/clearUnreadCount function jsonToQueryString(json) { @@ -30,7 +41,7 @@ export function WechatFriendAllot(params: { notifyReceiver: boolean; comment: string; }) { - return request( + return request2( "/api/wechatFriend/allot?" + jsonToQueryString(params), undefined, "PUT", @@ -39,7 +50,7 @@ export function WechatFriendAllot(params: { //获取可转移客服列表 export function getTransferableAgentList() { - return request("/api/account/myDepartmentAccountsForTransfer", {}, "GET"); + return request2("/api/account/myDepartmentAccountsForTransfer", {}, "GET"); } // 微信好友列表 @@ -47,7 +58,7 @@ export function WechatFriendRebackAllot(params: { wechatFriendId?: number; wechatChatroomId?: number; }) { - return request( + return request2( "/api/wechatFriend/rebackAllot?" + jsonToQueryString(params), undefined, "PUT", @@ -56,17 +67,17 @@ export function WechatFriendRebackAllot(params: { // 微信群列表 export function WechatGroup(params) { - return request("/api/WechatGroup/list", params, "GET"); + return request2("/api/WechatGroup/list", params, "GET"); } //获取聊天记录-1 清除未读 export function clearUnreadCount(params) { - return request("/api/WechatFriend/clearUnreadCount", params, "PUT"); + return request2("/api/WechatFriend/clearUnreadCount", params, "PUT"); } //更新配置 export function updateConfig(params) { - return request("/api/WechatFriend/updateConfig", params, "PUT"); + return request2("/api/WechatFriend/updateConfig", params, "PUT"); } //获取聊天记录-2 获取列表 export function getChatMessages(params: { @@ -78,7 +89,7 @@ export function getChatMessages(params: { Count: number; olderData: boolean; }) { - return request("/api/FriendMessage/SearchMessage", params, "GET"); + return request2("/api/FriendMessage/SearchMessage", params, "GET"); } export function getChatroomMessages(params: { wechatAccountId: number; @@ -89,12 +100,12 @@ export function getChatroomMessages(params: { Count: number; olderData: boolean; }) { - return request("/api/ChatroomMessage/SearchMessage", params, "GET"); + return request2("/api/ChatroomMessage/SearchMessage", params, "GET"); } //获取群列表 export function getGroupList(params: { prevId: number; count: number }) { - return request( + return request2( "/api/wechatChatroom/listExcludeMembersByPage?", params, "GET", @@ -103,7 +114,7 @@ export function getGroupList(params: { prevId: number; count: number }) { //获取群成员 export function getGroupMembers(params: { id: number }) { - return request( + return request2( "/api/WechatChatroom/listMembersByWechatChatroomId", params, "GET", @@ -112,7 +123,7 @@ export function getGroupMembers(params: { id: number }) { //触客宝登陆 export function loginWithToken(params: any) { - return request( + return request2( "/token", params, "POST", @@ -127,17 +138,17 @@ export function loginWithToken(params: any) { // 获取触客宝用户信息 export function getChuKeBaoUserInfo() { - return request("/api/account/self", {}, "GET"); + return request2("/api/account/self", {}, "GET"); } // 获取联系人列表 export const getContactList = (params: { prevId: number; count: number }) => { - return request("/api/wechatFriend/list", params, "GET"); + return request2("/api/wechatFriend/list", params, "GET"); }; //获取控制终端列表 export const getControlTerminalList = params => { - return request("/api/wechataccount", params, "GET"); + return request2("/api/wechataccount", params, "GET"); }; // 获取聊天历史 @@ -146,7 +157,7 @@ export const getChatHistory = ( page: number = 1, pageSize: number = 50, ): Promise => { - return request(`/v1/chats/${chatId}/messages`, { page, pageSize }, "GET"); + return request2(`/v1/chats/${chatId}/messages`, { page, pageSize }, "GET"); }; // 发送消息 @@ -155,7 +166,7 @@ export const sendMessage = ( content: string, type: MessageType = MessageType.TEXT, ): Promise => { - return request(`/v1/chats/${chatId}/messages`, { content, type }, "POST"); + return request2(`/v1/chats/${chatId}/messages`, { content, type }, "POST"); }; // 发送文件消息 @@ -167,17 +178,17 @@ export const sendFileMessage = ( const formData = new FormData(); formData.append("file", file); formData.append("type", type); - return request(`/v1/chats/${chatId}/messages/file`, formData, "POST"); + return request2(`/v1/chats/${chatId}/messages/file`, formData, "POST"); }; // 标记消息为已读 export const markMessageAsRead = (messageId: string): Promise => { - return request(`/v1/messages/${messageId}/read`, {}, "PUT"); + return request2(`/v1/messages/${messageId}/read`, {}, "PUT"); }; // 标记聊天为已读 export const markChatAsRead = (chatId: string): Promise => { - return request(`/v1/chats/${chatId}/read`, {}, "PUT"); + return request2(`/v1/chats/${chatId}/read`, {}, "PUT"); }; // 添加群组成员 @@ -185,7 +196,7 @@ export const addGroupMembers = ( groupId: string, memberIds: string[], ): Promise => { - return request(`/v1/groups/${groupId}/members`, { memberIds }, "POST"); + return request2(`/v1/groups/${groupId}/members`, { memberIds }, "POST"); }; // 移除群组成员 @@ -193,34 +204,34 @@ export const removeGroupMembers = ( groupId: string, memberIds: string[], ): Promise => { - return request(`/v1/groups/${groupId}/members`, { memberIds }, "DELETE"); + return request2(`/v1/groups/${groupId}/members`, { memberIds }, "DELETE"); }; // 获取在线状态 export const getOnlineStatus = (userId: string): Promise => { - return request(`/v1/users/${userId}/status`, {}, "GET"); + return request2(`/v1/users/${userId}/status`, {}, "GET"); }; // 获取消息状态 export const getMessageStatus = (messageId: string): Promise => { - return request(`/v1/messages/${messageId}/status`, {}, "GET"); + return request2(`/v1/messages/${messageId}/status`, {}, "GET"); }; // 上传文件 export const uploadFile = (file: File): Promise => { const formData = new FormData(); formData.append("file", file); - return request("/v1/upload", formData, "POST"); + return request2("/v1/upload", formData, "POST"); }; // 获取表情包列表 export const getEmojiList = (): Promise => { - return request("/v1/emojis", {}, "GET"); + return request2("/v1/emojis", {}, "GET"); }; // 获取快捷回复列表 export const getQuickReplies = (): Promise => { - return request("/v1/quick-replies", {}, "GET"); + return request2("/v1/quick-replies", {}, "GET"); }; // 添加快捷回复 @@ -228,49 +239,49 @@ export const addQuickReply = (data: { content: string; category: string; }): Promise => { - return request("/v1/quick-replies", data, "POST"); + return request2("/v1/quick-replies", data, "POST"); }; // 删除快捷回复 export const deleteQuickReply = (id: string): Promise => { - return request(`/v1/quick-replies/${id}`, {}, "DELETE"); + return request2(`/v1/quick-replies/${id}`, {}, "DELETE"); }; // 获取聊天设置 export const getChatSettings = (): Promise => { - return request("/v1/chat/settings", {}, "GET"); + return request2("/v1/chat/settings", {}, "GET"); }; // 更新聊天设置 export const updateChatSettings = ( settings: Partial, ): Promise => { - return request("/v1/chat/settings", settings, "PUT"); + return request2("/v1/chat/settings", settings, "PUT"); }; // 删除聊天会话 export const deleteChatSession = (chatId: string): Promise => { - return request(`/v1/chats/${chatId}`, {}, "DELETE"); + return request2(`/v1/chats/${chatId}`, {}, "DELETE"); }; // 置顶聊天会话 export const pinChatSession = (chatId: string): Promise => { - return request(`/v1/chats/${chatId}/pin`, {}, "PUT"); + return request2(`/v1/chats/${chatId}/pin`, {}, "PUT"); }; // 取消置顶聊天会话 export const unpinChatSession = (chatId: string): Promise => { - return request(`/v1/chats/${chatId}/unpin`, {}, "PUT"); + return request2(`/v1/chats/${chatId}/unpin`, {}, "PUT"); }; // 静音聊天会话 export const muteChatSession = (chatId: string): Promise => { - return request(`/v1/chats/${chatId}/mute`, {}, "PUT"); + return request2(`/v1/chats/${chatId}/mute`, {}, "PUT"); }; // 取消静音聊天会话 export const unmuteChatSession = (chatId: string): Promise => { - return request(`/v1/chats/${chatId}/unmute`, {}, "PUT"); + return request2(`/v1/chats/${chatId}/unmute`, {}, "PUT"); }; // 转发消息 @@ -278,10 +289,10 @@ export const forwardMessage = ( messageId: string, targetChatIds: string[], ): Promise => { - return request("/v1/messages/forward", { messageId, targetChatIds }, "POST"); + return request2("/v1/messages/forward", { messageId, targetChatIds }, "POST"); }; // 撤回消息 export const recallMessage = (messageId: string): Promise => { - return request(`/v1/messages/${messageId}/recall`, {}, "PUT"); + return request2(`/v1/messages/${messageId}/recall`, {}, "PUT"); }; diff --git a/Touchkebao/src/pages/pc/ckbox/weChat/main.ts b/Touchkebao/src/pages/pc/ckbox/weChat/main.ts index ef73aef6..151e8a26 100644 --- a/Touchkebao/src/pages/pc/ckbox/weChat/main.ts +++ b/Touchkebao/src/pages/pc/ckbox/weChat/main.ts @@ -13,6 +13,8 @@ import { getControlTerminalList, getContactList, getGroupList, + getAgentList, + getChatroomList, } from "./api"; import { useUserStore } from "@/store/module/user"; @@ -39,15 +41,7 @@ export const chatInitAPIdata = async () => { await asyncWeChatGroup(groupList); - // 提取不重复的wechatAccountId组 - const uniqueWechatAccountIds: number[] = getUniqueWechatAccountIds( - contractList, - groupList, - ); - - //获取控制终端列表 - const kfUserList: KfUserListData[] = - await getControlTerminalListByWechatAccountIds(uniqueWechatAccountIds); + const kfUserList: KfUserListData[] = await getAgentList(); //获取用户列表 await asyncKfUserList(kfUserList); @@ -64,28 +58,30 @@ export const chatInitAPIdata = async () => { v => v?.config && v.config?.chat, ); //排序功能 - const sortedSessions = [...filterUserSessions, ...filterGroupSessions].sort( - (a, b) => { - // 如果lastUpdateTime不存在,则将其排在最后 - if (!a.lastUpdateTime) return 1; - if (!b.lastUpdateTime) return -1; + // const sortedSessions = [...filterUserSessions, ...filterGroupSessions].sort( + // (a, b) => { + // // 如果lastUpdateTime不存在,则将其排在最后 + // if (!a.lastUpdateTime) return 1; + // if (!b.lastUpdateTime) return -1; - // 首先按时间降序排列(最新的在前面) - const timeCompare = - new Date(b.lastUpdateTime).getTime() - - new Date(a.lastUpdateTime).getTime(); + // // 首先按时间降序排列(最新的在前面) + // const timeCompare = + // new Date(b.lastUpdateTime).getTime() - + // new Date(a.lastUpdateTime).getTime(); - // 如果时间相同,则按未读消息数量降序排列 - if (timeCompare === 0) { - // 如果unreadCount不存在,则将其排在后面 - const aUnread = a.unreadCount || 0; - const bUnread = b.unreadCount || 0; - return bUnread - aUnread; // 未读消息多的排在前面 - } + // // 如果时间相同,则按未读消息数量降序排列 + // if (timeCompare === 0) { + // // 如果unreadCount不存在,则将其排在后面 + // const aUnread = a.unreadCount || 0; + // const bUnread = b.unreadCount || 0; + // return bUnread - aUnread; // 未读消息多的排在前面 + // } - return timeCompare; - }, - ); + // return timeCompare; + // }, + // ); + const sortedSessions = await getChatroomList(); + console.log("sortedSessions", sortedSessions); //会话数据同步 asyncChatSessions(sortedSessions); diff --git a/Touchkebao/src/store/module/websocket/msgManage.ts b/Touchkebao/src/store/module/websocket/msgManage.ts index 92ec518c..3f70d947 100644 --- a/Touchkebao/src/store/module/websocket/msgManage.ts +++ b/Touchkebao/src/store/module/websocket/msgManage.ts @@ -23,6 +23,14 @@ const messageHandlers: Record = { kfUserList.forEach(kfUser => { kfUser.isOnline = wechatAccountsAliveStatus[kfUser.id]; }); + + // 按在线状态排序,在线的排在前面 + kfUserList.sort((a, b) => { + if (a.isOnline && !b.isOnline) return -1; + if (!a.isOnline && b.isOnline) return 1; + return 0; + }); + asyncKfUserList(kfUserList); }, // 发送消息响应