Signed-off-by: 吴文峰 <kevin@lmve.net>

This commit is contained in:
2026-06-09 18:59:16 +08:00
parent 33469dc746
commit 51f3f917f9
62 changed files with 12690 additions and 1 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
}