feat(群聊): 实现群聊消息展示及成员信息获取功能

- 在WeChatState中新增currentGroupMembers字段存储群成员信息
- 添加getGroupMembers API接口获取群成员数据
- 重构消息类型定义,统一使用ChatRecord接口
- 修改消息处理逻辑,支持群聊消息展示
- 调整聊天窗口样式,区分群聊和私聊消息显示
- 实现群成员头像和昵称展示功能
This commit is contained in:
超级老白兔
2025-09-04 18:07:42 +08:00
parent a6134bb455
commit 0d18623473
8 changed files with 109 additions and 51 deletions

View File

@@ -9,6 +9,7 @@ export interface WeChatState {
// 消息加载状态
messagesLoading: boolean;
currentGroupMembers: any[];
// Actions
setCurrentContact: (

View File

@@ -1,6 +1,10 @@
import { create } from "zustand";
import { persist } from "zustand/middleware";
import { getChatMessages, getChatroomMessages } from "@/pages/pc/ckbox/api";
import {
getChatMessages,
getChatroomMessages,
getGroupMembers,
} from "@/pages/pc/ckbox/api";
import { WeChatState } from "./weChat.data";
import { clearUnreadCount, updateConfig } from "@/pages/pc/ckbox/api";
import { ContractData, weChatGroup } from "@/pages/pc/ckbox/data";
@@ -17,6 +21,7 @@ export const useWeChatStore = create<WeChatState>()(
currentContract: null,
currentMessages: [],
messagesLoading: false,
currentGroupMembers: [],
// Actions
setCurrentContact: (
@@ -56,7 +61,10 @@ export const useWeChatStore = create<WeChatState>()(
if ("chatroomId" in contact && contact.chatroomId) {
params.wechatChatroomId = contact.id;
const messages = await getChatroomMessages(params);
set({ currentMessages: messages || [] });
const currentGroupMembers = await getGroupMembers({
id: contact.id,
});
set({ currentMessages: messages || [], currentGroupMembers });
} else {
params.wechatFriendId = contact.id;
const messages = await getChatMessages(params);

View File

@@ -1,27 +1,7 @@
export interface FriendMessage {
id: number;
wechatFriendId: number;
wechatAccountId: number;
tenantId: number;
accountId: number;
synergyAccountId: number;
content: string;
msgType: number;
msgSubType: number;
msgSvrId: string;
isSend: boolean;
createTime: string;
isDeleted: boolean;
deleteTime: string;
sendStatus: number;
wechatTime: number;
origin: number;
msgId: number;
recalled: boolean;
}
import { ChatRecord } from "@/pages/pc/ckbox/data";
export interface Messages {
friendMessage: FriendMessage | null;
chatroomMessage: string;
friendMessage?: ChatRecord | null;
chatroomMessage?: ChatRecord | null;
seq: number;
cmdType: string;
}

View File

@@ -28,7 +28,7 @@ const messageHandlers: Record<string, MessageHandler> = {
// 发送消息响应
CmdSendMessageResp: message => {
console.log("发送消息响应", message);
addMessage(message.friendMessage);
addMessage(message.friendMessage || message.chatroomMessage);
// 在这里添加具体的处理逻辑
},
CmdSendMessageResult: message => {
@@ -38,13 +38,13 @@ const messageHandlers: Record<string, MessageHandler> = {
// 接收消息响应
CmdReceiveMessageResp: message => {
console.log("接收消息响应", message);
addMessage(message.friendMessage);
addMessage(message.friendMessage || message.chatroomMessage);
// 在这里添加具体的处理逻辑
},
//收到消息
CmdNewMessage: (message: Messages) => {
// 在这里添加具体的处理逻辑
receivedMsg(message.friendMessage);
receivedMsg(message.friendMessage || message.chatroomMessage);
},
CmdFriendInfoChanged: message => {
// console.log("好友信息变更", message);