单聊对接

This commit is contained in:
dylanmay
2024-10-19 16:06:29 +08:00
parent aaba03d001
commit 90619542c8
19 changed files with 354 additions and 137 deletions

View File

@ -1,4 +1,4 @@
import { MessageModelType } from '../types'
import { ConversationType, MessageModelType } from '../types'
export default class BaseConversation {
public id: string
@ -9,7 +9,8 @@ export default class BaseConversation {
public updateTime: number
public unreadCount: number
public msgList: Array<MessageModelType>
public type: ConversationType
public targetId: number
constructor(
id: string,
avatar: string,
@ -18,7 +19,9 @@ export default class BaseConversation {
createTime: number,
updateTime: number,
unreadCount: number,
msgList: Array<MessageModelType>
msgList: Array<MessageModelType>,
type: ConversationType,
targetId: number
) {
this.id = id
this.avatar = avatar
@ -28,5 +31,7 @@ export default class BaseConversation {
this.updateTime = updateTime
this.unreadCount = unreadCount
this.msgList = msgList
this.type = type
this.targetId = targetId
}
}

View File

@ -1,16 +1,18 @@
import { MessageRole, MessageType, SendStatus } from '../types'
import { MessageRole, ContentType, SendStatus } from '../types'
export default class BaseMessage {
id: string
avatar: string
nickname: string
id?: string
avatar?: string
nickname?: string
createTime: number
isRead: boolean
role: MessageRole
sendStatus: SendStatus
messageType: MessageType
contentType: ContentType
conversationId: string
clientMessageId: string
receiverId: number
conversationType: number
constructor(
id: string,
avatar: string,
@ -19,8 +21,10 @@ export default class BaseMessage {
isRead: boolean,
role: MessageRole,
sendStauts: SendStatus,
messageType: MessageType,
conversationId: string
contentType: ContentType,
conversationId: string,
receiverId: number,
conversationType: number
) {
this.id = id
this.avatar = avatar
@ -29,7 +33,21 @@ export default class BaseMessage {
this.isRead = isRead
this.role = role
this.sendStatus = sendStauts
this.messageType = messageType
this.contentType = contentType
this.conversationId = conversationId
this.receiverId = receiverId
this.clientMessageId = this.generateClientMessageId()
this.conversationType = conversationType
}
private generateClientMessageId() {
const timestamp = Date.now().toString() // 获取当前时间戳
const randomPart = 'xxxx-xxxx-4xxx-yxxx-xxxx'.replace(/[xy]/g, function (c) {
const r = (Math.random() * 16) | 0,
v = c === 'x' ? r : (r & 0x3) | 0x8
return v.toString(16)
})
return `${timestamp}-${randomPart}`
}
}

View File

@ -0,0 +1,5 @@
export interface BaseResponse<T> {
code: number // 0表示成功其他表示失败
message: string // 返回的信息,可以是成功或错误信息
data: T // 泛型数据,成功时返回数据,失败时为 null
}

View File

@ -10,8 +10,21 @@ export class ChatConversation extends BaseConversation {
createTime: number,
updateTime: number,
unreadCount: number,
msgList: Array<BaseMessage>
msgList: Array<BaseMessage>,
type: number,
targetId: number
) {
super(id, avatar, name, descrition, createTime, updateTime, unreadCount, msgList)
super(
id,
avatar,
name,
descrition,
createTime,
updateTime,
unreadCount,
msgList,
type,
targetId
)
}
}

View File

@ -1,4 +1,4 @@
import { MessageRole, MessageType, SendStatus } from '../types'
import { MessageRole, ContentType, SendStatus } from '@/views/chat/types/index.d.ts'
import BaseMessage from './BaseMessage'
export default class ImageMessage extends BaseMessage {
@ -13,10 +13,23 @@ export default class ImageMessage extends BaseMessage {
content: string,
role: MessageRole,
sendStatus: SendStatus,
messageType: MessageType,
conversationId: string
conversationId: string,
receiverId: number,
conversationType: number
) {
super(id, avatar, nickname, createTime, isRead, role, sendStatus, messageType, conversationId)
super(
id,
avatar,
nickname,
createTime,
isRead,
role,
sendStatus,
ContentType.IMAGE,
conversationId,
receiverId,
conversationType
)
this.content = content
}
}

View File

@ -1,4 +1,4 @@
import { MessageRole, MessageType, SendStatus } from '../types'
import { MessageRole, ContentType, SendStatus } from '@/views/chat/types/index.d.ts'
import BaseMessage from './BaseMessage'
export default class TextMessage extends BaseMessage {
@ -13,10 +13,23 @@ export default class TextMessage extends BaseMessage {
content: string,
role: MessageRole,
sendStatus: SendStatus,
messageType: MessageType,
conversationId: string
conversationId: string,
receiverId: number,
conversationType: number
) {
super(id, avatar, nickname, createTime, isRead, role, sendStatus, messageType, conversationId)
super(
id,
avatar,
nickname,
createTime,
isRead,
role,
sendStatus,
ContentType.TEXT,
conversationId,
receiverId,
conversationType
)
this.content = content
}
}