tj
2025-05-27 fa74612c99459a8b4e94121d2d3bfcc42915208b
store/user.ts
@@ -1,6 +1,88 @@
// stores/user.ts
import { defineStore } from 'pinia'
import { ref } from 'vue'
import http from '@/plugins/http.js' // 请替换成你实际的 http 封装路径
import storage from '@/plugins/storage' // 同样替换为你的封装路径
import message from '@/plugins/message' // 你使用的消息组件封装
import { WechatLoginData } from '@/types/index'
export const useUserStore = defineStore('user', () => {
})
    const hasLogin = ref(false)
    const isBind = ref(false)
    const userInfo = ref<any>(null)
    async function getCurrentInfo() {
        const currentInfo = await http.request('get', '/api/current/user', {})
        if (currentInfo && currentInfo.code == 0) {
            console.log('当前用户信息', currentInfo)
            userInfo.value = currentInfo.data // 赋值到 store
        } else {
            message.showToast('获取用户信息失败')
        }
    }
    async function loginwx(data: WechatLoginData) {
        const {
            code,
            imgurl = '',
            nickname = '',
            inviter = '',
            phoneNumber = '',
            purePhoneNumber = ''
        } = data
        const resp = await http.request('post', '/api/login/wechat', {
            data: {
                code,
                imgurl,
                nickname,
                inviter,
                phoneNumber,
                purePhoneNumber
            }
        })
        if (resp && resp.code === 0) {
            isBind.value = true
            storage.setItem('token', resp.data.access_token || '')
            hasLogin.value = true
            await getCurrentInfo()
        } else {
            message.showToast('登录失败:' + (resp?.msg || '未知错误'))
            storage.removeItem('openid')
            storage.removeItem('tel')
            storage.removeItem('token')
        }
        return resp
    }
    function initLoginState() {
        const token = storage.getItem('token')
        if (token) {
          hasLogin.value = true
          const savedUserInfo = storage.getItem('userInfo')
          if (savedUserInfo) {
            userInfo.value = savedUserInfo
          } else {
            getCurrentInfo()
          }
        } else {
          hasLogin.value = false
        }
      }
    return {
        hasLogin,
        isBind,
        userInfo,
        loginwx,
        getCurrentInfo,
        initLoginState,
    }
})