云端文件下载

This commit is contained in:
2026-06-25 17:48:58 +08:00
parent d284789240
commit 488bebcc87
30 changed files with 5442 additions and 426 deletions

View File

@@ -1,6 +1,6 @@
// 云端基础URL
// const BASE_URL = 'https://cloud.yuxindazhineng.com'
const BASE_URL = 'https://cloudtest.yuxindazhineng.com'
const BASE_URL = 'https://cloud.yuxindazhineng.com'
// const BASE_URL = 'https://cloudtest.yuxindazhineng.com'
// const BASE_URL = 'https://yxdpqj.yuxindazhineng.com'
// 登录请求
@@ -85,8 +85,10 @@ export const getConversationMessages = async (token, conversatio_id) => {
if (res.statusCode === 200) {
const messagesInfo = res.data
if (messagesInfo) {
console.log("工作区id为", messagesInfo.workspace_id);
uni.setStorageSync('workspace_id', messagesInfo.workspace_id)
console.log("工作区id为", messagesInfo.workspace_id || '(无)');
if (messagesInfo.workspace_id) {
uni.setStorageSync('workspace_id', messagesInfo.workspace_id)
}
resolve(messagesInfo.messages)
} else {
const msg = res.data.error || '获取消息出错啦'
@@ -143,7 +145,7 @@ export const addMessageDict = async (token, role, conversation_id, message) => {
})
}
// 获取工作区息(非内容)
// 获取工作区息(非内容)
export const getWorkspaceByConversation = async (token, conversation_id) => {
return new Promise((resolve, reject) => {
uni.request({
@@ -162,11 +164,11 @@ export const getWorkspaceByConversation = async (token, conversation_id) => {
if (workspaceInfo?.success) {
resolve(workspaceInfo.workspace_id)
} else {
const msg = res.data.error || '获取工作区息出错啦'
const msg = res.data.error || '获取工作区息出错啦'
reject(msg)
}
} else {
reject(`获取工作区息失败:${res.statusCode}`)
reject(`获取工作区息失败:${res.statusCode}`)
}
},
fail: (err) => {
@@ -437,7 +439,7 @@ export const daleteWorkspace = (token, workspacesId, path) => {
"file_path": path
},
success: (res) => {
if(res.statusCode === 200){
if (res.statusCode === 200) {
const respond = res.data
if (respond.success) {
resolve(respond.message)
@@ -445,7 +447,7 @@ export const daleteWorkspace = (token, workspacesId, path) => {
const msg = respond?.error || '删除工作区文件出错啦'
reject(msg)
}
}else {
} else {
reject(`删除工作区文件失败:${res.statusCode}`)
}
}
@@ -468,7 +470,7 @@ export const createWorkspaceFolder = (token, workspacesId, path) => {
"dir_path": path
},
success: (res) => {
if(res.statusCode === 200){
if (res.statusCode === 200) {
const respond = res.data
if (respond.success) {
resolve(respond.message)
@@ -476,7 +478,7 @@ export const createWorkspaceFolder = (token, workspacesId, path) => {
const msg = respond?.error || '创建工作区文件夹出错啦'
reject(msg)
}
}else {
} else {
reject(`创建工作区文件夹失败:${res.statusCode}`)
}
}
@@ -484,7 +486,7 @@ export const createWorkspaceFolder = (token, workspacesId, path) => {
})
}
// 获取工作区文URL
// 获取工作区文件的URL
export const getWorkspaceFileURL = (token, workspacesId, path) => {
return new Promise((resolve, reject) => {
uni.request({
@@ -499,7 +501,7 @@ export const getWorkspaceFileURL = (token, workspacesId, path) => {
"file_path": path
},
success: (res) => {
if(res.statusCode === 200){
if (res.statusCode === 200) {
const respond = res.data
// 兼容两种返回格式:{success: true, message: [...]} 或直接返回数组
if (respond.success) {
@@ -510,10 +512,179 @@ export const getWorkspaceFileURL = (token, workspacesId, path) => {
const msg = respond?.error || '获取工作区文URL出错啦'
reject(msg)
}
}else {
} else {
reject(`获取工作区文URL失败${res.statusCode}`)
}
}
})
})
}
}
// 上传文件到工作区手机弃用仅支持pc本地前缀
// export const workspaceUploadFile = (workspacesId,file,path) => {
// return new Promise((resolve, reject) => {
// uni.request({
// url: `${BASE_URL}/workspace/file/upload`,
// method: "POST",
// header: {
// 'Content-Type': 'application/json'
// },
// data: {
// workspaces_id: workspacesId,
// file: file,
// file_path: path,
// overwrite: true
// },
// success: (res) => {
// if(res.statusCode === 200){
// const respond = res.data
// if (respond.success) {
// resolve(respond)Z
// } else {
// const msg = respond?.error || '上传文件到工作区出错啦'
// reject(msg)
// }
// }else {
// reject(`上传文件到工作区失败:${res.statusCode}`)
// }
// }
// })
// })
// }
// 上传用户头像
export const uploadUserAvatar = (token, userId, username, email, avatarURL) => {
return new Promise((resolve, reject) => {
uni.request({
url: `${BASE_URL}/cloud_api/user/file/upload`,
method: "POST",
header: {
'Content-Type': 'application/json'
},
data: {
"access_token": token,
"file": file,
},
success: (res) => {
if (res.statusCode === 200) {
const respond = res.data
if (respond.success) {
resolve(respond.upload_url)
} else {
const msg = respond?.error || '上传用户头像出错啦'
reject(msg)
}
} else {
reject(`上传用户头像失败:${res.statusCode}`)
}
}
})
})
}
// 修改用户信息
export const updateUserInfo = (token, userId, username, email, avatarURL) => {
return new Promise((resolve, reject) => {
uni.request({
url: `${BASE_URL}/cloud_api/update_user_profile`,
method: "POST",
header: {
'Content-Type': 'application/json'
},
data: {
"access_token": token,
"user_id": userId,
"username": username,
"email:": email,
"avatar": avatarURL
},
success: (res) => {
if (res.statusCode === 200) {
const respond = res.data
if (respond.success) {
resolve(respond.message)
} else {
const msg = respond?.error || '修改用户信息出错啦'
reject(msg)
}
} else {
reject(`修改用户信息失败:${res.statusCode}`)
}
}
})
})
}
// ============================云端文件管理=========================
// 获取云端个人/团队文件列表
export const getCloudFileList = (token, type, path = "/", teamId = "") => {
return new Promise((resolve, reject) => {
uni.request({
url: `${BASE_URL}/cloud_api/file/list`,
method: "POST",
header: {
'Content-Type': 'application/json'
},
data: {
"access_token": token,
"path": path,
"type": type,
"team_id": teamId
},
success: (res) => {
if (res.statusCode === 200) {
const respond = res.data
if (respond.success) {
resolve(respond.data)
} else {
const msg = respond?.error || '获取工作区文件目录出错啦'
reject(msg)
}
} else {
reject(`获取工作区文件目录失败:${res.statusCode}`)
}
},
fail: (err) => {
const msg = err.errMsg || '网络错误'
reject(msg)
}
})
})
}
// 下载云端文件通过文件id获取下载url
export const getCloudFileUrl = (token, fileId) => {
return new Promise((resolve, reject) => {
uni.request({
url: `${BASE_URL}/cloud_api/file/download`,
method: "POST",
header: {
'Content-Type': 'application/json'
},
data: {
"access_token": token,
"file_id": fileId,
},
success: (res) => {
if (res.statusCode === 200) {
const respond = res.data
if (respond.success) {
resolve(respond.data.download_url)
} else {
const msg = respond?.error || '获取云端文件url出错啦'
reject(msg)
}
} else {
reject(`获取云端文件url失败${res.statusCode}`)
}
},
fail: (err) => {
const msg = err.errMsg || '网络错误'
reject(msg)
}
})
})
}
// ============================云端数据库=========================

View File

@@ -189,17 +189,17 @@ export const getGroupMemberList = async (groupId) => {
"size": 100
},
success: (res) => {
if(res.statusCode ===200){
if (res.statusCode === 200) {
const respond = res.data
if(respond.code === 0){
if (respond.code === 0) {
const groupMemberList = respond.data.records
resolve(groupMemberList)
} else {
const msg = res.data.error || '获取群成员出错啦'
reject(msg)
}
}else{
} else {
reject(`请求群成员失败:${res.statusCode}`)
}
},
@@ -211,7 +211,7 @@ export const getGroupMemberList = async (groupId) => {
})
}
// 上传文件
// 聊天上传文件
export const uploadFileToServer = (filePath) => {
return new Promise((resolve, reject) => {
uni.uploadFile({
@@ -232,3 +232,100 @@ export const uploadFileToServer = (filePath) => {
})
})
}
// 添加好友请求
export const sendFriendRequest = async (sendId, friendNickName, friendId) => {
return new Promise((resolve, reject) => {
console.log("进入sendFriendRequest");
uni.request({
url: `${BASE_Friend_URL}/api/friendship/saveShip`,
method: 'POST',
data: {
sendId: sendId,
friendNickName: friendNickName,
recipientId: friendId
},
success: (res) => {
if (res.statusCode === 200) {
const respond = res.data
if (respond?.code === 0 || respond?.msg === '成功') {
resolve("已成功发送好友申请")
} else {
const msg = res.data.msg || '发送好友申请出错啦'
reject(msg)
}
} else {
reject(`发送好友申请失败:${res.statusCode}`)
}
},
fail: (err) => {
const msg = err.errMsg || '网络错误'
reject(msg)
}
})
})
}
// 保存好友关系(即同意好友,双向保存)
export const saveFriend = async (friendList) => {
return new Promise((resolve, reject) => {
uni.request({
url: `${BASE_Friend_URL}/api/chatList/save`,
method: 'POST',
header: {
'Content-Type': 'application/json'
},
data: friendList,
success: (res) => {
if (res.statusCode === 200) {
const respond = res.data
if (respond?.code === 0 || respond?.msg === '成功') {
resolve("保存好友成功")
} else {
const msg = respond?.msg || '保存好友出错啦'
reject(msg)
}
} else {
reject(`保存好友失败:${res.statusCode}`)
}
},
fail: (err) => {
const msg = err.errMsg || '网络错误'
reject(msg)
}
})
})
}
// 获取添加我的好友
export const getFriendRequestList = async (sendId) => {
return new Promise((resolve, reject) => {
uni.request({
url: `${BASE_Friend_URL}/api/friendship/getFriendship`,
method: 'POST',
data: {
"current": 1,
"size": 100,
"sendId": sendId
},
success: (res) => {
if (res.statusCode === 200) {
const respond = res.data
if (respond?.code === 0 || respond?.msg === '成功') {
const records = respond?.data?.records || []
resolve(records)
} else {
const msg = res.data.msg || '获取添加我的好友出错啦'
reject(msg)
}
} else {
reject(`获取添加我的好友失败:${res.statusCode}`)
}
},
fail: (err) => {
const msg = err.errMsg || '网络错误'
reject(msg)
}
})
})
}

View File

@@ -34,6 +34,7 @@ class WebSocketManager {
this.isManualClose = false
// 关闭现有连接
if (this.ws) {
console.log('关闭现有连接');
this.close()
}
try {
@@ -92,7 +93,7 @@ class WebSocketManager {
}
})
this.ws.onError((err) => {
console.error('WebSocket 错误:', err)
console.error('WebSocket 错误:', JSON.stringify(err))
this.handleError(err)
})
this.ws.onClose((event) => {
@@ -299,11 +300,12 @@ class WebSocketManager {
if (this.ws) {
// 移除所有事件监听,避免内存泄漏
// 注意:不能用 null 调用回调,否则会触发 onError(null) 产生假错误日志
// #ifdef APP-PLUS || MP-WEIXIN
if (this.ws.onOpen) this.ws.onOpen(null)
if (this.ws.onMessage) this.ws.onMessage(null)
if (this.ws.onError) this.ws.onError(null)
if (this.ws.onClose) this.ws.onClose(null)
this.ws.onOpen(() => {})
this.ws.onMessage(() => {})
this.ws.onError(() => {})
this.ws.onClose(() => {})
// #endif
try {

View File

@@ -1,4 +1,5 @@
const WS_APP_URL = 'ws://cloud_test.yuxindazhineng.com'
// const WS_APP_URL = 'ws://cloud_test.yuxindazhineng.com'
const WS_APP_URL = 'ws://cloud.yuxindazhineng.com'
// (工具类)连接、发送、接收、重连...
class WebSocketManager {
constructor() {