feat(chat): 添加私信功能和WebSocket实时通信

- 集成WebSocket管理器,支持心跳、自动重连、消息队列
- 实现私信相关API接口,包括会话列表、历史消息、已读标记等
- 添加聊天页面和会话列表页面,支持实时消息收发
- 配置地图权限和腾讯地图SDK用于酒局定位功能
- 修改应用名称为"喝酒了么"并更新应用描述
- 在App.vue中初始化WebSocket连接和私信功能
- 添加详细的私信模块接口文档和Mock数据
- 优化单图片动态高度计算和预加载逻辑
This commit is contained in:
cg
2026-07-21 21:27:01 +08:00
parent 0332aabba0
commit eaa0d7101f
14 changed files with 2112 additions and 38 deletions
+33 -1
View File
@@ -158,7 +158,7 @@ export async function refreshAuthToken() {
// ==========================================
// 酒友圈 API(当前返回 Mock 数据,后端就绪后切换为 SDK 调用)
// ==========================================
import { MOCK_FEEDS, MOCK_COMMENTS, MOCK_FRIENDS, MOCK_FRIEND_REQUESTS, MOCK_EVENTS } from './mock-data'
import { MOCK_FEEDS, MOCK_COMMENTS, MOCK_FRIENDS, MOCK_FRIEND_REQUESTS, MOCK_EVENTS, MOCK_CONVERSATIONS, MOCK_MESSAGES } from './mock-data'
/** 模拟网络延迟 */
function mockDelay(data, ms = 300) {
@@ -258,3 +258,35 @@ export function QuitEvent({ eventId }) {
export function CheckInEvent({ eventId }) {
return mockDelay({ success: true })
}
// ==========================================
// 私信 API(当前返回 Mock 数据,后端就绪后切换为 SDK 调用)
// ==========================================
/** 获取会话列表 */
export function GetConversations() {
// TODO: 后端就绪后替换为 client.GetConversations(...)
return mockDelay({ list: MOCK_CONVERSATIONS })
}
/** 获取历史消息 */
export function GetMessages({ conversationId, page = 1, pageSize = 20 } = {}) {
// TODO: 后端就绪后替换为 client.GetMessages(...)
const all = MOCK_MESSAGES[conversationId] || []
const start = (page - 1) * pageSize
const list = all.slice(start, start + pageSize)
return mockDelay({ list, hasMore: start + pageSize < all.length })
}
/** 标记会话已读 */
export function MarkRead({ conversationId }) {
// TODO: 后端就绪后替换为 client.MarkRead(...)
return mockDelay({ success: true })
}
/** 获取未读消息总数 */
export function GetUnreadCount() {
// TODO: 后端就绪后替换为 client.GetUnreadCount(...)
const total = MOCK_CONVERSATIONS.reduce((sum, c) => sum + c.unread, 0)
return mockDelay({ total })
}