import { defineStore } from 'pinia' import { ref, computed } from 'vue' export interface User { id: string name: string email: string avatar?: string } export const useUserStore = defineStore('user', () => { const user = ref(null) const isAuthenticated = computed(() => user.value !== null) // 登录 const login = async (account: string, password: string) => { try { // 模拟 API 调用 - 你需要替换为真实的登录 API // const response = await $fetch('/api/auth/login', { // method: 'POST', // body: { account, password } // }) // 模拟延迟 await new Promise(resolve => setTimeout(resolve, 1000)) // 判断账号类型并提取用户名 let username = account if (account.includes('@')) { // 邮箱:使用 @ 前面的部分 username = account.split('@')[0] } else if (/^1[3-9]\d{9}$/.test(account)) { // 手机号:使用后4位 username = 'User_' + account.slice(-4) } // 其他情况:直接使用账号作为用户名 // 模拟成功登录 user.value = { id: '1', name: username, email: account.includes('@') ? account : `${account}@example.com`, avatar: `https://ui-avatars.com/api/?name=${encodeURIComponent(username)}&background=000&color=fff&size=128` } // 保存到 localStorage if (typeof window !== 'undefined') { localStorage.setItem('user', JSON.stringify(user.value)) } return { success: true } } catch (error) { console.error('Login error:', error) return { success: false, error: 'Login failed' } } } // 登出 const logout = () => { user.value = null if (typeof window !== 'undefined') { localStorage.removeItem('user') } } // 注册 const register = async (data: { username: string; email: string; phone?: string; password: string }) => { try { // 模拟 API 调用 - 你需要替换为真实的注册 API // const response = await $fetch('/api/auth/register', { // method: 'POST', // body: data // }) // 模拟延迟 await new Promise(resolve => setTimeout(resolve, 1000)) // 模拟成功注册并自动登录 user.value = { id: Date.now().toString(), name: data.username, email: data.email, avatar: `https://ui-avatars.com/api/?name=${encodeURIComponent(data.username)}&background=000&color=fff&size=128` } // 保存到 localStorage if (typeof window !== 'undefined') { localStorage.setItem('user', JSON.stringify(user.value)) } return { success: true } } catch (error) { console.error('Register error:', error) return { success: false, error: 'Registration failed' } } } // 从 localStorage 恢复用户状态 const restoreUser = () => { if (typeof window !== 'undefined') { const savedUser = localStorage.getItem('user') if (savedUser) { try { user.value = JSON.parse(savedUser) } catch (error) { console.error('Failed to restore user:', error) localStorage.removeItem('user') } } } } return { user, isAuthenticated, login, logout, register, restoreUser, } })