import { defineStore } from 'pinia' import { generateUUIDv4 } from '@/utils/uuid' import { apiService } from '@/apiservice/apiService' export const useUserStore = defineStore('user', { state: () => ({ id:'', uuid: '', createdAt: '', username: '', avatarUrl:'', sex: '', // 'male' / 'female' / 'unknown' phone: '' }), actions: { async initUser() { // 尝试读取本地 user_info const info = uni.getStorageSync('user_info') if (info && info.uuid) { // 已存在,直接加载 Object.assign(this, info) } else { const randomUUID = generateUUIDv4() const createdAt = new Date().toISOString() const emptyUser = { id:'', uuid:randomUUID, createdAt:createdAt, username: '', avatarUrl: '', sex: '', phone: '' } try { const res = await apiService.touristAdd(emptyUser) if (res.code === 1000) { console.log('游客添加成功:', res.data?.id) emptyUser.id = res.data?.id } else { console.warn('游客添加失败:', res.message) } } catch (err) { console.error('游客上报错误:', err) } Object.assign(this, emptyUser) console.log(emptyUser) uni.setStorageSync('user_info', emptyUser) } }, saveUserInfo({username,avatarUrl, sex, phone}) { // 更新 store const updated = { username: username ?? this.username, avatarUrl: avatarUrl ?? this.avatarUrl, sex: sex ?? this.sex, phone: phone ?? this.phone } Object.assign(this, updated) // 同步 storage uni.setStorageSync('user_info', { ...this.$state }) } } })