移动端功能基本完成

This commit is contained in:
2026-04-24 20:52:31 +08:00
parent 8dce0346a7
commit fe17c9a361
31 changed files with 8051 additions and 117 deletions
+60
View File
@@ -0,0 +1,60 @@
/**
* 用户信息缓存
*/
import { ref } from 'vue'
import { usersApi } from '../api/users'
// 全局缓存
const usersInfo = ref({})
// 请求中的 promiseMap,防止重复请求
const inflightRequests = {}
/**
* 根据用户ID获取用户信息(带缓存)
* @param {number} userID
* @returns {Promise<{Username, UserEmail} | null>}
*/
export async function fetchUserInfo(userID) {
if (!userID) return null
// 已有缓存
if (usersInfo.value[userID]) {
return usersInfo.value[userID]
}
// 请求中,等待完成
if (inflightRequests[userID]) {
return inflightRequests[userID]
}
// 发起请求
const promise = usersApi.getUserInfoFromUserID(userID).then((res) => {
if (res.errCode === 0 && res.raw?.return?.userinfo) {
const info = res.raw.return.userinfo
usersInfo.value[userID] = info
return info
}
return null
}).finally(() => {
delete inflightRequests[userID]
})
inflightRequests[userID] = promise
return promise
}
/**
* 根据用户ID获取用户名(同步,需先调用 fetchUserInfo
* @param {number} userID
* @returns {string}
*/
export function getUsername(userID) {
if (!userID) return ''
const user = usersInfo.value[userID]
return user?.Username || `用户${userID}`
}
export default {
fetchUserInfo,
getUsername
}