From 1caf567f107ab0df948d1a1071e93847e364da27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B6=85=E7=BA=A7=E8=80=81=E7=99=BD=E5=85=94?= Date: Thu, 11 Sep 2025 17:27:23 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=A7=BB=E9=99=A4=E8=B0=83?= =?UTF-8?q?=E8=AF=95=E6=97=A5=E5=BF=97=E5=92=8C=E6=9C=AA=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E7=9A=84=E6=A0=B7=E5=BC=8F=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 清理数据库操作和WebSocket连接中的调试日志 删除未使用的index.module.scss文件和相关引用 移除已删除的main.ts文件 --- Touchkebao/src/main.tsx | 4 - .../src/pages/pc/ckbox/index.module.scss | 198 ----------- Touchkebao/src/pages/pc/ckbox/index.tsx | 1 - Touchkebao/src/pages/pc/ckbox/main.ts | 307 ------------------ Touchkebao/src/pages/pc/ckbox/weChat/main.ts | 2 +- Touchkebao/src/utils/db.ts | 3 - 6 files changed, 1 insertion(+), 514 deletions(-) delete mode 100644 Touchkebao/src/pages/pc/ckbox/index.module.scss delete mode 100644 Touchkebao/src/pages/pc/ckbox/main.ts diff --git a/Touchkebao/src/main.tsx b/Touchkebao/src/main.tsx index e442b9c1..c1fe6c20 100644 --- a/Touchkebao/src/main.tsx +++ b/Touchkebao/src/main.tsx @@ -17,15 +17,11 @@ async function initializeApp() { try { // 确保数据库已打开 await db.open(); - console.log("数据库初始化成功"); - // 调试模式:清理所有数据 - console.log("调试模式:开始清理数据库数据..."); await db.kfUsers.clear(); await db.weChatGroup.clear(); await db.contracts.clear(); await db.newContractList.clear(); - console.log("数据库数据清理完成"); } catch (error) { console.error("数据库初始化失败:", error); // 可以选择显示错误提示或使用降级方案 diff --git a/Touchkebao/src/pages/pc/ckbox/index.module.scss b/Touchkebao/src/pages/pc/ckbox/index.module.scss deleted file mode 100644 index 9b37437e..00000000 --- a/Touchkebao/src/pages/pc/ckbox/index.module.scss +++ /dev/null @@ -1,198 +0,0 @@ -.ckboxLayout { - height: 100vh; - background: #fff; - display: flex; - flex-direction: column; - - .header { - background: #1890ff; - color: #fff; - height: 64px; - line-height: 64px; - padding: 0 24px; - font-size: 18px; - font-weight: bold; - } - - .verticalSider { - background: #2e2e2e; - border-right: 1px solid #f0f0f0; - overflow: hidden; - } - - .sider { - background: #fff; - border-right: 1px solid #f0f0f0; - overflow: auto; - } - - .sidebar { - height: 100%; - display: flex; - flex-direction: column; - - .searchBar { - padding: 16px; - border-bottom: 1px solid #f0f0f0; - background: #fff; - - :global(.ant-input) { - border-radius: 20px; - background: #f5f5f5; - border: none; - - &:focus { - background: #fff; - border: 1px solid #1890ff; - box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); - } - } - } - - .tabs { - flex: 1; - display: flex; - flex-direction: column; - - :global(.ant-tabs-content) { - flex: 1; - overflow: hidden; - } - - :global(.ant-tabs-tabpane) { - height: 100%; - overflow: hidden; - } - - :global(.ant-tabs-nav) { - margin: 0; - padding: 0 16px; - background: #fff; - border-bottom: 1px solid #f0f0f0; - - :global(.ant-tabs-tab) { - padding: 12px 16px; - margin: 0; - - &:hover { - color: #1890ff; - } - - &.ant-tabs-tab-active { - .ant-tabs-tab-btn { - color: #1890ff; - } - } - } - - :global(.ant-tabs-ink-bar) { - background: #1890ff; - } - } - } - - .emptyState { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - height: 200px; - color: #8c8c8c; - - p { - margin-top: 16px; - font-size: 14px; - } - } - } - - .mainContent { - background: #f5f5f5; - display: flex; - flex-direction: column; - overflow: auto; - - .chatContainer { - height: 100%; - display: flex; - flex-direction: column; - - .chatToolbar { - background: #fff; - border-bottom: 1px solid #f0f0f0; - padding: 8px 16px; - display: flex; - justify-content: flex-end; - align-items: center; - min-height: 48px; - } - } - - .welcomeScreen { - flex: 1; - display: flex; - align-items: center; - justify-content: center; - background: #fff; - - .welcomeContent { - text-align: center; - color: #8c8c8c; - - h2 { - margin: 24px 0 12px 0; - color: #262626; - font-size: 24px; - font-weight: 600; - } - - p { - font-size: 16px; - margin: 0; - } - } - } - } -} - -// 响应式设计 -@media (max-width: 768px) { - .ckboxLayout { - .sidebar { - .searchBar { - padding: 12px; - } - - .tabs { - :global(.ant-tabs-nav) { - padding: 0 12px; - - :global(.ant-tabs-tab) { - padding: 10px 12px; - } - } - } - } - - .mainContent { - .chatContainer { - .chatToolbar { - padding: 6px 12px; - min-height: 40px; - } - } - - .welcomeScreen { - .welcomeContent { - h2 { - font-size: 20px; - } - - p { - font-size: 14px; - } - } - } - } - } -} diff --git a/Touchkebao/src/pages/pc/ckbox/index.tsx b/Touchkebao/src/pages/pc/ckbox/index.tsx index 2ff2022a..039bac75 100644 --- a/Touchkebao/src/pages/pc/ckbox/index.tsx +++ b/Touchkebao/src/pages/pc/ckbox/index.tsx @@ -2,7 +2,6 @@ import React from "react"; import Layout from "@/components/Layout/Layout"; import { Outlet } from "react-router-dom"; import NavCommon from "./components/NavCommon"; -import styles from "./index.module.scss"; const CkboxPage: React.FC = () => { return ( { - try { - //获取联系人列表 - const contractList = await getAllContactList(); - - //获取联系人列表 - asyncContractList(contractList); - - //获取群列表 - const groupList = await getAllGroupList(); - - await asyncWeChatGroup(groupList); - - // 提取不重复的wechatAccountId组 - const uniqueWechatAccountIds: number[] = getUniqueWechatAccountIds( - contractList, - groupList, - ); - - //获取控制终端列表 - const kfUserList: KfUserListData[] = - await getControlTerminalListByWechatAccountIds(uniqueWechatAccountIds); - - //获取用户列表 - await asyncKfUserList(kfUserList); - - //获取标签列表 - const countLables = await getCountLables(); - await asyncCountLables(countLables); - - //获取消息会话列表并按lastUpdateTime排序 - const filterUserSessions = contractList?.filter( - v => v?.config && v.config?.chat, - ); - const filterGroupSessions = groupList?.filter( - 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 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; // 未读消息多的排在前面 - } - - return timeCompare; - }, - ); - //会话数据同步 - asyncChatSessions(sortedSessions); - - return { - contractList, - groupList, - kfUserList, - }; - } catch (error) { - console.error("获取联系人列表失败:", error); - return []; - } -}; -//发起soket连接 -export const initSocket = () => { - // 检查WebSocket是否已经连接 - const { status } = useWebSocketStore.getState(); - - // 如果已经连接或正在连接,则不重复连接 - if (["connected", "connecting"].includes(status)) { - console.log("WebSocket已连接或正在连接,跳过重复连接", { status }); - return; - } - - // 从store获取token和accountId - const { token2 } = useUserStore.getState(); - const { getAccountId } = useCkChatStore.getState(); - const Token = token2; - const accountId = getAccountId(); - // 使用WebSocket store初始化连接 - const { connect } = useWebSocketStore.getState(); - - // 连接WebSocket - connect({ - accessToken: Token, - accountId: Number(accountId), - client: "kefu-client", - cmdType: "CmdSignIn", - seq: +new Date(), - }); -}; - -export const getCountLables = async () => { - const LablesRes = await Promise.all( - [1, 2].map(item => - WechatGroup({ - groupType: item, - }), - ), - ); - const [friend, group] = LablesRes; - const countLables = [ - ...[ - { - id: 0, - groupName: "默认群分组", - groupType: 2, - }, - ], - ...group, - ...friend, - ...[ - { - id: 0, - groupName: "未分组", - groupType: 1, - }, - ], - ]; - - return countLables; -}; -/** - * 根据标签组织联系人 - * @param contractList 联系人列表 - * @param countLables 标签列表 - * @returns 按标签分组的联系人 - */ - -//获取控制终端列表 -export const getControlTerminalListByWechatAccountIds = ( - WechatAccountIds: number[], -) => { - return Promise.all( - WechatAccountIds.map(id => getControlTerminalList({ id: id })), - ); -}; -// 递归获取所有联系人列表 -export const getAllContactList = async () => { - try { - let allContacts = []; - let prevId = 0; - const count = 1000; - let hasMore = true; - - while (hasMore) { - const contractList = await getContactList({ - prevId, - count, - }); - - if ( - !contractList || - !Array.isArray(contractList) || - contractList.length === 0 - ) { - hasMore = false; - break; - } - - allContacts = [...allContacts, ...contractList]; - - // 如果返回的数据少于请求的数量,说明已经没有更多数据了 - if (contractList.length < count) { - hasMore = false; - } else { - // 获取最后一条数据的id作为下一次请求的prevId - const lastContact = contractList[contractList.length - 1]; - prevId = lastContact.id; - } - } - return allContacts; - } catch (error) { - console.error("获取所有联系人列表失败:", error); - return []; - } -}; - -// 提取不重复的wechatAccountId组 -export const getUniqueWechatAccountIds = ( - contacts: ContractData[], - groupList: weChatGroup[], -) => { - if (!contacts || !Array.isArray(contacts) || contacts.length === 0) { - return []; - } - - // 使用Set来存储不重复的wechatAccountId - const uniqueAccountIdsSet = new Set(); - - // 遍历联系人列表,将每个wechatAccountId添加到Set中 - contacts.forEach(contact => { - if (contact && contact.wechatAccountId) { - uniqueAccountIdsSet.add(contact.wechatAccountId); - } - }); - - // 遍历联系人列表,将每个wechatAccountId添加到Set中 - groupList.forEach(group => { - if (group && group.wechatAccountId) { - uniqueAccountIdsSet.add(group.wechatAccountId); - } - }); - - // 将Set转换为数组并返回 - return Array.from(uniqueAccountIdsSet); -}; -// 递归获取所有群列表 -export const getAllGroupList = async () => { - try { - let allContacts = []; - let prevId = 0; - const count = 1000; - let hasMore = true; - - while (hasMore) { - const contractList = await getGroupList({ - prevId, - count, - }); - - if ( - !contractList || - !Array.isArray(contractList) || - contractList.length === 0 - ) { - hasMore = false; - break; - } - - allContacts = [...allContacts, ...contractList]; - - // 如果返回的数据少于请求的数量,说明已经没有更多数据了 - if (contractList.length < count) { - hasMore = false; - } else { - // 获取最后一条数据的id作为下一次请求的prevId - const lastContact = contractList[contractList.length - 1]; - prevId = lastContact.id; - } - } - - return allContacts; - } catch (error) { - console.error("获取所有群列表失败:", error); - return []; - } -}; - -//获取token -const getToken = () => { - return new Promise((resolve, reject) => { - const params = { - grant_type: "password", - password: "kr123456", - username: "kr_xf3", - // username: "karuo", - // password: "zhiqun1984", - }; - loginWithToken(params) - .then(res => { - login2(res.access_token); - resolve(res.access_token); - }) - .catch(err => { - reject(err); - }); - }); -}; diff --git a/Touchkebao/src/pages/pc/ckbox/weChat/main.ts b/Touchkebao/src/pages/pc/ckbox/weChat/main.ts index 19f6cf62..ef73aef6 100644 --- a/Touchkebao/src/pages/pc/ckbox/weChat/main.ts +++ b/Touchkebao/src/pages/pc/ckbox/weChat/main.ts @@ -106,7 +106,7 @@ export const initSocket = () => { // 如果已经连接或正在连接,则不重复连接 if (["connected", "connecting"].includes(status)) { - console.log("WebSocket已连接或正在连接,跳过重复连接", { status }); + // console.log("WebSocket已连接或正在连接,跳过重复连接", { status }); return; } diff --git a/Touchkebao/src/utils/db.ts b/Touchkebao/src/utils/db.ts index cebcff29..1b751ff0 100644 --- a/Touchkebao/src/utils/db.ts +++ b/Touchkebao/src/utils/db.ts @@ -157,9 +157,6 @@ export class DatabaseService { serverId: item.id, // 使用接口的id作为serverId主键 })); - console.log( - `插入 ${processedData.length} 条新数据,跳过 ${dataList.length - newData.length} 条重复数据`, - ); return await this.table.bulkAdd(processedData as T[], { allKeys: true }); }