1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import { ref, onMounted } from 'vue'
import request from '@/utils/request'
export interface UserInfo {
sysUser: {
identityId: string
realname: string
username: string
yqm: string
}
// ... 其他字段
}
const userInfo = ref<UserInfo | null>(null)
export const useUserInfo = () => {
const getUserInfo = async () => {
try {
const token = sessionStorage.getItem('token')
if (!token) return null
// 先从 sessionStorage 获取
const cached = sessionStorage.getItem('userInfo')
if (cached) {
userInfo.value = JSON.parse(cached)
return userInfo.value
}
// 如果没有则请求接口
const res: any = await request.get('/business/businessWallet/getInfo')
if (res?.code === 200) {
userInfo.value = res.result
sessionStorage.setItem('userInfo', JSON.stringify(res.result))
return res.result
}
return null
} catch (error) {
console.error('获取用户信息失败:', error)
return null
}
}
// 更新用户信息
const updateUserInfo = (newInfo: Partial<UserInfo>) => {
if (userInfo.value) {
userInfo.value = { ...userInfo.value, ...newInfo }
sessionStorage.setItem('userInfo', JSON.stringify(userInfo.value))
}
}
// 检查实名认证状态
const checkAuthStatus = () => {
if (userInfo.value?.sysUser?.identityId === 'true') {
return true
}
return false
}
// 清除用户信息
const clearUserInfo = () => {
userInfo.value = null
sessionStorage.removeItem('userInfo')
sessionStorage.removeItem('token')
}
return {
userInfo,
getUserInfo,
updateUserInfo,
checkAuthStatus,
clearUserInfo
}
}