diff --git a/Cunkebao/src/pages/pc/ckbox/components/ChatWindow/components/MessageRecord/MessageRecord.module.scss b/Cunkebao/src/pages/pc/ckbox/components/ChatWindow/components/MessageRecord/MessageRecord.module.scss index cfd65086..96fe8a3e 100644 --- a/Cunkebao/src/pages/pc/ckbox/components/ChatWindow/components/MessageRecord/MessageRecord.module.scss +++ b/Cunkebao/src/pages/pc/ckbox/components/ChatWindow/components/MessageRecord/MessageRecord.module.scss @@ -33,25 +33,6 @@ font-size: 12px; margin: 8px 0; position: relative; - - &::before { - content: ''; - position: absolute; - top: 50%; - left: 0; - right: 0; - height: 1px; - background: #e8e8e8; - z-index: 0; - } - - &::after { - content: attr(data-time); - background: #f5f5f5; - padding: 0 12px; - position: relative; - z-index: 1; - } } // 消息项 @@ -235,4 +216,4 @@ max-width: 150px; max-height: 150px; } -} \ No newline at end of file +} diff --git a/Cunkebao/src/pages/pc/ckbox/components/ChatWindow/components/MessageRecord/index.tsx b/Cunkebao/src/pages/pc/ckbox/components/ChatWindow/components/MessageRecord/index.tsx index 3c059ad9..e2ea13bb 100644 --- a/Cunkebao/src/pages/pc/ckbox/components/ChatWindow/components/MessageRecord/index.tsx +++ b/Cunkebao/src/pages/pc/ckbox/components/ChatWindow/components/MessageRecord/index.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useRef } from "react"; -import { Avatar } from "antd"; +import { Avatar, Divider } from "antd"; import { UserOutlined } from "@ant-design/icons"; import { ChatRecord, ContractData, weChatGroup } from "@/pages/pc/ckbox/data"; import { formatWechatTime } from "@/utils/common"; @@ -18,7 +18,6 @@ const MessageRecord: React.FC = ({ contract }) => { ); useEffect(() => { - console.log(currentMessages); scrollToBottom(); }, [currentMessages]); @@ -195,7 +194,9 @@ const MessageRecord: React.FC = ({ contract }) => {
{groupMessagesByTime(currentMessages).map((group, groupIndex) => ( -
{group.time}
+ +
{group.time}
+
{group.messages.map(renderMessage)}
))} diff --git a/Cunkebao/src/pages/pc/ckbox/components/SidebarMenu/MessageList/index.tsx b/Cunkebao/src/pages/pc/ckbox/components/SidebarMenu/MessageList/index.tsx index dfaab7e4..14c68a3d 100644 --- a/Cunkebao/src/pages/pc/ckbox/components/SidebarMenu/MessageList/index.tsx +++ b/Cunkebao/src/pages/pc/ckbox/components/SidebarMenu/MessageList/index.tsx @@ -11,10 +11,11 @@ interface MessageListProps {} const MessageList: React.FC = () => { const { setCurrentContact, currentContract } = useWeChatStore(); - const chatSessions = useCkChatStore(state => state.chatSessions); + const chatSessions = useCkChatStore(state => state.getChatSessions()); const onContactClick = (session: ContractData | weChatGroup) => { setCurrentContact(session, true); }; + return (
{ + if (group && group.wechatAccountId) { + uniqueAccountIdsSet.add(group.wechatAccountId); + } + }); + // 将Set转换为数组并返回 return Array.from(uniqueAccountIdsSet); }; diff --git a/Cunkebao/src/store/module/ckchat/ckchat.ts b/Cunkebao/src/store/module/ckchat/ckchat.ts index d0a16103..5c092777 100644 --- a/Cunkebao/src/store/module/ckchat/ckchat.ts +++ b/Cunkebao/src/store/module/ckchat/ckchat.ts @@ -7,7 +7,7 @@ import { KfUserListData, ContactGroupByLabel, } from "@/pages/pc/ckbox/data"; -import { kfUserService, weChatGroupService, contractService } from "@/utils/db"; +import { weChatGroupService, contractService } from "@/utils/db"; import { createContractList } from "@/store/module/ckchat/api"; export const useCkChatStore = createPersistStore( @@ -362,7 +362,6 @@ export const useCkChatStore = createPersistStore( })(), // 添加聊天会话 addChatSession: (session: ContractData | weChatGroup) => { - session.unreadCount = 0; set(state => { // 检查是否已存在相同id的会话 const exists = state.chatSessions.some(item => item.id === session.id); diff --git a/Cunkebao/src/store/module/weChat/weChat.ts b/Cunkebao/src/store/module/weChat/weChat.ts index 4ab64187..1a90497e 100644 --- a/Cunkebao/src/store/module/weChat/weChat.ts +++ b/Cunkebao/src/store/module/weChat/weChat.ts @@ -8,6 +8,7 @@ import { import { WeChatState } from "./weChat.data"; import { clearUnreadCount, updateConfig } from "@/pages/pc/ckbox/api"; import { ContractData, weChatGroup } from "@/pages/pc/ckbox/data"; +import { weChatGroupService, contractService } from "@/utils/db"; import { addChatSession, updateChatSession, @@ -87,22 +88,14 @@ export const useWeChatStore = create()( })); }, - receivedMsg: message => { + receivedMsg: async message => { const currentContract = useWeChatStore.getState().currentContract; //判断群还是好友 const getMessageId = - currentContract?.chatroomId || message.wechatFriendId; - const isGroup = currentContract?.chatroomId; - - if ( - currentContract && - currentContract.wechatAccountId == message.wechatAccountId && - currentContract.id == getMessageId - ) { - console.log("进入"); - if (isGroup) { - message.unreadCount = 1; - } + message?.wechatChatroomId || message.wechatFriendId; + const isWechatGroup = message?.wechatChatroomId; + //当前选中聊天的群或好友 + if (currentContract && currentContract.id == getMessageId) { set(state => ({ currentMessages: [...state.currentMessages, message], })); @@ -113,6 +106,22 @@ export const useWeChatStore = create()( if (session) { session.unreadCount = Number(session.unreadCount) + 1; updateChatSession(session); + } else { + if (isWechatGroup) { + const [group] = await weChatGroupService.findByIds(getMessageId); + if (group) { + addChatSession({ + ...group, + unreadCount: 1, + }); + } + } else { + const [user] = await contractService.findByIds(getMessageId); + addChatSession({ + ...user, + unreadCount: 1, + }); + } } } }, diff --git a/Cunkebao/src/utils/db.ts b/Cunkebao/src/utils/db.ts index 5724fd53..cebcff29 100644 --- a/Cunkebao/src/utils/db.ts +++ b/Cunkebao/src/utils/db.ts @@ -39,16 +39,6 @@ export interface KfUserWithServerId extends Omit { id?: number; // 接口数据的原始ID字段 } -export interface weChatGroupServerId extends Omit { - serverId: number | string; // 服务器ID作为主键 - id?: number; // 接口数据的原始ID字段 -} - -export interface ContractWithServerId extends Omit { - serverId: number | string; // 服务器ID作为主键 - id?: number; // 接口数据的原始ID字段 -} - // 新联系人列表数据接口 export interface NewContactListData { serverId: number | string; // 服务器ID作为主键 @@ -61,8 +51,8 @@ export interface NewContactListData { // 数据库类 class CunkebaoDatabase extends Dexie { kfUsers!: Table; - weChatGroup!: Table; - contracts!: Table; + weChatGroup!: Table; + contracts!: Table; newContractList!: Table; messageList!: Table; @@ -74,7 +64,7 @@ class CunkebaoDatabase extends Dexie { kfUsers: "serverId, id, tenantId, wechatId, nickname, alias, avatar, gender, region, signature, bindQQ, bindEmail, bindMobile, createTime, currentDeviceId, isDeleted, deleteTime, groupId, memo, wechatVersion, lastUpdateTime, isOnline", weChatGroup: - "serverId, id, wechatAccountId, tenantId, accountId, chatroomId, chatroomOwner, conRemark, nickname, chatroomAvatar, groupId, config, unreadCount, notice, selfDisplyName", + "serverId, id, wechatAccountId, tenantId, accountId, chatroomId, chatroomOwner, conRemark, nickname, chatroomAvatar,wechatChatroomId, groupId, config, unreadCount, notice, selfDisplyName", contracts: "serverId, id, wechatAccountId, wechatId, alias, conRemark, nickname, quanPin, avatar, gender, region, addFrom, phone, signature, accountId, extendFields, city, lastUpdateTime, isPassed, tenantId, groupId, thirdParty, additionalPicture, desc, config, lastMessageTime, unreadCount, duplicate", newContractList: "serverId, id, groupName, contacts",