• zhangsan's avatar
    '1' · 5517cfe7
    zhangsan authored
    5517cfe7
useUserInfo.ts 1.7 KB
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
  }
}